范绍平
(四川信息职业技术学院,四川广元 628017)
码垛机器人[1]可以代替人工可以进行重复性的物料搬运工作,在自动生产线上具有广阔的应用与发展前景。码垛工艺是指通过对垛的外形尺寸、垛数、层数基本参数设置,对垛的摆放位置进行简单确认后就能实现所有垛的整齐摆放。码垛工艺中,托盘用于放置码垛的物品(区域),码垛工艺指令数量能支持托盘个数;排样数可实现多种不同的排放方式,通常1层1种排样;参考点是指第一个垛的摆放位置,以后每个垛的坐标以其为基准进行偏移。笔者以卡诺普机器人CRP-S80码垛工作单元为例进行工艺分析与程序设计。
图1 工业机器人双线码垛现场布局图
图1 为工业机器人双线码垛现场布局图。
排布为双线(A线、B线)双垛(A托盘、B托盘),每个托盘码10层,每层码3包。A托盘(工艺1),排样1为奇数层,排样2为偶数层。B托盘(工艺2),排样1为奇数层,排样2为偶数层。按上述排布,在码每个工艺的垛1时,第4轴(机器人)都基本不转动;在码每个工艺的垛2、垛3时,第4轴转正90°或负90°,这样会在码垛时保证较高的运动效率(其他轴最在运动也在90°左右,这样将能让每个轴都达到其最大速度)。
X00:手抓夹紧检测信号;
X01:A托盘检测信号;
X02:B托盘检测信号;
X03:A线档板信号检测(表示A线有料可以抓了);
X04:B线档板信号检测(表示B线有料可以抓了);
X05:A线线体号检测(表示A线有料来了可以准备抓了);
X06:B线线体号检测(表示B线有料来了可以准备抓了);
X07:防护1(A托盘)检测,无效时表示有物体或人员干涉,不能对该托盘码垛;
X08:防护2(B托盘)检测,无效时表示有物体或人员干涉,不能对该托盘码垛;
X09:线体开关控制信号,当该信号有效时线体才能转动。
Y00:抓手控制,有效夹紧,无效松开。受面板M160控制;
Y01:抓手辊A转动控制。系统内部PLC控制,X03信号有效时停止该信号,同时受X05控制;
Y02:A线线体转动控制,当X03、X05都有效时停止该信号(来料太多);
Y03:抓手辊B转动控制。系统内部PLC控制,X04信号有效时停止该信号,同时受X05控制;
Y04:B线线体转动控制,当X04、X06都有效时停止该信号(来料太多);
Y13:A线装满指示;
Y14:B线装满指示;
Y15:码垛指示灯控制,该信号有效表示正在码垛。
M350:A线满标示ON表示满;
M351:B线满标示ON表示满;
M352:A线托盘移动标示ON表示移开;
M353:B线托盘移动标示ON表示移开;
M354:A线清托盘;
M355:B线清托盘;
M356:B线有料但是没托盘标志。
控制抓手梯形图如图2,托盘移走梯形图如图3。
图2 控制抓手梯形图程序
图2 中,M160用来控制抓手,当总停(X009)开启时,A档信号(X03)没来时,A抓手辊控制(Y01)有效,反之来料后停止转动;总停(X009)开启时,A档信号(X03)、A线体检测信号(X05)没来时,A线体转动控制(Y02)有效,反之两种感应都有效,则停线体;总停(X009)开启时,B档信号(X05)没来时,B抓手辊控制(Y03)有效,反之来料后停止转动;当总停(X09)开启时,B档信号(X04)、B线体检测信号(X06)没来时,B线体转动控制(Y04)有效,反之两种感应都有效,则停线体。
图3 托盘移走梯形图
图3 中,X01无效(托盘移走)5 s后将A线托盘移动标志M352置位,M354由程序复位托盘移动标志;X02无效(托盘移走)5 s后将B线托盘移动标志M353置位,M355由程序复位托盘移动标志。
(1)A线点位如下:
GP0:A线取件点;
GP1:A线准备取件点;
GP2:过渡点备份(先记录,之后进入工艺在工艺里过渡点)。
(2)B线变量如下:
GP10:B线取件点;
GP11:B线准备取件点;
GP12:过渡点备份(先记录,之后进入工艺在工艺里过渡点)。
(3)A线、B线GP点分布。图4为A线、B线GP点分布图侧视图,图4A线、B线为GP点位置俯视图。
图4 A、B线GP点分布图侧视图
取件点即能抓袋的位置,准备取件在在取点的正上方(只有Z方向有偏移),为了确保速度的连贯性,取件点与准备取件点在Z方向距离要大于300 mm。过渡点应该在准备取件点上面,X、Y方向的坐标可适当向托盘做些量偏移,方便过渡。过渡点是每层提高一个袋的厚度,所以在取点时要注意确保在码到最高层时不要超过机器人运行高度。准备放件点在放件点的正上方,准备放件点是每层提高一个袋的厚度,所以在取点时要注意确保在码到最高层时不要超过机器人运行高度。
图5 GP点位置俯视图
通过上面分析得知B线要比A线快很多,所以B线优先。主程序如下:
IFM356==OFF 7 上次B线有料但是没托盘
IF X04==ON 0 B左线有料
IF X#(2)==ON 1 判断是否有托盘
IFM#(353)==ON 2 B托盘被移开过5秒
SETGI#(92)1 把码垛数置为1
MOVJVJ=65%GP#11 PL=9 运动到准备取
件点
DOUTM#(355)=ON 清除托盘移动标志
Time 200
DOUTM#(355)=OFF 清除托盘移动标志
CALL right调用B托盘工艺文件
Else 2 B托盘没被被移开过
IFM#(351)==OFF 3 B托盘是否已码垛,ON
的码满
MOVJVJ=65%GP#11 PL=9 运动到准备取
件点
CALL right 调用B托盘工艺文件
Else 3
DOUTM#(356)=ON
ENDIF 3
ENDIF 2
Else 1
DOUTM#(356)=ON
ENDIF 1
Elsif X03==ON 0 A线有料
IF X#(1)==ON 4 判断是否有托盘
IFM#(352)==ON 5 A托盘被移开过5秒
SETGI#(91)1把码垛数置为1
MOVJVJ=65%GP#1 PL=9 运动到准备取件
点
DOUTM#(354)=ON 清除托盘移动标志
Time 200
DOUTM#(354)=OFF 清除托盘移动标志
CALL left调用A托盘工艺文件
Else 5 A托盘没被被移开过
IFM#(350)==OFF 6 A托盘是否已码垛,ON
的码满
MOVJVJ=65%GP#1 PL=9 运动到准备取件
点
CALL left 调用A托盘工艺文件
ENDIF 6
ENDIF 5
ENDIF 4
ENDIF 0
Else 7 上次B线有料但是没托盘,就判断A
线是否需搬
DOUTM#(356)=OFF 清上次B线有料但是没
托盘标志
Endif 7
Main1:用于当B线条件不满足时,再判断一次
A线,因为主程序IF太多所
以独立一个程序
IF X03==ON 1 A线有料
IF X#(1)==ON 2 判断是否有托盘
IFM#(352)==ON 3 A托盘被移开过5秒
SETGI#(91)1 把码垛数置为1
MOVJVJ=65%GP#1 PL=9 运动到准备取件
点
DOUTM#(354)=ON 清除托盘移动标志
Time 200
DOUTM#(354)=OFF 清除托盘移动标志
CALL left 调用A托盘工艺文件
Else 3 A 托盘没被被移开过
IFM#(350)==OFF 0 A 托盘是否已码垛,ON
的码满
MOVJVJ=65%GP#1 PL=9 运动到准备取
件点
CALL left 调用A托盘工艺文件
ENDIF 0
ENDIF 3
ENDIF 2
ENDIF 1
A托盘子程序如下:
DOUTM#(350)=OFF 清除码垛标志
DOUT Y#(13)=OFF 灭码满指示灯。
DOUT Y#(15)=ON 点亮码垛中指示灯。
DOUTM#(160)=OFF 打开手抓
WTAIT X#(0)==OFF T=0 检测手抓是否打
开到位
MOVJVJ=65%GP#1 PL=9 运动到准备取件
点
WAIT X#(3)==ON T=0 检测抓手辊上是否
有料
MOVL VL=500.0MM/SGP#0 PL=0 运动到取
件点
TIME T=50延时50ms 确保手抓准确到位
DOUTM#(160)=ON 夹紧手抓
PALLET#1 执行1号工艺,计算摆放位置做准
备
WTAIT X#(0)==ON T=0 检测手抓是否夹紧
到位
WTAIT X#(1)==ON T=0 判断是否有左托盘
MOVL VL=1200.0MM/SGP#1 PL=9 提起
WAIT X#(14)==ON T=0 确认总起动信号有
效
WAIT X#(7)==OFF T=0 确认没有人员进入
机器人工作区
MOVJVJ=100%GP#81 PL=9 运动过渡点
MOVJVJ=100%GP#90 PL=9 运动准备放件
点
MOVL VL=2000.0MM/SGP#91 PL=0 运动到放
件点
TIME T=50 延时50ms确保手抓准确到位
DOUTM#(160)=OFF 打开手抓
WTAIT X#(0)==OFF T=0 检测手抓是否打
开到位
INC GI#(91) 放完1件,把垛数加1。
TIME T=50 延时50ms确保手抓打开准确到
位,(可以不要)
MOVL VL=2000.0MM/SGP#90 PL=9 运动到
放件点
MOVJVJ=100%GP#81 PL=9 运动到过渡点
IF GI#(91)==31 1
DOUT Y#(15)=OFF 已码满,清除码垛指示
灯。
DOUT Y#(13)=ON 点亮码满指示灯。
DOUTM#(350)=ON 置码满标志
SETGI#(91)1把码垛数置为1
ENDIF 1
RET返回主程序
B托盘子程序如下:
DOUTM#(351)=OFF 清除码垛标志
DOUT Y#(14)=OFF 灭码满指示灯。
DOUT Y#(15)=ON 点亮码垛中指示灯。
DOUTM#(160)=OFF 打开手抓
WTAIT X#(0)==OFF T=0 检测手抓是否打
开到位
MOVJVJ=100%GP#11 PL=9 运动到准备取
件点
WAIT X#(04)==ON T=0 检测抓手辊上是否
有料
MOVL VL=500.0MM/SGP#10 PL=0 运动到
取件点
TIME T=50 延时50ms确保手抓准确到位
DOUTM#(160)=ON夹紧手抓
PALLET#2执行2号工艺,计算摆放位置做准备
X#(0)==ON T=0 检测手抓是否夹紧到位
WTAITX#(2)==ON T=0 判断是否有右托盘
MOVL VL=1200.0MM/SGP#11 PL=9 提起
WAIT X#(14)==ON T=0确认总起动信号有效
WAIT X#(08)==OFF T=0确认没有人员进入
机器人工作区
MOVJVJ=100%GP#82 PL=9 运动到过渡点
MOVJVJ=100%GP#90 PL=9 运动到准备放
件点
MOVL VL=2000.0MM/SGP#91 PL=9 运动到
放件点
TIME T=50延时50ms确保手抓准确到位
DOUTM#(160)=OFF 打开手抓
WTAIT X#(0)==OFF T=0 检测手抓是否打
开到位
INC GI#(92) 放完1件,把垛数加1。
TIME T=50延时50ms确保手抓打开准确到位,
(可以不要)
MOVL VL=2000.0MM/SGP#90 PL=9 运动到
放件点
MOVJVJ=100%GP#81 PL=9 运动到过渡点
IFGI#(92)==31 1如果已经码满
DOUT Y#(15)=OFF 已码满,清除码垛指示
灯。
DOUT Y#(14)=ON 点亮码满指示灯。
DOUTM#(351)=ON置码满标志
SETGI#(92)1把码垛数置为1
ENDIF 1
RET返回主程序
工业机器人是工业和服务业的重大生产和服务性设备,也是先进制造技术领域不可缺少的自动化设备。工业机器人代替人工可以进行重复性的物料搬运工作,在自动生产线上具有广阔的应用,所以工业机器人在传统产业的应用将大大的提升企业产品的竞争力,对国家经济产生巨大的推动作用。
[1] 徐元宣.工业机器人[M].北京:中国轻工业出版社,1999.