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

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

使用ModScan进行测试时,选择Remote TELNET Server可以看到数据。

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

最佳答案

这是常见的情况,设备是远程串行/ 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

10-06 16:02