Python для чтения Modbus через TCP
У меня есть устройство Modbus и я подключил RTU Modbus к преобразователю Ethernet (а не преобразователь RTU Modbus к TCP-преобразователю Modbus).
Все модули, с которыми я сталкивался, могут читать обычные Modbus RTU, Modbus TCP, Modbus ASCII. Но я не видел ни одного модуля для чтения Modbus через Ethernet-порт.
Когда я тестировал с помощью ModScan
Я могу видеть данные при выборе Remote TELNET Server
,
Есть ли способ, которым я могу прочитать эти данные с помощью Python?
1 ответ
Это общий случай, устройства являются удаленными последовательными / TCP-конвертерами. МОКСА имеет тонны тогда.
Вы должны понимать, что:
- 'Modbus RTU' - это последовательный Modbus, содержит данные + CRC16
- 'modbus tcp' - это TcpHeader[6 байт] + данные.
- ' modbus rtu over tcp' - это ВАШ случай.
Стандартные устройства преобразования Modbus TCP / RTU изменяют не только физику (например, Ethernet / RS485), но и сам протокол, удаляя заголовок TCP и добавляя CRC.
Простые последовательные / TCP-конвертеры (как у вас) не изменяют протокол.
Вы можете использовать ваш прекрасный PyModbus после того, как вы вручную зададите rtu-framer для tcp-client.
client = ModbusClient('localhost', port=5020, framer=ModbusRtuFramer)
https://pymodbus.readthedocs.io/en/latest/source/example/synchronous_client.html