KUKA機器人保養ABB安全區域和中斷一起連用案例解析
KUKA機器人保養ABB安全區域和中斷一起連用案例解析
MODULE XXXX
!定義臨時全局區域數據
VAR wztemporary conveyor;
!定義全局區域形狀數據
VAR shapedata volume;
!定義中斷識別號
VAR intnum empty;
!定義全局區域形狀設定數據位置點1和點2
pers pos corner1:=[363.41,41.87,317.67];
pers pos corner2:=[613.41,-258.13,567.67];
!定義計算位置示教點
VAR
robtarget AnQua:=[[363.41,41.87,317.67],[0.261461,0.63764,0.229939,0.687155],[0,0,1,1],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
!定義左右移動位置點
TASK
VAR
robtarget Zuo_AnQuanDian:=[[444.89,-401.76,501.87],[0.0966565,0.923747,0.326119,0.176057],[-1,0,0,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
TASK
VAR
robtarget You_AnQuanDian:=[[444.90,-164.34,501.86],[0.0966831,0.923746,0.32611,0.176061],[-1,0,1,0],[9E+09,9E+09,9E+09,9E+09,9E+09,9E+09]];
!安全區域定義
PROC AnQuanQuYu_CheShi()
!計算安全區域大小
corner1.x:=AnQua.trans.x;
corner1.y:=AnQua.trans.y;
corner1.z:=AnQua.trans.z;
corner2.x:=AnQua.trans.x+250;
corner2.y:=AnQua.trans.y-300;
corner2.z:=AnQua.trans.z+250;
!定義一個箱形全局區域
WZBoxDef \Outside, volume, corner1, corner2;
!啟用全局區域限制監控
!WZLimSup \Temp, conveyor, volume;
!啟用全局區域,設置數字信號輸出
WZDOSet \Temp, conveyor, \Before, volume, ZhongDuan1,1;
!停用臨時全局區域監控
!WZDisable conveyor;
!重新啟用臨時全局區域監控
!WZEnable conveyor;
!擦除臨時全局區域監控
!WZFree conveyor;
!調用中斷例行程序
ZhongDuan;
!移動左示教點(在安全區外,會觸發安全區)
Movej Zuo_AnQuanDian,v500,fine,tool0\WObj:=wobj0;
!Movej You_AnQuanDian,v500,fine,tool0\WObj:=wobj0;
!Movej Qian_AnQuanDian,v500,fine,tool0\WObj:=wobj0;
!Movej Hou_AnQuanDian,v500,fine,tool0\WObj:=wobj0;
ENDPROC
!中斷例行程序
PROC ZhongDuan()
!將中斷與軟中斷程序相連
CONNECT empty WITH QianHou_ZhongDuan;
!當中斷識別號ZhongDuan1置為1時,自動執行軟中斷程序(QianHou_ZhongDuan)。
ISignalDO ZhongDuan1, 1, empty;
ENDPROC
!軟中斷程序
TRAP QianHou_ZhongDuan
!定義中斷發生時的保存位置的程序點
VAR robtarget p1;
!停止機械臂的移動
StopMove;
! 發生中斷時,存儲路徑
StorePath;
!讀取中斷發生的位置保存給p1
p1:=CRobT();
!中斷發生后執行網右走程序
Movej Hou_AnQuanDian,v500,fine,tool0\WObj:=wobj0;
!中斷結束后移動到發生中斷時的位置
MoveL p1,v500,fine,tool0\WObj:=wobj0;
!中斷之后,恢復路徑(繼續從中斷點移動到Zuo_AnQuanDian示教點)
RestoPath;
!重啟機械臂移動
StartMove;
!完成程序的執行
RETURN;
ENDTRAP
來源:廣科智能 轉載注明出處