Trap(系統狀態觸發)
用於定義插斷以及發生插斷時的處理。
若使用Trap命令,則可因發生事件而跳到標籤或叫用函式。Trap命令有2種類型。
- 將使用者所定義的輸入狀態作為觸發的4個Trap
- 將系統狀態作為觸發的7個Trap
在本項目中,對系統狀態觸發的Trap進行說明。
格式
Trap {Emergency | Error | Pause | SGOpen | SGClose | Abort | Finish } Xqt 函數名稱
Trap {Emergency | Error | Pause | SGOpen | SGClose | Abort | Finish }
參數
- Emergency
- 發生緊急停止時,執行指定函數。
- Error
- 發生錯誤時,執行指定函數。
- Pause
- 進入暫停狀態時,執行指定函數。
- SGOpen
- 開啟安全門回路時,執行指定函數。
- SGClose
- 關閉安全門回路時,執行指定函數。
- Abort
- 由用戶或系統而停止所有工作(背景工作除外)時(已執行相當於Abort All的命令或按下中斷按鈕時),執行指定函式。
- Finish
- 完成所有任務(背景任務除外)時,執行指定函數。不會按Trap Abort的執行條件執行函式。
- 函數名稱
- 在系統狀態成立時用於進行Xqt的插斷處理任務之函數。不可指定有引數的函式。不過,若在參數中指定「Error」,可指定3個引數。
注意
在Epson RC+ 8.0中,已以Trap *** Xqt取代Epson RC+4.x之前版本的Trap *** Call功能。
說明
系統狀態成立時,執行指定的插斷處理工作。
即便執行插斷處理工作,也不清除Trap設定。
若要清除Trap設定,則省略函式名稱並執行Trap命令。
[例]「Trap Emergency」用於清除「Trap Emergency」。
若結束所有一般工作,控制器處於Ready狀態,則清除所有Trap設定。
無法在插斷處理的工作中以Xqt執行其它工作。
注意
Forced旗標
即便處於緊急停止狀態、安全門開啟狀態、教導模式或發生錯誤的狀態,也可透過在On、Off等的I/O輸出命令上指定Forced旗標,開啟/關閉I/O輸出。
若要進行指定Forced旗標的I/O輸出,切勿連接伴隨有機械動作的外部設備(如傳動器)。否則,外部設備可能會在緊急停止狀態、安全門開啟狀態、教導模式或發生錯誤狀態下運作,這會帶來極大的危険。
指定Forced旗標的I/O輸出用於設想連接不會伴隨有機械動作的外部設備(如狀態顯示LED)。
指定Emergency時
發生緊急停止時,按照NoEmgAbort工作屬性執行指定函式。
可在插斷處理工作中執行的命令為可執行NoEmgAbort工作的命令。
請於完成緊急停止的插斷處理後迅速完成工作。若未完成工作,控制器則不會變為Ready狀態。無法在插斷處理工作中執行Reset命令並自動解除緊急停止。
若要在插斷處理工作中進行I/O的啟用/停用工作,請取消[控制器設定]–[環境設定]–[以緊急停止停用輸出連接埠]核取方塊的勾選狀態。若此設定處於勾選狀態,則無法確定優先執行的動作(以控制器停用I/O或以工作啟用I/O)。
指定Error時
發生錯誤時,按照NoEmgAbort工作屬性執行指定的函式。
可在插斷處理工作中執行的命令為可執行NoEmgAbort工作的命令。
請於完成錯誤的插斷處理後迅速完成工作。若未完成工作,控制器則不會變為Ready狀態。
可在使用者函式中指定可省略的3個參數(錯誤編號、機器人編號、關節編號)。若要使用這些參數,請在Trap函式中附加3個byval整數參數。
若發生動作系統的錯誤,則設定錯誤編號、機器人編號、關節編號。
若發生動作系統以外的錯誤,則將機器人編號、關節編號設為「0」。
指定Pause時
進入暫停狀態時,按照NoPause工作屬性執行指定函式。
指定SGOpen時
開啟安全門回路時,則按照NoPause工作屬性執行指定函式。
指定SGClose時
安全門回路關閉且被閂鎖時,則按照NoPause工作屬性執行指定函式。
若在插斷處理工作中執行Cont命令,則會發生錯誤。
指定Abort時
由使用者或系統而停止所有工作(背景工作除外)時(執行相當於Abort All的命令或按下中斷按鈕時),則按照NoPause工作屬性執行指定函式。
請於完成中斷的插斷處理後迅速完成工作。若未完成工作,控制器則不會變為Ready狀態。
即便在以Trap Abort執行的工作中發生錯誤,也不執行Trap Error的處理工作。
若以Shutdown命令或Restart命令中斷工作,則不執行Trap Abort和Trap Finish的處理工作。
指定Finish時
完成所有工作(背景工作除外)時,則按照NoPause工作屬性執行指定函式。不會按執行Trap Abort處理工作的條件執行。
請於完成終止的插斷處理後迅速完成工作。若未完成工作,控制器則不會變為Ready狀態。
參照
Era, Erl, Err, Ert, ErrMsg$, OnErr, Reset, Restart, SysErr, Xqt
Trap範例
Function main
:
Trap Error Xqt suberr
:
Fend
Function suberr
Print "Error =", Err
On ErrorSwitch
Fend
Function main
Trap Error Xqt trapError
FEnd
Function trapError(errNum As Integer, robotNum As Integer, jointNum As Integer)
Print "error number = ", errNum
Print "robot number = ", robotNum
Print "joint number = ", jointNum
If Ert = 0 Then
Print "system error"
Else
Print "task error"
Print "function = ", Erf$(Ert)
Print "line number = ", Erl(Ert)
EndIf
FEnd
← Trap(使用者定義觸發) Trim$函數 →