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