ABB机器人提供由信号触发的中断功能,在中断里可以停止机器人运动,移动到新位置(例如service位置)后,再回到停止位置,继续原有运动功能。
例如下图:
1. 机器人正常轨迹p1-->p2--> p3。
2. 在运行时,突然收到信号要求机器人停止,机器人停止在pSensor,
3. 然后机器人运动到service完成一系列动作
4. 返回停止位置pSensor,
5. 继续执行没有走完的轨迹。
具体代码如下:
proc test1() IDelete intno1; CONNECT intno1 WITH tr1; ISignalDI diSensor,1,intno1; ! 其他主程序 ENDPROC TRAP tr1 VAR robtarget p; ! 停止运动 stopmove; ! 存储还没走完的轨迹 storepath; ! 记录停止位置 p:=CRobT(); ! 移动到新位置 MoveL offs(p,0,0,100),v50,fine,tool0\WObj:=wobj0; ! 返回停止位置 MoveL p,v50,fine,tool0\WObj:=wobj0; ! 恢复没走完的轨迹 restopath; ! 开始运动 startmove; ENDTRAP
以上代码在IRC5控制柜执行,不需要任何额外选项。
!!!!!!!!!!!!!!!!!!!!!!!!1
若使用Omnicore系统机器人,会提示缺少3113-1 Path Recovery选项。(主要是涉及storepath等指令,若不使用,直接stopmove后用新的moveL语句,会提示缺少storepath指令)
所以,现场有该应用的机器人,需要提前购买3110-1 Path Recovery选项。(ABB Omnicore机器人已经推出了中国地区软件促销包,即可以较高折扣同时获取worldzone,multitask,collision detection和path recovery 四个选项:4个选项要一起购买)
TRAP tr1 VAR robtarget p; ! 发出QuickStop停止信号,机器人停止,光标停在stopmove PulseDO vdoQStop; stopmove; ! 先存储未走完的轨迹,再执行新的轨迹。 storepath; p:=CRobT(); MoveL offs(p,0,0,100),v50,fine,tool0\WObj:=wobj0; MoveL p,v50,fine,tool0\WObj:=wobj0; restopath; startmove; ENDTRAP





