KUKA机器人RESUME取消中断事务 V4.25

描述

机器人

•取消在本中断程序的优先级之下的中断程序和子程序。

可能导致机器人的运动被终止

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)。 当中断被打开时,千万不要使用测量脉冲,否则会产生相应的错误信息。

审核编辑 :李倩

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
jf_47851043 2023-05-02
0 回复 举报
想和你买点学习视频 收起回复
jf_47851043 2023-05-02
0 回复 举报
怎么联系你 收起回复

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分