RESUME 将中断所有正在运行的中断例程以及低于当前中断声明级别的所有正在运行的子例程。
RESUME 只允许出现在中断例程中。 (但不在由声明为GLOBAL 的中断调用的中断例程中)。当RESUME指令发生时,前进指针不允许位于声明中断的层,但必须至少位于下一层。
在中断程序中更改变量$BASE 仅在中断程序中有效。计算机的进步,即变量
$ADVANCE 不允许在中断程序中改变。
为了在RESUME 后表征机器人控制系统,必须注意以下几点:
SLIN、SPTP、LIN、PTP:
这些运动在恢复后按照编程执行。 (没有行为改变。)
SCIRC,样条组:
如果RESUME后的第一条运动指令是SCIRC或样条组,则情况与原计划不同。
原因:RESUME后机器人不在原来的运动起点。
中国保监会:
如果RESUME 之后的第一个运动指令是CIRC,则它作为LIN 运行。
原因:在这种情况下,机器人控制在内部改变了运动模式。
建议:仅在恢复后使用运动SLIN、SPTP、LIN 或PTP。
如果CIRC 仍被编程为RESUME 后的第一个运动,则机器人必须能够接近LIN 中的目标点,而不会从RESUME 时可能处于的所有位置产生危险。
如果SCIRC 或样条组仍被编程为恢复后的第一个运动,则机器人必须能够从恢复时可能处于的所有位置以及更改的路径接近目标点,而不存在危险。如果不考虑这一点,可能会导致死亡、人身伤害或财产损失。
语法RESUME
示例:
机器人在轨迹上搜索零件。通过输入15 处的传感器检测零件。找到零件后,机器人不会继续移动到轨迹末端,而是返回到中断位置并抓取零件。然后主程序应该继续。
主程序PROG():
定义程序()
INI
.
当$IN[15] 找到时中断DECL 21()
点对点主页
.
搜索()
.
结尾
原则上,要通过BRAKE 和RESUME 中断的运动必须位于子程序中。因此,搜索部分不是直接在主程序中编写,而是在子程序SEARCH()中编写。
带有搜索部分的子程序SEARCH():
定义搜索()
21 中断
样条线
SPL START_SEARCH
SPL IN_BETWEEN
SPL END_SEARCH
端线
等待真实
.
结尾
在RESUME 指令期间,在为当前中断声明的级别中不允许使用提前指针。为了防止这种情况,通过WAIT FOR TRUE 触发提前停止。
中断程序FOUND():
DEFFOUND()
中断关闭21
制动
林$POS_INT
.机器人抓取找到的零件。
恢复
结尾
由于制动过程,机器人会稍微远离触发中断的位置。 LIN $POS_INT 将使机器人返回到触发中断的位置。
这里使用LIN运动模式是因为中断程序不允许包含样条运动。
在LIN $POS_INT 之后,机器人抓取零件。 (在此示例中,这不是以编程方式设置的。)
RESUME 将使主程序在抓取该部分后继续执行。如果没有RESUME,子例程SEARCH() 将在END 之后继续。