Modbus Шестнадцатеричный адрес Преобразование

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

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

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

Пример GE-PQM

Мой код:

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

выход :

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

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


person Leaner    schedule 02.07.2016    source источник
comment
Вы действительно читали документацию по modbus_read_registers? При возникновении ошибки в первую очередь следует обратиться к документации. Проверьте, каким должен быть третий параметр.   -  person kaylum    schedule 02.07.2016
comment
Если вы используете этот libmodbus, то в вызове функции int modbus_read_registers(modbus_t *ctx, int addr, **int nb**, uint16_t *dest); параметр nb - это номер регистра для чтения, и он должен быть равен 2 а не 753.   -  person imbearr    schedule 02.07.2016
comment
Спасибо за ответ !!   -  person Leaner    schedule 02.07.2016
comment
Я виноват, что пропустил.   -  person Leaner    schedule 02.07.2016
comment
Нет необходимости преобразовывать в десятичное, просто используйте 0x2F0 для адреса.   -  person Mark Tolonen    schedule 02.07.2016