如何解决使用 Pymodbus 依次读取多个从站
2 个从站(设备)正在工作。我使用从属单元 #2 和 #5。 #5 中的 MPR_46S,#2 中的温度计。从地址不是按顺序读取的,所以我需要读取一个我命名为“从跳转”的空从地址
NSlave=[2,5]
Clientnames=["client0","client1","client2","client3",]
def Find_Device(NSlave,Clientnames):
i=0
print("searching devices")
Devices=[]
S_Slave=[]
for i in range(len(NSlave)):
Clientnames[i].connect()
# check MPR_46S
result = Clientnames[i].read_holding_registers(address=0xEC00,count=1,unit=NSlave[i])
if not result.isError():
if result.registers==[41223]:
Devices.append("MPR_46S")
S_Slave.append(NSlave[i])
print("device found,Energy-Meter( MPR_46S) ")
else:
print("unsuccessful,meter")
else:
print('Errory >>>> {}',format(result) )
Clientnames[i].close()
####################################### slave_jump
Clientnames[i].connect()
result = Clientnames[i].read_holding_registers(address=0x0003,unit=200)
Clientnames[i].close()
####################################### slave_jump
result = Clientnames[i].read_holding_registers(address=0x0003,unit=NSlave[i])
Clientnames[i].connect()
print(Clientnames[i].connect())
# check Term
if not result.isError():
if result.registers == [1]:
Devices.append("Term")
S_Slave.append(NSlave[i])
print("device found,term")
else:
print("unsuccessful,term")
else:
print('Errory >>>> {}',format(result))
Clientnames[i].close()
####################################### slave_jump
Clientnames[i].connect()
result = Clientnames[i].read_holding_registers(address=0x0003,unit=201)
Clientnames[i].close()
####################################### slave_jump
i+=1
result.registers=[]
print(Devices)
print(S_Slave)
return (Devices,S_Slave)
我想知道这是什么原因。如果有更好的方法我想用
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。