【问题标题】:Pymodbus serial forwarder with multiple slaves具有多个从站的 Pymodbus 串行转发器
【发布时间】:2021-02-20 20:15:52
【问题描述】:

我正在使用Pymodbus 串行转发器example,它适用于一个串行设备。我希望能够在总线上轮询多个设备。 正如here 所讨论的那样(我的测试证实)ModbusServerContext 没有传递单元 ID。 在串行转发​​器示例中,是否有任何解决方法可以轮询多个设备(例如单元 ID 1 和 2)?

【问题讨论】:

    标签: pymodbus


    【解决方案1】:

    我认为以上应该是:

    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)
    

    【讨论】:

    • 您的答案可以通过添加有关代码的作用以及它如何帮助 OP 的更多信息来改进。
    • 事实上这也被讨论过here,但你的解决方案似乎好多了
    【解决方案2】:

    要回答我的问题,可以使用以下内容:

    store = {0x1:RemoteSlaveContext(client),0x2:RemoteSlaveContext(client)}
    context = ModbusServerContext(slaves=store, single=False)
    

    通过此设置,单元 ID 会被传递下来。 但到目前为止,还存在一个错误,响应可能来自(1 或 2)个串行单元 ID。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-07
      • 2020-09-08
      • 2021-03-24
      • 1970-01-01
      • 1970-01-01
      • 2020-12-31
      相关资源
      最近更新 更多