KUKA機器人調試ABB中斷設定

 

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

 

KUKA機器人調試ABB中斷設定

 

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

 

輸入下一條指令時;

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

移動指令執行期間的任意時候,如MoveL。

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

可禁用和啟用中斷。若禁用中斷,則可將發生的所有中斷列入等待隊列,到再次啟用中斷前都不會再出現。注意中斷隊列可能包含不止一起待中斷事件。使列隊的中斷按FIFO順序(先進先出)發生。在軟中斷程序執行期間通常禁用中斷。

按步驟運行期間,在程序停止的情況下,不處理任何中斷。停止時將舍棄隊列中的所有中斷,同時也不會處理停止時發生的任何中斷,但安全中斷例外。

任意一次確定的最高中斷次數限于每個程序任務100次。

 

編輯原理:

賦予每次中斷一個中斷識別號。通過創建變量(數據類型intnum)并與軟中斷程序相連,獲取該識別號。

隨用可用中斷識別號(變量)發出中斷命令,也就是明確中斷原因。原因可能是如下任一事件:

將輸入或輸出設為一或零;

下令在中斷后按給定時間延時;

到達指定位置。

下達中斷命令的同時,會自動啟用中斷,但會臨時禁用。在兩種情況下會發生這種情況:

可禁用所有中斷。在此期間發生的所有中斷都將列入等待隊列,同時會在再次啟用中斷時自動出現;

可使個別中斷失效。而在此期間發生的所有中斷都可忽略。

指令:

連接中斷于軟中斷程序

CONNECT

連接變量(中斷識別號)與軟中斷程序

 

下達中斷指令  

ISignalDI 中斷數字信號輸入信號

ISignalDO 中斷數字信號輸出信號

ISignalGI 中斷一組數字信號輸入信號

ISignalGO 中斷一組數字信號輸出信號

ISignalAI 中斷模擬信號輸入信號

ISignalAO 中斷模擬信號輸出信號

ITimer 定時中斷

TriggInt 固定位置中斷(運動(Motion)拾取列表)

IPers 變更永久數據對象時中斷

IError 出現錯誤時下達中斷指令并啟用中斷

IRMQMessage i RAPID語言消息隊列收到指定數據類型時中斷

取消中斷

IDelete 取消(刪除)中斷

啟用/禁用中斷

ISleep 使個別中斷失效

IWatch 使個別中斷生效

IDisable 禁用所有中斷

IEnable 啟用所有中斷

中斷數據

GetTrapData 用于軟中斷程序,以獲取導致軟中斷程序被執行的中斷的所有信息。

ReadErrData  用于軟中斷程序,以獲取導致軟中斷程序被執行的錯誤、狀態變化或警告的數值信息(域、類型和編號)。

中斷的數據類型

intnum 確定中斷的識別號。

trapdata 包含導致當前軟中斷程序被執行的中斷數據。

errtype 指定錯誤類型(嚴重性)

errdomain 出現錯誤時下達中斷指令并啟用中斷。

errdomain 指定錯誤域。

 

安全中斷:

某些指令(如ITimerISignalDI)可與安全中斷結合用。安全中斷是指停止或按步驟執行期間發生時被列入等待隊列的所有中斷。在啟動持續執行過程時,按FIFO順序盡快處理所有列入等待隊列的中斷。另外,停止時列隊的中斷也要予以處理。指令ISleep不能與安全中斷結合用。

中斷操作:

對中斷的定義可幫助系統了解此中斷。定義將明確中斷條件,激活并啟用中斷。

例子:

VAR intnum sig1int; ISignalDI di1, high, sig1int;

但激活的中斷也可能失效,當然反過來也有可能。

在失效期間,無軟中斷執行的情況下,可舍棄產生的任何指定類型的中斷。

例子:

! deactivateISleep sig1int; ! activateIWatch sig1int;

已啟用的中斷也可能被禁用,反過來也有可能。

在禁用期間,將產生的所有指定類型的中斷列入等待隊列,待再次啟用中斷時,使其首先出現。

例子:

! disableIDisable sig1int; 1 enableIEnable sig1int;

刪除中斷也就意味著取消其定義。沒有必要直接取消中斷定義,但只有當前一個中斷定義被取消后才能將新出現的中斷定義為中斷變量。

例子:

IDelete sig1int;

軟中斷程序:

軟中斷程序提供了一種中斷處理方式??捎?/span>CONNECT指令將軟中斷程序與特定中斷相連。發生中斷時,立即將控制符傳到相應的軟中斷程序(若有)。若此時沒有任何可連接的軟中斷程序,則將中斷當做一個嚴重錯誤(即,導致程序執行立即終止)來處理。

例子:

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;

! 數字輸入信號(di1、di3)的數值(high)發生改變時執行中斷(empty>etrap、full>ftrap)。

...

! Delete interrupts

IDelete empty;

IDelete full;

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

ENDPROC

! Responds to feeder emptyinterrupt

TRAP etrap

open_valve;

RETURN;

! 完成程序的執行

ENDTRAP

! 中斷程序etrap

! Responds to feeder fullinterrupt

TRAP ftrap

close_valve;

RETURN;

! 完成程序的執行

ENDTRAP

! 中斷程序ftrap

 

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