首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何读取与python连接到西门子PAC4200网关(TCP)的modbus从站(RTU)?

如何读取与python连接到西门子PAC4200网关(TCP)的modbus从站(RTU)?
EN

Stack Overflow用户
提问于 2019-10-01 20:38:14
回答 2查看 676关注 0票数 1

请注意,我需要通过modbus网关通过网络远程读取仪表。

西门子文档状态网关可通过端口17002 (模块1)到达。

我在端口502上尝试了一个TCP客户端到服务器,它可以很好地处理pymodbus。

奴隶的地址是10-24。

一段示例代码就很好了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-10-02 05:23:47

如果您已经连接到much 4200的服务器,那么RS485总线的网关应该是完全相同的。

只需更改端口,Modbus单元ID和目标寄存器,您想要读取。

最低限度应如下所示:

代码语言:javascript
复制
from pymodbus.client.sync import ModbusTcpClient

host = 'device_IP'     # The same you used already for port 502
port = 17002           # for MOD1 slot, use 17003 for MOD2

client = ModbusTcpClient(host, port)
client.connect()

start_reg=0x1          # write starting target register here
number_of_regs=10      # write number of registers to read here
slave_unit=10          # write slave ID of target device here

rr = client.read_holding_registers(start_reg,number_of_regs,unit=slave_unit)

print rr.registers     # print registers, change to print(rr.registers) for Python 3.x

我无法推断您连接到RS485总线的设备是什么。如果上面的示例代码不起作用,您应该反复检查设备的Modbus映射和与PAC的连接(参见手册中连接PAC RS485扩展模块的第6.6节)。

票数 2
EN

Stack Overflow用户

发布于 2020-09-10 20:28:26

非常感谢!

我从西门子支持团队那里了解到,PAC4200不是多用户能力的。由于desigo服务器已经占用了连接,所以我的请求仍未得到响应。

解决办法是启用desigo web服务。这样我现在就能读懂奴隶的耗电量了。

另一种选择是安装第三方网关,它可以处理多个会话,并将PAC4200降级为客户端。

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

https://stackoverflow.com/questions/58191957

复制
相关文章

相似问题

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