KUKA机器人FB_PSPS由INTERRUPT DECL 中断程序的触发过程分析

描述

INTERRUPT...DECL ...WHEN ...DO ...  中断指令

中断声明的原理:

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

事件和子程序用 INTERRUPT...DECL ...WHEN ...DO ...  来定义

中断声明是一个指令。它必须位于程序的指令部分,不允许位于声明部分!

声明后先将取消中断 (Interrupt)。必须先激活中断,然后才能对定义的事件作出反应!

中断声明的句法:

INTERRUPT DECL 优先权WHEN  引起中断的事件 DO要执行中断的程序

Global (全局)

中断只有从对其进行声明的层面起才被识别。

程序

在一个子程序中声明的中断在主程序中是未知的 (此处为中断 23)。一个在声明的开头写有关键词 GLOBAL  的中断在上一层面也是已知的(此处为中断 2)。

Prio:优先级

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

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

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

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

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

程序

事件:触发中断的事件。该事件在出现时通过一个脉冲边沿被识别 (脉冲边沿触发)。

程序

中断程序

1.应处理的中断程序的名称。 

2.该子程序被称为中断程序。

3.运行时间变量不允许作为参数传递给中断程序

4.允许使用在一个数据列表中声明的变量。

INTERRUPT +操作+<编号>

ON: 激活一个中断。

OFF : 取消激活一个中断。

DISABLE: 禁止一个中断。

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

例:INTERRUPT ON 10 中断被识别并被执行 (脉冲正沿)

这种情况下,中断由状态的转换而触发,例如,对于$IN[22]==TRUE 而言,通过 FALSE 到 TRUE 的转换。也就是说,在 INTERRUPT ON 时不允许已是该状态,否则就无法触发中断!在此情况下,还必须注意:状态转换最早允许在 INTERRUPT ON 后的一个插值周期进行。(可通过在INTERRUPT ON 后编程设定 WAIT SEC 0.012 来实现。若不希望出现预进停止,则可另外在 WAIT SEC 前再编入一个 CONTINUE。)原因是 INTERRUPTON 需要一个插值周期 (= 12 ms),直到中断真正激活。如果先前变换了状态,中断不能识别这一变换。

中断指令与FB_PSPS程序的使用分析: 

DEF UP1()    UP程序

UP Anfang

SPS_N=-1

SPS_FERTIG=FALSE

IF NOTCALLBYSELECT THEN     在由程序调用UP 时 CALLBYSELECT=false

INTERRUPTDECL 10 WHEN $CYCFLAG[254]==FALSE DO VW(#FB_STOP,TRUE)

由M254 的非来激活中断,触发程序VW(#FB_STOP,TRUE) 中断的等级是10

INTERRUPT ON10  激活中断

INT10=TRUE

VW_USR_R(#USR_INIT)执行  VW_USR_R初始化

ENDIF

VW(#VW_INIT_UP,TRUE)执行  VW初始化

程序

程序

DEF  FB_STOP ()  声明程序FB_STOP ()

INT INT_N

BOOL EXIT_OK

BOOL IN_APO_1

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

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

×
20
完善资料,
赚取积分