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
第一次寫的不咋樣,請理解!