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

Другие вопросы по тегам