0

我正在尝试使用 pymodbus 从 PLC 读取 modbus 寄存器。我正在按照此处发布的示例进行操作。当我尝试时print.registers,出现以下错误:object has no attribute 'registers' 该示例未显示正在导入的模块,但似乎是已接受的答案。我认为错误可能是我导入了错误的模块或者我缺少一个模块。我只是想读一个寄存器。

这是我的代码:

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.registers
4

1 回答 1

2

通过阅读pymodbus 代码,该read_holding_registers对象的execute方法似乎将返回响应对象包含错误的对象ExceptionResponse我猜你收到的是后者。你需要尝试这样的事情:

from pymodbus.register_read_message import ReadHoldingRegistersResponse
#...
response = c.execute(chk)
if isinstance(response, ReadHoldingRegistersResponse):
  print response.registers
else:
  pass # handle error condition here
于 2016-09-09T14:54:48.813 回答