如何使用 python 读取连接到西门子 PAC4200 网关 (TCP) 的 modbus 从站 (RTU)?
How to read modbus slaves (RTU) connected to a Siemens PAC4200 gateway (TCP) with python?
请注意,我需要通过 modbus 网关通过网络远程读取仪表。
Siemens 文档指出可以通过端口 17002(模块 1)访问网关
我在端口 502 上尝试了一个 TCP 客户端到服务器,它可以很好地与 pymodbus 一起工作。
从站地址在 10-24。
有一段示例代码就好了。
如果您已经连接到 PAC4200 的服务器,那么到 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 的连接(参见手册第 6.6 连接 PAC RS485 扩展模块)。
非常感谢!
我从西门子支持团队了解到 PAC4200 不支持多用户。
由于 desigo 服务器已占用连接,我的请求仍未得到答复。
解决方法是启用 desigo 网络服务。这样我现在就可以读取从机的功耗了。
另一种选择是安装可以处理多个会话并将 PAC4200 降级为客户端的第 3 方网关。
请注意,我需要通过 modbus 网关通过网络远程读取仪表。
Siemens 文档指出可以通过端口 17002(模块 1)访问网关
我在端口 502 上尝试了一个 TCP 客户端到服务器,它可以很好地与 pymodbus 一起工作。
从站地址在 10-24。
有一段示例代码就好了。
如果您已经连接到 PAC4200 的服务器,那么到 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 的连接(参见手册第 6.6 连接 PAC RS485 扩展模块)。
非常感谢!
我从西门子支持团队了解到 PAC4200 不支持多用户。 由于 desigo 服务器已占用连接,我的请求仍未得到答复。
解决方法是启用 desigo 网络服务。这样我现在就可以读取从机的功耗了。
另一种选择是安装可以处理多个会话并将 PAC4200 降级为客户端的第 3 方网关。