ABB机器人设置安全区、中断(案例版)
1.概述
在如今机器人中普遍会设置机器人的安全区域,也可以理解为工作范围。主要目的是为了机器人运行时的安全性和可靠性。ABB机器人也不例外,下面我们就讲讲ABB机器人安全区域的设定。
2.设置安全区基本知识
第一步:定义该全局变量的类型:长方体(WZBoxDef)、圆柱(WZCylDef)、球形(WZSphDef)
第二步:定义启动全局区域:带输出(WZDOSet)、启动临时全局区域(WZEnable)
第三步:停用临时全局区域监控(WZDisable)、擦除临时全局区域监控(WZFree)
注意事项:1.在电动机开启的状态下,固定全局区域始终有效,且仅通过重启来擦除。不可能通过RAPID指令来禁用、启用或擦除固定全局区域
2.一旦定义和启用,临时的全局区域可通过WZDisable禁用,通过WZEnable再次启用以及通过WZFree擦除。自动擦除运动任务中的所有临时全局区域,并将运动任务中的所有wztemporary类数据对象设置为0。
3.ABB机器人实际案例1
3.1.案例概述:
安全区:“绘制”一个临时全局有安全区域,当TCP运行到安全区内,将信号(D652_DO01_Pick)置为,如果在安全区外信号自动复位。
中断:当机器人接受到信号为1时产生中断,机器人停止运行并且回到Home点等待。当信号为0时,机器人回到原工作点,启动机械臂继续运行
1 MODULE ZCheShiMouKuai //模块名称 2 //定义一个中断获取点目标点(辅助作用) 3 var robtarget PZhongDuang:=[[16.33,205.77,4.47],[0.00422709,0.709453,-0.704723,0.00484291],[-1,-1,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]; 4 //定义一个安全区中心点 5 var robtarget C1_AQD:=[[409.82,-38.93,234.96],[0.015194,0.0221478,-0.999442,0.0198559],[0,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]]; 6 //定义一个中断识别号 7 VAR intnum intno1; 8 //定义一个临时全局变量 9 VAR wztemporary roll; 10 //全局区域形状数据 11 VAR shapedata volume; 12 //本次用到安全去形状为圆柱,C1圆心、R1半径、H1高度 13 VAR pos C1:=[0,0,0]; 14 CONST num R1:=100; 15 CONST num H1:=200;、 16 17 PROC Init_ZD() //中断初始化 18 IDelete intno1; //取消中断 19 20 //将中断与软中断程序相连 21 CONNECT intno1 WITH TingZhi; 22 //将中断与信号相连接,当DI00置1时产生中断 23 ISignalDI DN_DI00_Place , 1 , intno1; 24 //启用中断,系统默认启动 25 IWatch intno1; 26 ENDPROC 27 28 PROC Init_AnQQ() //安全区初始化 29 //获取C1_AQD目标点的X、Y、Z进行赋值,相当于该目标点为原点 30 C1.x := C1_AQD.trans.x; 31 C1.y := C1_AQD.trans.y; 32 C1.z := C1_AQD.trans.z; 33 //定义圆柱形全局区域 34 WZCylDef \Inside , volume , C1 , R1 , H1; 35 36 //启用全局区域,设置数字信号输出 37 //Temp:临时全局区域 临时区域变量名称为roll 38 //Inside:在圆柱区内,触发信号。 39 WZDOSet \Temp , roll , \Inside , volume , D652_DO01_Pick , 1; //注意:开机后不可运行第二次 40 ENDPROC 41 42 PROC main_3() 43 Init_ZD; 44 Init_AnQQ; 45 WHILE TRUE DO 46 MoveJ Offs(C1_AQD,0,0,0), v1000, z50, tool1; 47 MoveL Offs(C1_AQD,100,0,50), v1000, z50, tool1; 48 MoveL Offs(C1_AQD,-100,30,30), v1000, z50, tool1; 49 MoveL Offs(C1_AQD,10,150,100), v1000, z50, tool1; 50 MoveL Offs(C1_AQD,30,-150,200), v1000, z50, tool1; 51 MoveL Offs(C1_AQD,60,0,30), v1000, z50, tool1; 52 MoveL Offs(C1_AQD,-130,50,0), v1000, z50, tool1; 53 ENDWHILE 54 WZFree roll; //擦除临时全局区域监控 55 ENDPROC 56 57 TRAP TingZhi //中断程序 58 StopMove\Quick; //停止机械臂的移动 59 StorePath; //发生中断时,存储路径 60 PZhongDuang := CRobT(\Tool:=tool1,\WObj:=wobj0); 61 HOME_r; //回Home点 62 TPErase; 63 TPWrite "Abort, return to Home and stop running"; 64 WaitDI DN_DI00_beishuliandaowei , 0; //当信号为0时继续运行 65 Movel PZhongDuang, v300, fine, tool1\WObj:=wobj0; 66 RestoPath; //中断之后,恢复路径 67 StartMove; //启动机械臂的移动 68 TPWrite "The signal is off and running"; 69 ENDTRAP 70
71 PROC HOME_r()
72 rob_home_PP:=CRobT(\Tool:=tool1,\WObj:=wobj0);
73 rob_Home_PP.trans.z:=Rob_Home.trans.z;
74 Movel Offs(Rob_Home_PP,0,0,0), v300, fine, tool1\WObj:=wobj0;
75 MoveJ Offs(Rob_Home,0,0,0), v1000, fine, tool1\WObj:=wobj0;
76 ENDPROC 77 ENDMODULE
第一次写的不咋样,请理解!