2016-07-02 3 views
0

Я пытаюсь прочитать данные из измерителя энергии GE-PQM II. Счетчик энергии поддерживает мониторинг в реальном времени через 2-проводное соединение RS-485 MODBUS. Я использую библиотеку libmodbus в c для чтения регистров Modbus.modbus Hex address Conversion

В руководстве по связи GE (https://www.ccontrols.com/support/dp/GEK-113532.pdf) адрес регистра указан в шестнадцатеричном формате. Я преобразовал hex в десятичный.

Я пытаюсь прочитать значения из регистра MODBUS (02F0,02F1) - соответствующие десятичные значения являются 752753

GE-PQM sample

Мой код:

rc = modbus_read_registers(ctx, 752, 753, clock); 

выход:

ERROR Too many registers requested (753 > 125) 
Too many data 

Что-то не так в шестнадцатеричном преобразовании? или где-то еще?

+0

ли вы на самом деле читать [документации для modbus_read_registers] (HTTP : //www.unix.com/man-page/debian/3/modbus_read_registers/)? Когда есть ошибка, первое, что нужно сделать, - это ознакомиться с документацией. Проверьте, каким должен быть третий параметр. – kaylum

+0

Если вы используете этот [libmodbus] (http://libmodbus.org/), то в вызове функции 'int modbus_read_registers (modbus_t * ctx, int addr, ** int nb **, uint16_t * dest);' parameter 'nb '- номер регистра для чтения, и он должен быть равен 2, а не 753. – imbearr

+0

Спасибо за ответ! – Leaner

ответ

0

Если вы используете этот libmodbus, поэтому при вызове функции

int modbus_read_registers(modbus_t *ctx, int addr, int nb, uint16_t *dest);
параметр nb является номер регистра для чтения и он должен быть равен 2, а не 753. - imbearr