KUKA機(jī)器人調(diào)試ABB中斷設(shè)定
KUKA機(jī)器人調(diào)試ABB中斷設(shè)定
中斷是程序定義事件,通過(guò)中斷編號(hào)識(shí)別。中斷發(fā)生在中斷條件為真時(shí)。中斷不同于其他錯(cuò)誤,前者與特定消息號(hào)位置無(wú)直接關(guān)系(不同步)。中斷會(huì)導(dǎo)致正常程序執(zhí)行過(guò)程暫停,跳過(guò)控制,進(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í)別出中斷后要延遲2ms到30ms才能作出反應(yīng),具體延時(shí)取決于中斷時(shí)所進(jìn)行的運(yùn)動(dòng)類(lèi)型。
可禁用和啟用中斷。若禁用中斷,則可將發(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)。通過(guò)創(chuàng)建變量(數(shù)據(jù)類(lèi)型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語(yǔ)言消息隊(duì)列收到指定數(shù)據(jù)類(lèi)型時(shí)中斷
取消中斷
IDelete 取消(刪除)中斷
啟用/禁用中斷
ISleep 使個(gè)別中斷失效
IWatch 使個(gè)別中斷生效
IDisable 禁用所有中斷
IEnable 啟用所有中斷
中斷數(shù)據(jù)
GetTrapData 用于軟中斷程序,以獲取導(dǎo)致軟中斷程序被執(zhí)行的中斷的所有信息。
ReadErrData 用于軟中斷程序,以獲取導(dǎo)致軟中斷程序被執(zhí)行的錯(cuò)誤、狀態(tài)變化或警告的數(shù)值信息(域、類(lèi)型和編號(hào))。
中斷的數(shù)據(jù)類(lèi)型
intnum 確定中斷的識(shí)別號(hào)。
trapdata 包含導(dǎo)致當(dāng)前軟中斷程序被執(zhí)行的中斷數(shù)據(jù)。
errtype 指定錯(cuò)誤類(lèi)型(嚴(yán)重性)
errdomain 出現(xiàn)錯(cuò)誤時(shí)下達(dá)中斷指令并啟用中斷。
errdomain 指定錯(cuò)誤域。
安全中斷:
某些指令(如ITimer和ISignalDI)可與安全中斷結(jié)合用。安全中斷是指停止或按步驟執(zhí)行期間發(fā)生時(shí)被列入等待隊(duì)列的所有中斷。在啟動(dòng)持續(xù)執(zhí)行過(guò)程時(shí),按FIFO順序盡快處理所有列入等待隊(duì)列的中斷。另外,停止時(shí)列隊(duì)的中斷也要予以處理。指令ISleep不能與安全中斷結(jié)合用。
中斷操作:
對(duì)中斷的定義可幫助系統(tǒng)了解此中斷。定義將明確中斷條件,激活并啟用中斷。
例子:
VAR intnum sig1int; ISignalDI di1, high, sig1int;
但激活的中斷也可能失效,當(dāng)然反過(guò)來(lái)也有可能。
在失效期間,無(wú)軟中斷執(zhí)行的情況下,可舍棄產(chǎn)生的任何指定類(lèi)型的中斷。
例子:
! deactivateISleep sig1int; ! activateIWatch sig1int;
已啟用的中斷也可能被禁用,反過(guò)來(lái)也有可能。
在禁用期間,將產(chǎn)生的所有指定類(lèi)型的中斷列入等待隊(duì)列,待再次啟用中斷時(shí),使其首先出現(xiàn)。
例子:
! disableIDisable sig1int; 1 enableIEnable sig1int;
刪除中斷也就意味著取消其定義。沒(méi)有必要直接取消中斷定義,但只有當(dāng)前一個(gè)中斷定義被取消后才能將新出現(xiàn)的中斷定義為中斷變量。
例子:
IDelete sig1int;
軟中斷程序:
軟中斷程序提供了一種中斷處理方式??捎?/span>CONNECT指令將軟中斷程序與特定中斷相連。發(fā)生中斷時(shí),立即將控制符傳到相應(yīng)的軟中斷程序(若有)。若此時(shí)沒(méi)有任何可連接的軟中斷程序,則將中斷當(dāng)做一個(gè)嚴(yán)重錯(cuò)誤(即,導(dǎo)致程序執(zhí)行立即終止)來(lái)處理。
例子:
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)(di1、di3)的數(shù)值(high)發(fā)生改變時(shí)執(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
來(lái)源:廣科智能 轉(zhuǎn)載注明出處