0

在我问之前,我只想提一下,我已经花了几天时间研究这个,似乎无法找到解决这个基本问题的方法。我已经阅读了文档并花时间在这里。否则我不会问。

我继承了一个庞大的单体 python 程序,它成功地使用 pymodbus + 读取保持寄存器read_holding_registers。我以前花时间编辑 python,但从未真正学会它。为了尝试在 python 方面理解这一点,我尝试从头开始编写自己的基本程序。我从大开始,最终将代码分解为尽可能简单。

from pymodbus.client.sync import ModbusTcpClient as ModbusClient

client = ModbusClient('192.168.1.98', port=502)
client.connect()

rr = client.read_holding_registers(10904, 2)

print rr

client.close()

我知道这是我想要的寄存器。它是霍纳 PLC 上的一个保持寄存器。它在 python 程序和 Horner CSCAPE 中都有详细记录。但是每当我运行程序时,它只会打印我在元组的第二项中输入的任何值。所以在这里,它只会打印2. 如果我提供它的一个元组(10905, 1)只是打印1. 寄存器位的真实值应该是0

我会发布庞大的程序,但不幸的是它是私人的。这是python2.7。我知道这很糟糕,但我只想在担心将其移植到 3.9 之前了解该程序。

4

1 回答 1

0

你必须这样称呼.registers

rr = client.read_holding_registers(10904, 2).registers

此外,如果您查看文档,作者声称该代码与 Python 2.7 和 Python 3.x 兼容,因此您可以对其进行移植。

于 2020-12-07T21:05:34.610 回答