Python 通过 TCP 读取 modbus
Python read modbus over TCP
我有一个 modbus 设备并连接了一个 modbus RTU 到以太网转换器(而不是 modbus RTU 到 modbus TCP 转换器)。
我遇到的所有模块都可以读取正常的Modbus RTU、Modbus TCP、Modbus ASCII。但是我还没有看到任何通过以太网端口读取modbus的模块。
当我使用ModScan
测试时,我在select Remote TELNET Server
.
时可以看到数据
有没有一种方法可以使用 python 读取这些数据??
这是常见情况,设备是远程 serial/tcp 转换器。 MOXA 有很多。
你应该明白:
- 'modbus rtu' - 这是串行 modbus,包含数据+crc16
- 'modbus tcp' - 这是 TcpHeader[6 字节] + 数据。
- 'modbus rtu over tcp' - 这是您的情况。
标准 modbus tcp/rtu 转换设备不仅改变物理(ethernet/rs485 例如),而且改变协议本身,删除 tcp header 并添加 crc。
简单 serial/tcp 转换器(如您所用)不修改协议。
您可以在手动为tcp-client指定rtu-framer后使用您可爱的PyModbus。
client = ModbusClient('localhost', port=5020, framer=ModbusRtuFramer)
https://pymodbus.readthedocs.io/en/latest/source/example/synchronous_client.html
我有一个 modbus 设备并连接了一个 modbus RTU 到以太网转换器(而不是 modbus RTU 到 modbus TCP 转换器)。
我遇到的所有模块都可以读取正常的Modbus RTU、Modbus TCP、Modbus ASCII。但是我还没有看到任何通过以太网端口读取modbus的模块。
当我使用ModScan
测试时,我在select Remote TELNET Server
.
有没有一种方法可以使用 python 读取这些数据??
这是常见情况,设备是远程 serial/tcp 转换器。 MOXA 有很多。
你应该明白:
- 'modbus rtu' - 这是串行 modbus,包含数据+crc16
- 'modbus tcp' - 这是 TcpHeader[6 字节] + 数据。
- 'modbus rtu over tcp' - 这是您的情况。
标准 modbus tcp/rtu 转换设备不仅改变物理(ethernet/rs485 例如),而且改变协议本身,删除 tcp header 并添加 crc。
简单 serial/tcp 转换器(如您所用)不修改协议。
您可以在手动为tcp-client指定rtu-framer后使用您可爱的PyModbus。
client = ModbusClient('localhost', port=5020, framer=ModbusRtuFramer)
https://pymodbus.readthedocs.io/en/latest/source/example/synchronous_client.html