pymodbus: создание запроса и получение ответа
Может кто-нибудь объяснить, как создать запрос и получить ответ правильно, используя pymodbus через Modbus TCP/IP?
У меня есть ПЛК, который я хочу использовать в качестве подчиненного, а ПК - в качестве главного.
Я пытаюсь сделать это таким образом:
from pymodbus.client.sync import ModbusTcpClient
host = '192.168.56.9'
port = 502
client = ModbusTcpClient(host, port)
client.connect()
#Register address 0x102A (4138dec) with a word count of 1
#Value - MODBUS/TCP Connections
#Access - Read
#Description - Number of TCP connections
request = client.read_holding_registers(4138, 1)
response = client.execute(request)
print response
>>> ReadRegisterResponse (1)
2 ответа
Установить unit
аргумент и использовать print(request.registers)
вместо print(request)
,
Вот пример:
request = client.read_holding_registers(4138, 1, unit=1) # Notice: Set the unit argument.
if not request.isError():
'''isError() method implemented in pymodbus 1.4.0 and above'''
result = request.registers # Your problem is here.
print(result)
else:
# Handle Error.
print('Unable to read or there is the connection problem.')
Вы могли бы выполнить dir(response)
чтобы проверить, из чего состоит ответ, но если хозяин pymodbus TCP аналогичен реализации последовательного мастера RTU, тогда данные доступны в поле Registers, поэтому попробуйте напечатать response.Registers вместо response. response.Registers
должен быть одноэлементным массивом, содержащим значение регистра, запрошенного вами для чтения.