工控机主程序通过modbus连接触摸屏;通过TCP/IP协议连接咖啡机和协作机器人;
首先打开机器人服务器程序,复位,运行至等待step;
然后打开机器人主程序,复位,运行至等待step;
最后打开工控机的主程序运行即可。
中间出现故障,按提示解决。
![](https://i-blog.csdnimg.cn/blog_migrate/f7d589d61bf4ea8812ec278779a86d8c.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/00c9f135bc1543d4df086bf27fed0ed5.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/7a0209b2c2cbe3bc49d2647d79eaddda.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/f6d235188175876cb4b2c224a5fdc033.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/28c24a9d5988dc1c87359c400b212a99.jpeg)
#工控机运行的主程序
import socket
import time
import modbus_tk
import modbus_tk.defines as cst
from modbus_tk import modbus_tcp
re_state=('{"cmd":"state","action":"get"}').encode()
latte=('{"cmd":"products","recipe_adjust":"false","make_product_session_id":1001,"product_id":[810],"count":[1],"product_recipe":[]}').encode()
mocha=('{"cmd":"products","recipe_adjust":"false","make_product_session_id":1001,"product_id":[806],"count":[1],"product_recipe":[]}').encode()
cappuccino=('{"cmd":"products","recipe_adjust":"false","make_product_session_id":1001,"product_id":[811],"count":[1],"product_recipe":[]}').encode()
chocolateMilk=('{"cmd":"products","recipe_adjust":"false","make_product_session_id":1001,"product_id":[980],"count":[1],"product_recipe":[]}').encode()
makeLatteArt=('{"cmd":"evebot","evebot_id":"202566","evebot_state":"start"}').encode()
logger = modbus_tk.utils.create_logger(name="console", record_format="%(message)s")
server = modbus_tcp.TcpServer()
logger.info("running...")
server.start()
slave_1 = server.add_slave(1)
slave_1.add_block('0', cst.HOLDING_REGISTERS, 0, 10)
slave = server.get_slave(1)
cafem = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
robot = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
while robot.connect(('192.168.100.125', 3240)):
time.sleep(1)
print('robot is connecting ...')
print("robot is connected")
while cafem.connect(('192.168.100.33',9999)):
time.sleep(1)
print("cafem is connecting ...")
print("cafem is connected")
while True:
slave.set_values('0',1,(0,0,0,0))
while True:
values=slave.get_values('0',1,4)
time.sleep(1)
print("cafem is waitting ...")
if values[0]+values[1]+values[2]+values[3]>0:
break
robot.send(('fangbei').encode())
print('robot_fangbeiwei:',robot.recv(1024))
cafem.send(re_state)
print('cafem',cafem.recv(1024))
if values[0]==1:
cafem.send(latte)
elif values[1]==1:
cafem.send(mocha)
elif values[2]==1:
cafem.send(cappuccino)
elif values[3]==1:
cafem.send(chocolateMilk)
else:
print("command is empty")
break
print("wait cafem ....")
print('cafem',cafem.recv(1024))
robot.send(('done_cafe').encode())
print('robot_lahuawei:',robot.recv(1024))
cafem.send(makeLatteArt)
print("wait lahua ....")
print('cafem',cafem.recv(1024))
robot.send(('done_lahua').encode())
robot.close()
cafem.close()
server.stop()
#协作机器人运动运行主程序
step = 0
.LDef #p2 = Joint(4.285,7.539,-6.622,-177.925,2.291,42.798)
.LDef #p1 = Joint(4.287,7.539,-6.622,-177.925,2.291,42.798)
WHILE TRUE DO
Wait step == 1
MoveJ #p1
MoveJ #p2
step = 2
Wait step == 3
MoveJ #p1
MoveJ #p2
step = 4
Wait step == 5
MoveJ #p1
MoveJ #p2
END
#协作机器人与工控机通讯TCP/IP服务器程序
step = 0
taike = 0
server = 0
count = 0
vis_ret = 0
TCPSStop server
TCPSStart server,3240
TCPSAccept server,taike
$msgread = ""
WHILE TRUE DO
10 TCPSRead taike,$msgread,vis_ret
IF vis_ret == 0 THEN
TPWrite 2,$msgread,0
WaitTime 1
GOTO 100
END
IF $msgread == "fangbei" THEN
step = 1
ELSE
WaitTime 1
GOTO 10
END
Wait step == 2
TCPSWrite taike,"ok_fb",vis_ret
20 TCPSRead taike,$msgread,vis_ret
IF $msgread == "done_cafe" THEN
step = 3
ELSE
WaitTime 1
GOTO 20
END
Wait step == 4
TCPSWrite taike,"ok_lh",vis_ret
30 TCPSRead taike,$msgread,vis_ret
IF $msgread == "done_lahua" THEN
step = 5
ELSE
WaitTime 1
GOTO 30
END
END
100 TCPSStop server