•取消在本中断程序的优先级之下的中断程序和子程序。
可能导致机器人的运动被终止
RESUME 指令只能在中断程序中执行
当 RESUME 生效时,advancerun 指针不能在产生中断的行,而是至少低一行。
机器人运动期间,接近开关发现到两个目标并且记录了它们的位置,所以随后机器人可以再移动到该位置。
即使机器人已经知道了两个目标,机器人也会沿着全部的搜索轨迹移动。为节约时间,一旦发现了零件的多数时应立即结束移动。
KRC.。.中机器人运动的取消是可能的,使用语句:
RESUME
RESUME可以取消当前中断被声明的级别和以下级别的所有运行的中断程序和子程序。
同BRAKE语句,RESUME仅允许在中断程序中使用。
当激活RESUME语句时,提前运行指针千万不要在中断被声明的级别,至少应低一个级别。
因为RESUME会取消搜索轨迹,所以在子程序中一定要编程搜索轨迹。在下面的例子中,
使用MOVEP()完成该操作;调用的中断子程序是IR_PROG()。
在子程序的最后一行前使用RESUME语句停止提前运行是重要的。只有这样才可能确保当RESUME语句被激活时,提前运行指针不在中断被声明的级别。在MOVEP()中,使用$ADVANCE=0分配提前运行指针。
在中断程序中,一旦输入1的传感器发现4个零件,使用BRAKE语句停止搜索轨迹,然后通过RESUME语句取消搜索(因为MOVEP()也和IR_PROG()一起被结束)。不使用BRAKE 语句,在提前运行中仍然执行搜索运动。
RESUME语句后,主程序在子程序调用的指令后重新开始。也就是说$ADVANCE=3(复位提前运行)。
DEF SEARCH()
;---------声明部分---------
EXT BAS(BAS_COMMAND:IN,REAL:IN)
DECL AXIS HOME
;----------初始化----------
INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM()
INTERRUPT ON3 ;标准缺省服务函数
BAS(#INITMOV,0) ;初始化速度;
;加速度,$BASE,$TOOL,等
HOME={AXIS:A1 0,A2 -90,A3 90,A4 0,A5 30,A6 0}
INTERRUPT DECL 11 WHEN $IN[1] DO IR_PROG()
I[1]=0 ;设置预定的计数器为0;
------------主程序部分 ----------
PTP HOME ;BCO运行
INTERRUPT ON1 1
MOVEP() ;沿着搜索轨迹运动
$ADVANCE=3 ;复位提前运行
INTERRUPT OFF 11
GRIP()
PTP HOME
END;
--------子程序-----------
DEF MOVEP() ;搜索轨迹运动的子程序
PTP{X 1232,Y -263,Z 1000,A 0,B 67,C -90}
LIN{X 1232,Y 608,Z 1000,A 0,B 67,C -90}
$ADVANCE=0 ;停止提前运行
END ;
;------中断程序--------
DEF IR_PROG() ;存储零件的位置
;INTERRUPT OFF 11
I[1]=I[1]+1
POSITION[I[1]]=$POS_INT ;位置被存储
IFI [1]==4 THEN ;4个零件被认出
BRAKE ;运动被停止
RESUME ;IR_PROG&MOVE被取消
ENDIF
;INTERRUPT ON 11
END;
--------子程序------------
DEF GRIP() ;捉住被发现的零件
INTPOS_NO ;计数器变量
FOR POS_NR=I[1] TO 1 STEP-1 POSITION[POS_NR].Z=POSITION[POS_NR] .Z+200
LIN POSITION[POS_NR];移动到零件以上200mm处
LIN_REL{Z-200} ;移动到零件的垂直位置;拾起零件
LIN POSITION[POS_NR];移动返回
LIN{X 634,Y 1085,Z 1147,A 49,B 67,C -90}
;设置零件向下
ENDFOR
END
如果由于传感器的原因(“触电跳动”),会产生一个中断被不正确地触发两次的危险,您可以通过在中断程序的第一行关闭中断的方法避免发生该危险。但是这样做,在中断执行期间发生的真正的中断现在也不能被识别了。如果要保持中断有效,必须在返回主程序前重新开启中断。
如果使用RESUME语句取消了一个运动,就像上面的例子一样,那么后面的运动不要是CIRC运动,因为起点每次都会不同(产生不同的圆)。
在例8.2编程的搜索动作中,插补循环速率(当前为12ms)输入被削了顶,最大误差约为轨迹速度的12ms倍数。
“快速测量”
如果要消除该误差,您千万不要在用户输入上连接接近开关;而是应该使用外围设备插头X11中的4个专门的输入。这些输入可以通过系统变量
$MEAS_PULSE[1]。..MEAS_PULSE[4]来寻址(响应时间为125Us)。 当中断被打开时,千万不要使用测量脉冲,否则会产生相应的错误信息。
审核编辑 :李倩
-
机器人
+关注
关注
210文章
28148浏览量
206068 -
KUKA
+关注
关注
3文章
217浏览量
16478
原文标题:KUKA机器人 RESUME 取消中断事务 V4.25
文章出处:【微信号:gh_a8b121171b08,微信公众号:机器人及PLC自动化应用】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论