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+ 4.x为止的Trap *** Call功能在Epson RC+ 8.0中被替换为Trap *** Xqt。


说明
执行系统状态成立时指定的中断处理任务。

即使执行中断处理任务,其Trap设置也不会被清除。

要清除Trap设置时,省略函数名并执行Trap命令。

[例]“Trap Emergencyc”表示清除“Trap Emergencyc”。

如果一般任务全部结束并且控制器进入Ready状态,所有的Trap设置则会被清除。

不能通过中断处理任务再次利用Xqt执行任务。

注意

  • Forced标志

    通过在On、Off等I/O输出命令中指定Forced标志,即使在紧急停止期间、安全门打开时、示教模式期间或发生错误时,也可以进行I/O输出的ON/OFF操作。

    请绝对不要将致动器等伴随有机械动作的外部设备连接到指定Forced标志的I/O输出上。否则外部设备可能会在紧急停止期间、安全门打开时、示教模式期间或发生错误时进行动作,非常危险。

    假设将指定Forced标志的I/O输出连接到状态显示LED等不会产生机械动作的外部设备上。

  • 指定Emergency时

    发生紧急停止时,按NoEmgAbort任务属性执行指定的函数。

可通过中断处理任务执行的命令为可执行NoEmgAbort任务的命令。

紧急停止的中断处理完成之后,请立即结束任务。如果任务未结束,控制器则无法进入Ready状态。不能通过中断处理任务执行Reset命令,自动解除紧急停止。

要通过中断处理任务执行打开或关闭I/O的任务时,请取消勾选[控制器设置]-[环境设置]-[]复选框。如果保持勾选状态,则不能保证执行通过控制器将I/O设为Off或通过任务将I/O设为On两者何者为先。

  • 指定Error时

    发生错误时,按NoEmgAbort任务属性执行指定的函数。

可通过中断处理任务执行的命令为可执行NoEmgAbort任务的命令。

错误的中断处理完成之后,请立即结束任务。如果任务未结束,控制器则无法进入Ready状态。

可以在用户函数中指定三个可省略的参数(错误编号、机器人编号、关节编号)。如要使用这些参数,请在Trap函数中加入三个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