3

我正在使用libmodbus库与带有 Modbus 接口 (SMA) 的太阳能逆变器进行通信。Modbus 规范文档规定应使用某个 Unit ID 来读取设备上的寄存器。该设备为 modbus 提供 TCP 接口。

我找不到更改 libmodbus 库的单元 ID 的代码。是modbus_set_slave()函数吗?还是我在这里缺少其他功能?

4

1 回答 1

3

我相信它是 modbus_set_slave() 函数,尽管术语不同。不过,从概念上讲,Slave ID 或 Unit ID 都是可接受的术语。

如果您有兴趣,这里是它的用法示例: https ://github.com/stephane/libmodbus/blob/master/tests/unit-test-client.c

编辑:开源的好处很容易确认。在https://github.com/stephane/libmodbus/blob/master/src/modbus-tcp.c中观察到,由 modbus_set_slave() 设置的 ctx->slave 设置在请求数据包中。

于 2016-03-01T07:11:51.710 回答