Проблемы с чтением из ПЛК с pymodbus
У меня проблемы с чтением регистров из моего ПЛК WAGO 750-881 с использованием pymodbus, python 2.7 и Windows. Я прекрасно умею читать с помощью утилиты Modbus Poll, поэтому я думаю, что проблема в моем коде Python. Используя следующий код, я получаю сообщение об ошибке: runfile('C:/Users/Mike/modbustest2.py', wdir='C:/Users/Mike')
Exception Response(131, 3, IllegalValue)
from pymodbus.client.sync import ModbusTcpClient
c = ModbusTcpClient(host="192.168.1.20")
chk = c.read_holding_registers(257,10, unit = 1)
response = c.execute(chk)
print response
Я понимаю, мой код должен читать print response.registers
но .registers
Кажется, расширение не доступно для меня. print response.registers
выдает эту ошибку: AttributeError: 'ExceptionResponse' object has no attribute 'registers'
Я включил только print response
ошибка, потому что я думал, что это может быть полезным в некотором роде. Кто-нибудь знает в чем может быть проблема?
1 ответ
Вы получаете объект ExceptionResponse обратно с кодом исключения IllegalValue.
Наиболее вероятная причина - вы читаете регистр, который ПЛК не считает существующим.
Конечно, у этого объекта нет атрибута registers, потому что это не ответ ReadHoldingRegisters.