中断 -- 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 ; 中断已关闭
...
今天先到这,更多的中断使用下期继续
有啥问题都可以加下面的微信公众号来问,这里也能评论问,但是不一定一直在线。。。
长按二维码关注我,机器人小农。。。大家可以用微信关注这个公众号