15000PLCsocket通讯
1 使用PLCSIM ADVANCE 软件搭建西门子PLC仿真环境
2、建立TCP连接程序段,开放式用户通讯可以作为客户端,也可以作为服务器,本例中使用的是服务器。
通讯参数配置,IP地址与端口是TCP通讯的关键参数。
import socket
from threading import Thread as td
import time
import struct
server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
server.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,True)
server.bind(('192.168.0.199',2002))
server.listen(128)
client,addr = server.accept()
print('欢迎PLC@%s on %d访问服务器'%(addr[0],addr[1]))
def recv_msg(client):
while True:
msg = client.recv(1024)
msg = struct.unpack('bbbbbbbbbb',msg)
print(msg)
def send_msg(client):
msg = [0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x11]
a = list(map(lambda i: struct.pack('b',i),msg))
b = b''.join(i for i in a)
while True:
time.sleep(1)
client.send(b)
def main():
t1 = td(target=recv_msg,args=(client,))
t2 = td(target=send_msg,args=(client,))
t1.start()
t2.start()
t1.join()
t2.join()
if __name__ == "__main__":
main()