库卡中断怎么在后台写循环

库卡中断怎么在后台写循环,第1张

库卡中断怎么在后台写循环

中断 -- 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 = 最高优先级)

以洞凯段计数器中断为例,不加while(1)或者足够长的for循环次数,程序就会在计满数(溢出标志tf=1)之前扫描结束。也就是说,程孙竖序都执行完了,中断请求还没发出来,当然进不了中断服务程纳誉序。加循环是让程序停到那里等中断请求,希望帮到你。

首先中断函数中一般是要杜绝循环的,也不用延时的。

延时通过定时器定时来实现,中断多次进入就能实现重复多次处理。

设置一个位变量,每次进入后取反升简锋,根据它的值来给P2口服不同的值。

启动前给flag赋值1,n赋值10,然后启动咐带定时计数器,设置合适的初值,使其定时为500

bit flag

int n

void hi() interrupt 2 using 2

{

    if(n-->0)

   吵晌     if(flag)

            P2 = 0xf8

        else

            P2 = 0x07

        flag = ~ flag

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12311296.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存