1

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

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

当我使用 测试ModScan时,我选择时可以看到数据Remote TELNET Server

有没有办法可以使用 python 读取这些数据?

4

1 回答 1

3

这是一种常见的情况,设备是远程串行/tcp 转换器。MOXA 有很多。

你应该明白:

  • 'modbus rtu' - 这是串行 modbus,包含 data+crc16
  • 'modbus tcp' - 这是 TcpHeader[6 字节] + 数据。
  • 'modbus rtu over tcp ' - 这是你的情况。

标准 modbus tcp/rtu 转换设备不仅会改变物理特性(例如以太网/rs485),还会改变协议本身,移除 tcp 标头并添加 crc。

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

在为 tcp-client 手动指定 rtu-framer 后,您可以使用可爱的 PyModbus。

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

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

于 2018-11-22T13:07:54.173 回答