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