我正在尝试从GE-PQM II能量计读取数据。电能表通过2线RS-485 MODBUS连接支持实时监控。我在c中使用libmodbus库来读取modbus寄存器。
在GE通信指南(https://www.ccontrols.com/support/dp/GEK-113532.pdf)中,寄存器的地址以十六进制给出。我将十六进制转换为十进制。
我正在尝试从modbus寄存器(02F0,02F1)读取值 - 相应的十进制值为752,753
我的代码:
rc = modbus_read_registers(ctx, 752, 753, clock);
输出:
ERROR Too many registers requested (753 > 125)
Too many data
十六进制转换有什么问题吗?或者其他什么地方?
答案 0 :(得分:0)
如果你使用这个libmodbus,那么在函数调用中
int modbus_read_registers(modbus_t *ctx, int addr, int nb, uint16_t *dest);参数
nb
是读取寄存器的数量,它必须等于2而不是753. - imbearr