首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让pymodbus与PLC正确通信?

如何让pymodbus与PLC正确通信?
EN

Stack Overflow用户
提问于 2020-11-24 00:23:16
回答 1查看 161关注 0票数 0

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

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

代码语言:javascript
复制
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之前,我只想了解一下这个程序。

EN

回答 1

Stack Overflow用户

发布于 2020-12-08 05:05:35

您必须使用.registers调用它,如下所示

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

此外,如果你查看the documentation,作者声称代码与Python2.7和Python3.x都兼容,所以你可以移植它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64972249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档