• 沒有找到結果。

INTERRUPT DECL...WHEN...DO

在文檔中 软 件 (頁 83-86)

2 参数部分

2.2 命令索引

2.2.27 INTERRUPT DECL...WHEN...DO

2.2.27.1 摘要信息

声明中断。.

2.2.27.2 语句

自变量 类型 解释

GLOBAL 关键字GLOBAL用于识别中断包括子程序以上级别

的被公告的中断。

如果中断在子程序中公告,那么在主程序调用时是经 过验证的。.

Prio INT 算术表达式指定先前的中断。先前的级别1到128可用,

但是系统自动优先分配40到80范围保留。.

Event BOOL 逻辑表达式定义中断的结果。下面是允许的:

布尔常量 布尔变量 信号名 比较

简单的逻辑操作:NOT,OR,AND或EXORT 不能用于:

◆结构部分

Subprogram 子程序的名字和参数(中断程序),它在中断出现时执 行。

如果程序被延伸到HAL语句,中断依然被检测和执行(包括运动指令)。在指令被执行后,程序 在HALT语句暂停一次。

中断声明是指令。它不是必须在声明部分定位。

在第一次公告时,中断被解除和失效。

运行时间变量可能不作为中断程序的参数被传送和在数据列表中区分变量公告。

长沙工控帮教育科技有限公司

84 同时最多公告32个中断。

2.2.27.3 说明

中断功能允许用户在程序执行的不同时发生事件使用程序语句来反映。这种事件可以是 紧急停止,错误信息和输入信号。中断可能的原因和系统对对中断声明的各自的定义的 反映。中断可以被分配优先权,事件和中断程序可以被调用。在相同的时间内可以调用 32个中断。声明可以在任何时候被另一个声明覆盖。

如果下面所有的四个条件都满足,定义中断触发一个反映::

1. 中断必须被触发(中断打开).

2. 中断必须被允许(中断使能).

3. 中断必须是最高级。

4. 有关的事件必须发生。事件发生由边沿触发。(边沿触发)

如果几个中断同时出现,最高级的中断首先执行,然后按优先级高低顺序执行。中 断直到声明级别后才发现。高级别的编程尽管中断被激活,中断仍不能识别。换句话说,

在子程序识别中断不能被主程序识别。为了识别主程序的中断和级别,它必须作为全球 的公告。

在事件被发现后,机器人存储当前的位置和调用中断程序。中断可以被本地子程序和外 部子程序使用。中断在结束时使用RENTURN和END语句是惯例。中断程序是在随后中 断出现的位置恢复(除了RESUME的情况)。

在一般程序中触发先前运行中止语句,不能在子程序中这样做。中断程序在命令等级上 运行,它是逐段的按次序执行。

程序变量$EM_STOP和$STOPMESS的中断在错误的情况下执行,比如INTERRUPT语句 不论机器人是否停止都执行 (忽视运动指令).。

任何被公告和激活的中断能在操作停止期间发现一次。在系统重新开始后,中断按时中 断执行的优先权的次序发现(如果有使能)。程序随后继续。

在调用中断程序时,参数正确地传送就像调用一般的子程序一样。

长沙工控帮教育科技有限公司

85 定义中断优先级5在变量$STOPMESS为真时调用子程序STOPSP。

INTERRUPT DECL 5 WHEN $STOPMESS DO STOPSP( )

定义中断优先级23在$IN[12]为真时调用子程序SP1使用参数20a和VALUE。

INTERRUPT DECL 23 WHEN $IN[12]==TRUE DO SP1(20,VALUE)

两个物体能被两个连接到输入6和7传感器检测且位于预先编程的路径上。机器人移动到 后面的这两个位置。

DEF PROG( )

;主程序

INTERRUPT DECL 10 WHEN $IN[6]==TRUE DO SP1( ) INTERRUPT DECL 20 WHEN $IN[7]==TRUE DO SP2( ) ...

LIN START_POINT INTERRUPT ON INTERRUPT ENABLE LIN END_POINT INTERRUPT OFF

;移动到参考点 LIN POINT1

LIN POINT2 ...

END DEF SP1( )

;本地中断程序1 POINT1=$POS_INT END

DEF SP2( )

; 本地中断程序2 POINT2=$POS_INT END

INTERRUPT,BRAKE,RESUME,TRIGGER

长沙工控帮教育科技有限公司

86

在文檔中 软 件 (頁 83-86)