【发布时间】:2021-02-20 20:15:52
【问题描述】:
我正在使用Pymodbus 串行转发器example,它适用于一个串行设备。我希望能够在总线上轮询多个设备。
正如here 所讨论的那样(我的测试证实)ModbusServerContext 没有传递单元 ID。
在串行转发器示例中,是否有任何解决方法可以轮询多个设备(例如单元 ID 1 和 2)?
【问题讨论】:
标签: pymodbus
我正在使用Pymodbus 串行转发器example,它适用于一个串行设备。我希望能够在总线上轮询多个设备。
正如here 所讨论的那样(我的测试证实)ModbusServerContext 没有传递单元 ID。
在串行转发器示例中,是否有任何解决方法可以轮询多个设备(例如单元 ID 1 和 2)?
【问题讨论】:
标签: pymodbus
我认为以上应该是:
store = {
1: RemoteSlaveContext(client, unit=1),
2: RemoteSlaveContext(client, unit=2)}
context = ModbusServerContext(slaves=store, single=False)
由于我想转发所有普通地址,我这样做:
store = {unit_number: RemoteSlaveContext(client, unit=unit_number)
for unit_number in range(1, 248)}
context = ModbusServerContext(slaves=store, single=False)
【讨论】:
要回答我的问题,可以使用以下内容:
store = {0x1:RemoteSlaveContext(client),0x2:RemoteSlaveContext(client)}
context = ModbusServerContext(slaves=store, single=False)
通过此设置,单元 ID 会被传递下来。 但到目前为止,还存在一个错误,响应可能来自(1 或 2)个串行单元 ID。
【讨论】: