ABB机器人设置安全区(案例版)


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
 
 

 

 

第一次写的不咋样,请理解!


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM