代码之家  ›  专栏  ›  技术社区  ›  mrid

Python通过TCP读取modbus

  •  0
  • mrid  · 技术社区  · 6 年前

    我有一个modbus设备,并将modbus RTU连接到以太网转换器( 而不是modbus RTU到modbus TCP转换器 )。

    我遇到的所有模块都可以读取普通Modbus RTU、Modbus TCP、Modbus ASCII。但我还没有看到任何通过以太网端口读取modbus的模块。

    当我使用 ModScan ,我可以在选择时查看数据 Remote TELNET Server

    有没有一种方法可以使用python读取这些数据??

    1 回复  |  直到 6 年前
        1
  •  3
  •   grapes    6 年前

    这是一种常见的情况,设备是远程串行/tcp转换器。艾条有吨那么。

    您应该了解:

    • “modbus rtu”-这是串行modbus,包含数据+crc16
    • “modbus tcp”-这是TcpHeader[6字节]+数据。
    • 'modbus tcp上的rtu -这是你的案子。

    标准modbus tcp/rtu转换设备不仅改变了物理(以太网/rs485 eg),而且还改变了协议本身,删除了tcp头并添加了crc。

    简单的串行/tcp转换器(如您所拥有的)不会修改协议。

    手动为tcp客户端指定rtu framer后,您可以使用可爱的PyModbus。

    client = ModbusClient('localhost', port=5020, framer=ModbusRtuFramer)
    

    https://pymodbus.readthedocs.io/en/latest/source/example/synchronous_client.html

    推荐文章