使用pymodbus读取PLC时出现意外的数字

时间:2016-09-09 18:52:14

标签: python python-2.7 modbus modbus-tcp

enter image description here我正在使用pymodbus读取Wago 750-881 PLC上的寄存器。我也在Modbus Poll实用程序上读取相同的寄存器,以及HMI。 Modbus轮询和HMI正在正确读取,但pymodbus程序不正确。

以下是代码:

from pymodbus.client.sync import ModbusTcpClient

c = ModbusTcpClient(host="192.168.1.20")
chk = c.read_holding_registers(257, 1, unit = 1)
response = c.execute(chk)        
print response.getRegister(0)

以下是运行代码的响应:

>>> runfile('C:/Users/Mike/modbustest2.py', wdir='C:/Users/Mike')
18283

正确的输出应该是2043.它还在其他寄存器上读取相同的数字“18283”。我知道问题必须与代码有关,因为我可以从其他程序/设备读取寄存器。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

您可能正在阅读错误的注册表,或错误的单元ID,或两者的某种组合。

如果您使用Wireshark捕获第三方软件和您自己的软件正在做什么,您应该能够很快发现差异。