【发布时间】:2015-04-20 05:50:47
【问题描述】:
我有一个使用我在计算机上运行的 python 脚本的工作 modbus 服务器和客户端,它通过使用 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 的连接,我该怎么做?
【问题讨论】:
-
如果你调用socket connect ...你是客户端...他们是服务器...如果你调用socket接受你是服务器并且他们是客户端... .所以我很好奇其他ip的服务器或客户端?
-
抱歉,打错了,其他ip是服务器。我使用 python 运行的是客户端。