0

我正在尝试从 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

GE-PQM 样本

我的代码:

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

输出 :

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

十六进制转换有什么问题吗?或者别的地方?

4

1 回答 1

0

如果你使用这个libmodbus,那么在函数调用中

int modbus_read_registers(modbus_t *ctx, int addr, int nb , uint16_t *dest);
参数nb是要读取的寄存器数,它必须等于 2 而不是 753。 – imbearr

于 2016-07-21T09:42:22.373 回答