我有一个工作的modbus服务器和客户端使用我在ocmputer上运行的python脚本,它通过使用socket.connect与客户端的ip和端口进行连接,并允许交换modbus请求。
我不知道如何将它应用于多个ip。我希望我的程序要做的是连接到10个不同的modbus客户端并查询它们以获取信息。
是否可以调用多个socket.connect来打开多个流?如果是这样,当每个客户端需要一个唯一的从属ID时,它的功能是否类似于串行连接?
编辑:
#sets all the standard values
PLC1_IP = '10.0.238.34'
PLC1_Port = 504
PLC2_IP = '10.0.188.34'
PLC2_Port = 505
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except (socket.error, msg):
print("Unable to create socket. " + msg[1])
sys.exit()
#connects to the plc using the port and ip
s.connect((PLC1_IP, PLC2_Port))
PDU = struct.pack(">BHH", Function_Write, coil_number, Coil_On)
MBPA = struct.pack('>HHHB', 100, PLC1_Protocall, PLC1_Length, PLC1_Unit)
s.send(MBPA+PDU)
s.recv(1024)
#insert main code here
#s.close
这是我正在使用的代码,用于打开单个连接并发送我的modbus数据包。如果我想打开与第二个PLC的连接,我该怎么做?
答案 0 :(得分:0)
def make_socket(ip):
s= socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.connecnt((ip,port))
return s
my_clients = [make_socket(ip) for ip in ip_addresses]
for client in my_clients:
client.send("Hello")
print client.recv(100) # or whatever
也许就是这样......很难看到你的任何代码......