【问题标题】:Unexpected number when reading PLC using pymodbus使用 pymodbus 读取 PLC 时出现意外数字
【发布时间】:2017-01-17 23:40:58
【问题描述】:

我正在使用 pymodbus 读取 Wago 750-881 PLC 上的寄存器。我还在 Modbus Poll 实用程序以及 HMI 上读取相同的寄存器。 Modbus Poll 和 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”。我知道问题必须与代码相关,因为我可以从其他程序/设备读取寄存器。任何帮助表示赞赏。

【问题讨论】:

    标签: python python-2.7 modbus modbus-tcp


    【解决方案1】:

    您可能读取了错误的寄存器,或者读取了错误的单位 ID,或者两者兼而有之。

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

    【讨论】:

    • 我添加了一张 Modbus Poll 的图片。
    • 您是否尝试过从此地址读取 +/- 1,以及尝试读取 40257 而不是 257?我不熟悉您正在使用的 Modbus Poll 实用程序,因此我无法确定它实际在做什么与您的 Python 代码在做什么。 Wireshark 将是理想的选择。
    • @mikec。你有想过这个吗?
    • 我刚刚放弃了这个模块。我使用 modbus_tk 并在 15 分钟内让它工作。
    猜你喜欢
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    相关资源
    最近更新 更多