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
← Trap(用户定义触发) Trim$函数 →