在我问之前,我只想提一下,我花了几天的时间研究这个问题,似乎找不到解决这个基本问题的方法。我已经阅读了文档,并在这里花了一些时间。否则我就不会问了。
我继承了一个庞大的单片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之前,我只想了解一下这个程序。
发布于 2020-12-08 05:05:35
您必须使用.registers调用它,如下所示
rr = client.read_holding_registers(10904, 2).registers
此外,如果你查看the documentation,作者声称代码与Python2.7和Python3.x都兼容,所以你可以移植它。
https://stackoverflow.com/questions/64972249
复制相似问题