KUKA机器人程序中的中断-interrupt

中断 -- kuka机器人一个使用不多但却又不得不用的功能

中断什么时候用?

  • 制动机器人和取消运动

  • 当出现诸如输入等定义的事件时,控制器中断当前程序,并处理一个定义的子程序。

  • 需停住机器人时

  • 需要时废弃当前的轨迹规划,运行一条新的轨迹

中断程序的编写规则

  • 中断必须先声明

  • 由中断而调用的子程序被称为中断程序。

  • 最多同时允许声明 32 个中断。

  • 在同一个时间最多允许有 16 个中断激活。

  • 注意中断的有效性

  • Prio: 优先级

  • 有优先级 1、2、4 - 39 和 81 - 128 可供选择。

  • 优先级 3 和 40 - 80 是预留给系统应用的。

  • 某些情况下中断 19 预留给制动测试。

  • 如果多个中断同时出现,则先执行最高优先级的中断,然后再执行优

  • 先级低的中断。(1 = 最高优先级)

中断声明

GLOBAL INTERRUPT DECL Prio WHEN Ereignis DO Interruptprogramm

GLOBAL:全局

这里的全局和全局变量稍有不同。

看下图来理解一下GLOBAL

白底黑字为程序;彩色代表所影响的范围

这段程序声明了中断1/8/23/2

其中1/8在主程序中声明,因此interrupt1,8在main程序以及其调用的子程序中都有效

其中2在sub()程序中声明,并且加入global,因此interrupt2main程序及sub()程序中都有效

interrupt 23 声明在sub()程序中,因此仅对sub()程序有效

那如果此时有另外一个主程序,在没有调用sub()的情况下interrupt2则没有效果

 Prio:优先级

有优先级 1、2、4 - 39 和 81 - 128 可供选择。

优先级 3 和 40 - 80 是预留给系统应用的。

某些情况下中断 19 预留给制动测试。

如果多个中断同时出现,则先执行最高优先级的中断,然后再执行优

先级低的中断。(1 = 最高优先级)

Ereignis:事件

一个触发中断的条件,比如输入或者输出信号,标志位,计时标志等,结果为true/false的表达式。

Interruptprogramm:中断程序

满足触发条件后调用的子程序

启动/ 关闭/ 禁止/ 开通中断

句法:INTERRUPT 操作  编号

操作:启动/ 关闭/ 禁止/ 开通中断

ON: 激活一个中断。

OFF: 取消激活一个中断。

DISABLE: 禁止一个中断。

ENABLE: 开通一个原本禁止的中断。

编号:已经声明的中断编号

对应于应执行操作的那一中断的编号(= 优先级)。

编号可以省去。在这种情况下,ON 或 OFF 针对所有声明的中断,DISABLE 或 ENABLE针对所有激活的中断。

举例:

INTERRUPT DECL 21 WHEN $IN[25]==TRUE DO INTERRUPT_PROG( )...INTERRUPT ON 21; 中断被识别并被立即执行(脉冲正沿)...INTERRUPT DISABLE 21; 中断被识别和保存,但未被执行(脉冲正沿)...INTERRUPT ENABLE 21; 现在才执行保存的中断...INTERRUPT OFF 21 ; 中断已关闭...

今天先到这,更多的中断使用下期继续

有啥问题都可以加下面的微信公众号来问,这里也能评论问,但是不一定一直在线。。。

长按二维码关注我,机器人小农。。。大家可以用微信关注这个公众号

猜你喜欢

转载自blog.csdn.net/xm10282010/article/details/107554209