KUKA機器人調試ABB中斷設定
KUKA機器人調試ABB中斷設定
中斷是程序定義事件,通過中斷編號識別。中斷發(fā)生在中斷條件為真時。中斷不同于其他錯誤,前者與特定消息號位置無直接關系(不同步)。中斷會導致正常程序執(zhí)行過程暫停,跳過控制,進入軟中斷程序。
KUKA機器人調試ABB中斷設定
即使機械臂可快速識別中斷事件(僅因硬件速度延遲),但也只會在特定程序位置才會作出反應,即調用相應的軟中斷程序,其中特定位置如下所示:
輸入下一條指令時;
等待指令執(zhí)行期間的任意時候,如WaitUntil;
移動指令執(zhí)行期間的任意時候,如MoveL。
這通常會導致在識別出中斷后要延遲2ms到30ms才能作出反應,具體延時取決于中斷時所進行的運動類型。
可禁用和啟用中斷。若禁用中斷,則可將發(fā)生的所有中斷列入等待隊列,到再次啟用中斷前都不會再出現(xiàn)。注意中斷隊列可能包含不止一起待中斷事件。使列隊的中斷按FIFO順序(先進先出)發(fā)生。在軟中斷程序執(zhí)行期間通常禁用中斷。
按步驟運行期間,在程序停止的情況下,不處理任何中斷。停止時將舍棄隊列中的所有中斷,同時也不會處理停止時發(fā)生的任何中斷,但安全中斷例外。
任意一次確定的最高中斷次數(shù)限于每個程序任務100次。
編輯原理:
賦予每次中斷一個中斷識別號。通過創(chuàng)建變量(數(shù)據(jù)類型intnum)并與軟中斷程序相連,獲取該識別號。
隨用可用中斷識別號(變量)發(fā)出中斷命令,也就是明確中斷原因。原因可能是如下任一事件:
將輸入或輸出設為一或零;
下令在中斷后按給定時間延時;
到達指定位置。
下達中斷命令的同時,會自動啟用中斷,但會臨時禁用。在兩種情況下會發(fā)生這種情況:
可禁用所有中斷。在此期間發(fā)生的所有中斷都將列入等待隊列,同時會在再次啟用中斷時自動出現(xiàn);
可使個別中斷失效。而在此期間發(fā)生的所有中斷都可忽略。
指令:
連接中斷于軟中斷程序
CONNECT
連接變量(中斷識別號)與軟中斷程序
下達中斷指令
ISignalDI 中斷數(shù)字信號輸入信號
ISignalDO 中斷數(shù)字信號輸出信號
ISignalGI 中斷一組數(shù)字信號輸入信號
ISignalGO 中斷一組數(shù)字信號輸出信號
ISignalAI 中斷模擬信號輸入信號
ISignalAO 中斷模擬信號輸出信號
ITimer 定時中斷
TriggInt 固定位置中斷(運動(Motion)拾取列表)
IPers 變更永久數(shù)據(jù)對象時中斷
IError 出現(xiàn)錯誤時下達中斷指令并啟用中斷
IRMQMessage i RAPID語言消息隊列收到指定數(shù)據(jù)類型時中斷
取消中斷
IDelete 取消(刪除)中斷
啟用/禁用中斷
ISleep 使個別中斷失效
IWatch 使個別中斷生效
IDisable 禁用所有中斷
IEnable 啟用所有中斷
中斷數(shù)據(jù)
GetTrapData 用于軟中斷程序,以獲取導致軟中斷程序被執(zhí)行的中斷的所有信息。
ReadErrData 用于軟中斷程序,以獲取導致軟中斷程序被執(zhí)行的錯誤、狀態(tài)變化或警告的數(shù)值信息(域、類型和編號)。
中斷的數(shù)據(jù)類型
intnum 確定中斷的識別號。
trapdata 包含導致當前軟中斷程序被執(zhí)行的中斷數(shù)據(jù)。
errtype 指定錯誤類型(嚴重性)
errdomain 出現(xiàn)錯誤時下達中斷指令并啟用中斷。
errdomain 指定錯誤域。
安全中斷:
某些指令(如ITimer和ISignalDI)可與安全中斷結合用。安全中斷是指停止或按步驟執(zhí)行期間發(fā)生時被列入等待隊列的所有中斷。在啟動持續(xù)執(zhí)行過程時,按FIFO順序盡快處理所有列入等待隊列的中斷。另外,停止時列隊的中斷也要予以處理。指令ISleep不能與安全中斷結合用。
中斷操作:
對中斷的定義可幫助系統(tǒng)了解此中斷。定義將明確中斷條件,激活并啟用中斷。
例子:
VAR intnum sig1int; ISignalDI di1, high, sig1int;
但激活的中斷也可能失效,當然反過來也有可能。
在失效期間,無軟中斷執(zhí)行的情況下,可舍棄產(chǎn)生的任何指定類型的中斷。
例子:
! deactivateISleep sig1int; ! activateIWatch sig1int;
已啟用的中斷也可能被禁用,反過來也有可能。
在禁用期間,將產(chǎn)生的所有指定類型的中斷列入等待隊列,待再次啟用中斷時,使其首先出現(xiàn)。
例子:
! disableIDisable sig1int; 1 enableIEnable sig1int;
刪除中斷也就意味著取消其定義。沒有必要直接取消中斷定義,但只有當前一個中斷定義被取消后才能將新出現(xiàn)的中斷定義為中斷變量。
例子:
IDelete sig1int;
軟中斷程序:
軟中斷程序提供了一種中斷處理方式??捎?/span>CONNECT指令將軟中斷程序與特定中斷相連。發(fā)生中斷時,立即將控制符傳到相應的軟中斷程序(若有)。若此時沒有任何可連接的軟中斷程序,則將中斷當做一個嚴重錯誤(即,導致程序執(zhí)行立即終止)來處理。
例子:
VAR intnum empty;
VAR intnum full;
! 定義中斷識別號
PROC main()
! 例行程序main
! Connect trap routines
CONNECT empty WITH etrap;
CONNECT full WITH ftrap;
! 將中斷(empty、full)與軟中斷程序(etrap、ftrap)相連
! Define feeder interrupts
ISignalDI di1, high, empty;
ISignalDI di3, high, full;
! 數(shù)字輸入信號(di1、di3)的數(shù)值(high)發(fā)生改變時執(zhí)行中斷(empty—>etrap、full—>ftrap)。
...
! Delete interrupts
IDelete empty;
IDelete full;
! 取消(刪除)中斷(empty、full)
ENDPROC
! Responds to “feeder empty” interrupt
TRAP etrap
open_valve;
RETURN;
! 完成程序的執(zhí)行
ENDTRAP
! 中斷程序etrap
! Responds to “feeder full” interrupt
TRAP ftrap
close_valve;
RETURN;
! 完成程序的執(zhí)行
ENDTRAP
! 中斷程序ftrap
來源:廣科智能 轉載注明出處