RESUME 将中断在声明当前中断的层面以下的所有运行中的中断程序和所有运行中的子程序。
RESUME 只允许出现在中断程序中。(但是不在由声明为 GLOBAL 的中断调用的中断程序中)。在出现 RESUME 指令时,预进指针不允许在声明中断的层面里,而必须至少在下一级层面里。
在中断程序中更改变量 $base 只在那里有效。计算机预进,即变量
$ADVANCE,不允许在中断程序中改变。
为了 RESUME 之后的机器人控制系统特性,必须注意以下几点:
SLIN, SPTP, LIN, PTP:
在 RESUME 之后按编程执行这些运动。(无行为变化。)
SCIRC、样条组 :
如果 RESUME 后的***个运动指令是一个 SCIRC 或一个样条组,则情况与原规划不同。
原因:在 RESUME 后机器人不位于原先的运动起点。
CIRC:
如果 RESUME 后的***个运动指令是一个 CIRC,则它作为 LIN 运行。
原因:在该情况下,机器人控制系统在内部改变运动方式。
建议:在一个 RESUME 后只使用运动 SLIN、SPTP、LIN 或 PTP。
如果在 RESUME 后仍将 CIRC 编程设定为***个运动,则机器人必须可以无危险地以 LIN 形式从其在 RESUME 时可能存在的所有位置上接近目标点。
如果在 RESUME 后仍将 SCIRC 或样条组编程设定为第 一个运动,则机器人必须可无危险地从其在 RESUME 时可能存在的所有位置上和以已更改的路线接近目标点。如果没有考虑这一点,则可能会造成死亡、身体受伤或财产损失。
句法 RESUME
示例:
机器人在一个轨迹上搜索零件。通过传感器在输入端 15 上识别零件。在找到该零件之后,机器人不继续移至轨迹的终点,而是返回到中断位置并抓取零件。然后应继续主程序。
主程序 PROG():
DEF PROG()
INI
...
INTERRUPT DECL 21 WHEN $IN[15] DO FOUND()
PTP HOME
...
SEARCH()
...
END
原则上,要用 BRAKE 和 RESUME 中断的运动必须位于一个子程序中。因此,不直接在主程序中而是在子程序 SEARCH() 中编程设定搜索段。
带搜索段的子程序 SEARCH():
DEF SEARCH()
INTERRUPT ON 21
SPLINE
SPL START_SEARCH
SPL IN_BETWEEN
SPL END_SEARCH
ENDSPLINE
WAIT FOR TRUE
...
END
在 RESUME 指令时,预进指示器不允许在对当前中断声明的层面中。为了防止该情况,在通过 WAIT FOR TRUE 触发预进停止。
中断程序 FOUND():
DEF FOUND()
INTERRUPT OFF 21
BRAKE
LIN $POS_INT
... ;机器人抓取找到的零件。
RESUME
END
由于制动过程,机器人略微远离触发了中断的位置。LIN $POS_INT 将导致机器人返回到触发了中断的位置上。
在此使用了运动方式 LIN,因为中断程序不允许含有样条运动。
在 LIN $POS_INT 之后,机器人抓取该零件。(在此在示例中不编程设定。)
RESUME 将导致在抓取零件之后继续主程序。在不 带 RESUME 时,在 END 之后继续子程序 SEARCH()。