请注意,我需要通过modbus网关通过网络远程读取仪表。
西门子文档状态网关可通过端口17002 (模块1)到达。
我在端口502上尝试了一个TCP客户端到服务器,它可以很好地处理pymodbus。
奴隶的地址是10-24。
一段示例代码就很好了。
发布于 2019-10-02 05:23:47
如果您已经连接到much 4200的服务器,那么RS485总线的网关应该是完全相同的。
只需更改端口,Modbus单元ID和目标寄存器,您想要读取。
最低限度应如下所示:
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节)。
发布于 2020-09-10 20:28:26
非常感谢!
我从西门子支持团队那里了解到,PAC4200不是多用户能力的。由于desigo服务器已经占用了连接,所以我的请求仍未得到响应。
解决办法是启用desigo web服务。这样我现在就能读懂奴隶的耗电量了。
另一种选择是安装第三方网关,它可以处理多个会话,并将PAC4200降级为客户端。
https://stackoverflow.com/questions/58191957
复制相似问题