KUKA機器人調試ABB中斷設定

 

中斷是程序定義事件,通過中斷編號識別。中斷發(fā)生在中斷條件為真時。中斷不同于其他錯誤,前者與特定消息號位置無直接關系(不同步)。中斷會導致正常程序執(zhí)行過程暫停,跳過控制,進入軟中斷程序。

 

KUKA機器人調試ABB中斷設定

 

即使機械臂可快速識別中斷事件(僅因硬件速度延遲),但也只會在特定程序位置才會作出反應,即調用相應的軟中斷程序,其中特定位置如下所示:

 

輸入下一條指令時;

等待指令執(zhí)行期間的任意時候,如WaitUntil;

移動指令執(zhí)行期間的任意時候,如MoveL

這通常會導致在識別出中斷后要延遲2ms30ms才能作出反應,具體延時取決于中斷時所進行的運動類型。

可禁用和啟用中斷。若禁用中斷,則可將發(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 指定錯誤域。

 

安全中斷:

某些指令(如ITimerISignalDI)可與安全中斷結合用。安全中斷是指停止或按步驟執(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ù)字輸入信號(di1di3)的數(shù)值(high)發(fā)生改變時執(zhí)行中斷(empty>etrap、full>ftrap)。

...

! Delete interrupts

IDelete empty;

IDelete full;

! 取消(刪除)中斷(empty、full

ENDPROC

! Responds to feeder emptyinterrupt

TRAP etrap

open_valve;

RETURN;

! 完成程序的執(zhí)行

ENDTRAP

! 中斷程序etrap

! Responds to feeder fullinterrupt

TRAP ftrap

close_valve;

RETURN;

! 完成程序的執(zhí)行

ENDTRAP

! 中斷程序ftrap

 

來源:廣科智能 轉載注明出處