使用 pymodbus 从 PLC 读取时遇到问题

Trouble reading from PLC with pymodbus

我在使用 pymodbus、python 2.7 和 Windows 从我的 WAGO 750-881 PLC 读取寄存器时遇到了一些问题。我可以使用 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 错误,因为我认为它可能在某些方面有帮助。有谁知道可能是什么问题?

您将返回一个 ExceptionResponse 对象,异常代码为 'IllegalValue'。

最可能的原因是您正在读取 PLC 认为不存在的寄存器。

当然这个对象没有寄存器属性,因为它不是 ReadHoldingRegisters 响应。