ABB中断设定
简介:
中断是程序定义事件,通过中断编号识别。中断发生在中断条件为真时。中断不同于其他错误,前者与特定消息号位置无直接关系(不同步)。中断会导致正常程序执行过程暂停,跳过控制,进入软中断程序。
即使机械臂可快速识别中断事件(仅因硬件速度延迟),但也只会在特定程序位置才会作出反应,即调用相应的软中断程序,其中特定位置如下所示:
- 输入下一条指令时;
- 等待指令执行期间的任意时候,如WaitUntil;
- 移动指令执行期间的任意时候,如MoveL。
这通常会导致在识别出中断后要延迟2ms到30ms才能作出反应,具体延时取决于中断时所进行的运动类型。
可禁用和启用中断。若禁用中断,则可将发生的所有中断列入等待队列,到再次启用中断前都不会再出现。注意中断队列可能包含不止一起待中断事件。使列队的中断按FIFO顺序(先进先出)发生。在软中断程序执行期间通常禁用中断。
按步骤运行期间,在程序停止的情况下,不处理任何中断。停止时将舍弃队列中的所有中断,同时也不会处理停止时发生的任何中断,但安全中断例外。
任意一次确定的最高中断次数限于每个程序任务100次。
编辑原理:
赋予每次中断一个中断识别号。通过创建变量(数据类型intnum)并与软中断程序相连,获取该识别号。
随用可用中断识别号(变量)发出中断命令,也就是明确中断原因。原因可能是如下任一事件:
-
将输入或输出设为一或零;
-
下令在中断后按给定时间延时;
-
到达指定位置。
下达中断命令的同时,会自动启用中断,但会临时禁用。在两种情况下会发生这种情况:
-
可禁用所有中断。在此期间发生的所有中断都将列入等待队列,同时会在再次启用中断时自动出现;
-
可使个别中断失效。而在此期间发生的所有中断都可忽略。
指令:
连接中断于软中断程序 |
|
CONNECT |
连接变量(中断识别号)与软中断程序 |
下达中断指令 |
|
ISignalDI | 中断数字信号输入信号 |
ISignalDO | 中断数字信号输出信号 |
ISignalGI | 中断一组数字信号输入信号 |
ISignalGO | 中断一组数字信号输出信号 |
ISignalAI | 中断模拟信号输入信号 |
ISignalAO | 中断模拟信号输出信号 |
ITimer | 定时中断 |
TriggInt | 固定位置中断(运动(Motion)拾取列表) |
IPers | 变更永久数据对象时中断 |
IError | 出现错误时下达中断指令并启用中断 |
IRMQMessage i | RAPID语言消息队列收到指定数据类型时中断 |
取消中断 |
|
IDelete | 取消(删除)中断 |
启用/禁用中断 |
|
ISleep | 使个别中断失效 |
IWatch | 使个别中断生效 |
IDisable | 禁用所有中断 |
IEnable | 启用所有中断 |
中断数据 |
|
GetTrapData | 用于软中断程序,以获取导致软中断程序被执行的中断的所有信息。 |
ReadErrData | 用于软中断程序,以获取导致软中断程序被执行的错误、状态变化或警告的数值信息(域、类型和编号)。 |
中断的数据类型 |
|
intnum | 确定中断的识别号。 |
trapdata | 包含导致当前软中断程序被执行的中断数据。 |
errtype | 指定错误类型(严重性) |
errdomain | 出现错误时下达中断指令并启用中断。 |
errdomain | 指定错误域。 |
安全中断:
某些指令(如ITimer和ISignalDI)可与安全中断结合用。安全中断是指停止或按步骤执行期间发生时被列入等待队列的所有中断。在启动持续执行过程时,按FIFO顺序尽快处理所有列入等待队列的中断。另外,停止时列队的中断也要予以处理。指令ISleep不能与安全中断结合用。
中断操作:
对中断的定义可帮助系统了解此中断。定义将明确中断条件,激活并启用中断。
例子:
但激活的中断也可能失效,当然反过来也有可能。
在失效期间,无软中断执行的情况下,可舍弃产生的任何指定类型的中断。
例子:
已启用的中断也可能被禁用,反过来也有可能。
在禁用期间,将产生的所有指定类型的中断列入等待队列,待再次启用中断时,使其首先出现。
例子:
删除中断也就意味着取消其定义。没有必要直接取消中断定义,但只有当前一个中断定义被取消后才能将新出现的中断定义为中断变量。
例子:
软中断程序:
软中断程序提供了一种中断处理方式。可用CONNECT指令将软中断程序与特定中断相连。发生中断时,立即将控制符传到相应的软中断程序(若有)。若此时没有任何可连接的软中断程序,则将中断当做一个严重错误(即,导致程序执行立即终止)来处理。
例子:
VAR intnum empty;
VAR intnum full;
! 定义中断识别号
PROC main()
! 例行程序main
! Connect trap routines
CONNECT empty WITH etrap;
CONNECT full WITH ftrap;
! 将中断(empty、full)与软中断程序(etrap、ftrap)相连
! Define feeder interrupts
ISignalDI di1, high, empty;
ISignalDI di3, high, full;
! 数字输入信号(di1、di3)的数值(high)发生改变时执行中断(empty—>etrap、full—>ftrap)。
…
! Delete interrupts
IDelete empty;
IDelete full;
! 取消(删除)中断(empty、full)
ENDPROC
! Responds to “feeder empty” interrupt
TRAP etrap
open_valve;
RETURN;
! 完成程序的执行
ENDTRAP
! 中断程序etrap
! Responds to “feeder full” interrupt
TRAP ftrap
close_valve;
RETURN;
! 完成程序的执行
ENDTRAP
! 中断程序ftrap
同一软中断程序可连接多个中断。系统变量INTNO包含中断次数,可供软中断程序用于识别中断。在采取必要行动后,可用RETURN指令结束软中断程序,也可等到到达软中断程序结尾(ENDTRAP或ERROR)处自然结束软中断程序。随后,将从中断处继续执行。