【发布时间】:2020-11-13 08:05:56
【问题描述】:
我需要用python逐位读取西门子1200的保持寄存器,在网上搜索我发现PyModbus是一个很好的库,但是用它我只能读取这样一个整数而不是逐位的保持寄存器.
这是代码:
from pymodbus.client.sync import ModbusTcpClient
client = ModbusTcpClient('x.y.z.w', port=xxx)
result = client.write_registers(1, [1, 2, 4, 8, 16, 32, 64, 128, 256, 512]) # write some register
results = client.read_holding_registers(0, 50) # read the first fifty register like int
print("0-50", results.registers)
results = client.read_holding_registers(50, 50) # read the last fifty register like int
print("50-100:", results.registers)
client.close()
有人有什么提示吗?
【问题讨论】:
-
Modbus 保持寄存器是一个 16 位整数,协议没有单独读取位的规定。收到整数后,您当然可以对整数位做任何您想做的事情。
标签: python modbus-tcp pymodbus