KUKA機(jī)器人調(diào)試ABB中斷設(shè)定

 

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

 

KUKA機(jī)器人調(diào)試ABB中斷設(shè)定

 

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

 

輸入下一條指令時(shí);

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

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

這通常會(huì)導(dǎo)致在識(shí)別出中斷后要延遲2ms30ms才能作出反應(yīng),具體延時(shí)取決于中斷時(shí)所進(jìn)行的運(yùn)動(dòng)類型。

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

按步驟運(yùn)行期間,在程序停止的情況下,不處理任何中斷。停止時(shí)將舍棄隊(duì)列中的所有中斷,同時(shí)也不會(huì)處理停止時(shí)發(fā)生的任何中斷,但安全中斷例外。

任意一次確定的最高中斷次數(shù)限于每個(gè)程序任務(wù)100次。

 

編輯原理:

賦予每次中斷一個(gè)中斷識(shí)別號(hào)。通過創(chuàng)建變量(數(shù)據(jù)類型intnum)并與軟中斷程序相連,獲取該識(shí)別號(hào)。

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

將輸入或輸出設(shè)為一或零;

下令在中斷后按給定時(shí)間延時(shí);

到達(dá)指定位置。

下達(dá)中斷命令的同時(shí),會(huì)自動(dòng)啟用中斷,但會(huì)臨時(shí)禁用。在兩種情況下會(huì)發(fā)生這種情況:

可禁用所有中斷。在此期間發(fā)生的所有中斷都將列入等待隊(duì)列,同時(shí)會(huì)在再次啟用中斷時(shí)自動(dòng)出現(xiàn);

可使個(gè)別中斷失效。而在此期間發(fā)生的所有中斷都可忽略。

指令:

連接中斷于軟中斷程序

CONNECT

連接變量(中斷識(shí)別號(hào))與軟中斷程序

 

下達(dá)中斷指令  

ISignalDI 中斷數(shù)字信號(hào)輸入信號(hào)

ISignalDO 中斷數(shù)字信號(hào)輸出信號(hào)

ISignalGI 中斷一組數(shù)字信號(hào)輸入信號(hào)

ISignalGO 中斷一組數(shù)字信號(hào)輸出信號(hào)

ISignalAI 中斷模擬信號(hào)輸入信號(hào)

ISignalAO 中斷模擬信號(hào)輸出信號(hào)

ITimer 定時(shí)中斷

TriggInt 固定位置中斷(運(yùn)動(dòng)(Motion)拾取列表)

IPers 變更永久數(shù)據(jù)對(duì)象時(shí)中斷

IError 出現(xiàn)錯(cuò)誤時(shí)下達(dá)中斷指令并啟用中斷

IRMQMessage i RAPID語言消息隊(duì)列收到指定數(shù)據(jù)類型時(shí)中斷

取消中斷

IDelete 取消(刪除)中斷

啟用/禁用中斷

ISleep 使個(gè)別中斷失效

IWatch 使個(gè)別中斷生效

IDisable 禁用所有中斷

IEnable 啟用所有中斷

中斷數(shù)據(jù)

GetTrapData 用于軟中斷程序,以獲取導(dǎo)致軟中斷程序被執(zhí)行的中斷的所有信息。

ReadErrData  用于軟中斷程序,以獲取導(dǎo)致軟中斷程序被執(zhí)行的錯(cuò)誤、狀態(tài)變化或警告的數(shù)值信息(域、類型和編號(hào))。

中斷的數(shù)據(jù)類型

intnum 確定中斷的識(shí)別號(hào)。

trapdata 包含導(dǎo)致當(dāng)前軟中斷程序被執(zhí)行的中斷數(shù)據(jù)。

errtype 指定錯(cuò)誤類型(嚴(yán)重性)

errdomain 出現(xiàn)錯(cuò)誤時(shí)下達(dá)中斷指令并啟用中斷。

errdomain 指定錯(cuò)誤域。

 

安全中斷:

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

中斷操作:

對(duì)中斷的定義可幫助系統(tǒng)了解此中斷。定義將明確中斷條件,激活并啟用中斷。

例子:

VAR intnum sig1int; ISignalDI di1, high, sig1int;

但激活的中斷也可能失效,當(dāng)然反過來也有可能。

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

例子:

! deactivateISleep sig1int; ! activateIWatch sig1int;

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

在禁用期間,將產(chǎn)生的所有指定類型的中斷列入等待隊(duì)列,待再次啟用中斷時(shí),使其首先出現(xiàn)。

例子:

! disableIDisable sig1int; 1 enableIEnable sig1int;

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

例子:

IDelete sig1int;

軟中斷程序:

軟中斷程序提供了一種中斷處理方式??捎?/span>CONNECT指令將軟中斷程序與特定中斷相連。發(fā)生中斷時(shí),立即將控制符傳到相應(yīng)的軟中斷程序(若有)。若此時(shí)沒有任何可連接的軟中斷程序,則將中斷當(dāng)做一個(gè)嚴(yán)重錯(cuò)誤(即,導(dǎo)致程序執(zhí)行立即終止)來處理。

例子:

VAR intnum empty;

VAR intnum full;

! 定義中斷識(shí)別號(hào)

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ù)字輸入信號(hào)(di1di3)的數(shù)值(high)發(fā)生改變時(shí)執(zhí)行中斷(empty>etrap、full>ftrap)。

...

! Delete interrupts

IDelete empty;

IDelete full;

! 取消(刪除)中斷(emptyfull

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

 

來源:廣科智能 轉(zhuǎn)載注明出處