Как читать / записывать реестр устройства, подключенного к шлюзу с pymodbus через TCP - PullRequest
0 голосов
/ 05 февраля 2019

Я должен прочитать и написать датчик, используя pymodbus.Я не подключен напрямую к датчику, но подключен через TCP к шлюзу, а шлюз подключен к датчику через последовательный порт.
Я установил соединение со шлюзом следующим образом:

client = ModbusClient("192.168.127.254", 502)
connection = client.connect()

Соединение со шлюзом работает, потому что розетка открыта.Но я не могу читать с датчика следующим образом:

if connection:
    request = client.read_holding_registers(0x00, 8, unit=1)
    data = validator(request)
    print(data)

    request = client.read_holding_registers(0x00, 8, unit=1)  
    data = validator(request)
    print(data)

    client.close()

Как я могу подключиться к указанному датчику, подключенному к шлюзу (id: 230, скорость передачи данных: 9600, четность: нет, интерфейс:Провод RS-4852)?

PS: шлюз представляет собой Moxa MGate MB3170

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Во-первых, вам необходимо убедиться в связи между шлюзом и устройством Modbus.

После этого вы можете получить данные и проверить регистры данных с помощью приложения modbus poll .

Всякий раз, когда ваше соединение установлено, пора кодировать ...

0 голосов
/ 06 февраля 2019

Сначала вы должны знать о своих таблицах ведомых регистров Modbus (ваш датчик) и знать о его функциональных кодах, если считанный код функции 0x3, вы должны использовать Read Holding Registers, а если код функции 0x4, вы должны использовать Read Input Registers functions

после этого вы должны найти требуемый адрес регистра, например, адрес регистра temp: 0x05, число байтов равно 2, идентификатор вашего датчика равен 230, а код функции требования равен 0x3

read_holding_registers(0x05 , 2, unit=230)  
...