Как читать ведомые Modbus (RTU), подключенные к шлюзу Siemens PAC4200 (TCP) с питоном? - PullRequest
0 голосов
/ 01 октября 2019

Обратите внимание, что мне нужно считывать счетчики, удаленные через сеть через шлюз Modbus.

Документация Siemens указывает, что к шлюзу можно подключиться через порт 17002 (модуль 1)

Я попробовал TCP-клиент к серверу на порту 502, который отлично работает с pymodbus.

Адреса ведомых находятся на 10-24.

кусок кода кода будет здорово.

1 Ответ

0 голосов
/ 02 октября 2019

Если вы уже подключены к серверу PAC4200, шлюзы к шине RS485 должны быть практически одинаковыми.

Просто измените порт, идентификатор модуля Modbus и укажите регистры, которые вы хотите прочитать.

Минимум должен выглядеть следующим образом:

from pymodbus.client.sync import ModbusTcpClient

host = 'device_IP'     # The same you used already for port 502
port = 17002           # for MOD1 slot, use 17003 for MOD2

client = ModbusTcpClient(host, port)
client.connect()

start_reg=0x1          # write starting target register here
number_of_regs=10      # write number of registers to read here
slave_unit=10          # write slave ID of target device here

rr = client.read_holding_registers(start_reg,number_of_regs,unit=slave_unit)

print rr.registers     # print registers, change to print(rr.registers) for Python 3.x

Я не могу определить, какие устройства вы подключаете к шине RS485. Если приведенный выше пример кода не работает, вам следует дважды проверить карту Modbus устройства и подключения к PAC (см. Раздел 6.6 Подключение модуля расширения PAC RS485 в руководстве).

...