简介:

中断是程序定义事件,通过中断编号识别。中断发生在中断条件为真时。中断不同于其他错误,前者与特定消息号位置无直接关系(不同步)。中断会导致正常程序执行过程暂停,跳过控制,进入软中断程序。

即使机械臂可快速识别中断事件(仅因硬件速度延迟),但也只会在特定程序位置才会作出反应,即调用相应的软中断程序,其中特定位置如下所示:

  • 输入下一条指令时;
  • 等待指令执行期间的任意时候,如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不能与安全中断结合用。

中断操作:

对中断的定义可帮助系统了解此中断。定义将明确中断条件,激活并启用中断。

例子:

VAR intnum sig1int; ISignalDI di1, high, sig1int;

但激活的中断也可能失效,当然反过来也有可能。

在失效期间,无软中断执行的情况下,可舍弃产生的任何指定类型的中断。

例子:

! deactivateISleep sig1int; ! activateIWatch sig1int;

已启用的中断也可能被禁用,反过来也有可能。

在禁用期间,将产生的所有指定类型的中断列入等待队列,待再次启用中断时,使其首先出现。

例子:

! disableIDisable sig1int; 1 enableIEnable sig1int;

删除中断也就意味着取消其定义。没有必要直接取消中断定义,但只有当前一个中断定义被取消后才能将新出现的中断定义为中断变量。

例子:

IDelete sig1int;

软中断程序:

软中断程序提供了一种中断处理方式。可用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)处自然结束软中断程序。随后,将从中断处继续执行。

ABB中断设定的更多相关文章

  1. [自制简单操作系统] 2、鼠标及键盘中断处理事件[PIC\GDT\IDT\FIFO]

    1.大致介绍: >_<" 大致执行顺序是:ipl10.nas->asmhead.nas->bootpack.c PS: 这里bootpack.c要调用graphic. ...

  2. Linux kernel的中断子系统之(一):综述

    返回目录:<ARM-Linux中断系统>. 总结: 一从作为一名驱动工程师角度看,用好中断需要正确认识request_threaded_irq/request_irq关系.中断临界区保护. ...

  3. Linux中断 - 综述

    一.前言 一个合格的linux驱动工程师需要对kernel中的中断子系统有深刻的理解,只有这样,在写具体driver的时候才能: 1.正确的使用linux kernel提供的的API,例如最著名的re ...

  4. [自制简单操作系统] 7、多任务(二)——任务管理自动化&任务休眠

    前言 >_<" 这里仿照窗口管理的方式将任务管理也修改成相应的管理模式,这样可以灵活的添加多个任务,而不必每次都要修改任务切换函数:此外还在任务休眠做了尝试,通过将任务挂起和唤醒 ...

  5. 新唐Cortex-M0微控制器的省电管理

    新唐科技的NUC1xx包含NUC101.NUC100.NUC120.NUC130和NUC140,是以ARM Cortex-M0为核心的32位微控制器(MCU),经由不同时钟的设定,最高可以达到 50M ...

  6. PM2.5环境检测系统的设计与分析

    PM2.5环境检测系统的设计与分析   摘要: 大气颗粒物污染对人类健康和生态环境造成了很大的影响,这让人们逐渐重视起对细颗粒物PM2.5检测技术的研究.本文阐述了PM2.5浓度检测的五种方法,在对上 ...

  7. 一个例子讲解wav头文件 stm32声音程序 录音和播放 wav

    下面我们一wav头文件来分析一下: 下面是双声道的,16位,48000采样录的wav文件: 打开属性,能看到的有用信息只有比特率了: 上图的比特率就是 wav头文件里的bitrate: 1536kbp ...

  8. STM32时钟和定时器

    时钟源 STM32包含了5个时钟源,分别为HSI.HSE.LSI.LSE.PLL. HSI是高速内部时钟.RC振荡器,频率为8MHz: HSE是高速外部时钟,即晶振,可接石英/陶瓷谐振器或接外部时钟源 ...

  9. ABB机器人设置安全区(案例版)

    ABB机器人设置安全区.中断(案例版) 1.概述 在如今机器人中普遍会设置机器人的安全区域,也可以理解为工作范围.主要目的是为了机器人运行时的安全性和可靠性.ABB机器人也不例外,下面我们就讲讲ABB ...

随机推荐

  1. java基础之关键字static

        在java当中有很多关键字,static便是其中一个,它很普通但我们经常需要运用到它,所以要了解static是非常有必要的.   鉴于本人知识结构有限,若有错误忘不吝赐教,甚为感谢.   一. ...

  2. 终端登入mysql

    mysql -u 用户名 -p 输入密码     1. 给root用户添加密码,密码为root     mysqladmin -u root -p password root 2. 通过终端连接ser ...

  3. ASP.NET 设计模式:应用程序分层与关注点分离(SoC)

    应用程序分层设计 应用程序分层属于关注点分离的一种形式,可以通过命名空间.文件夹或采用单独的项目来实现. 下图为一个采用分层设计的项目结构 ASPPatterns.Chap3.Layered.Repo ...

  4. 转JS--通过按钮直接把input或者textarea里的值复制到粘贴板里

    document.activeElement属性为HTML 5中新增的document对象的一个属性,该属性用于返回光标所在元素.当光标未落在页面中任何元素内时,属性值返回body元素. setSel ...

  5. ETL实践--kettle转到hive

    ETL实践--kettle只做源数据的抽取,其他数据转换转到hive上. 1.用hive代替kettle的数据关联的原因 (1).公司之前的数据ELT大量使用了kettle.用kettle导原始数据速 ...

  6. mac 上安装服务,查看服务,重启和关闭

    首先了解下的Mac的 homebrew ,官网:https://brew.sh/index_zh-cn.html 简单的说: Homebrew 能干什么? 答:使用 Homebrew 安装 Apple ...

  7. 浅谈我的MongoDB学习(一)

    这是第一次写博客,不当之处敬请见谅,最近由于项目需要,对mongodb略有研究,网上也有一些相关资料,下面是我自己摸索的一些东西,希望能跟大家分享一下当然,这也是我自己第一次在项目中使用,若理解有误, ...

  8. eclipse自动提示功能没了的解决方法

    eclipse没有自动提示功能,也就是当一个对象居然点不出他的相关方法.后来网上搜索了下,成功的 办法是. 1.我window->Preferences->Java->Editor- ...

  9. 接口自动化测试框架 (一) :APIAutoTest框架

    前言 随着测试技术的发展,接口自动化测试逐渐成为各大公司投入产出比最高的测试技术.介入时间早,执行效率高,稳定性高的优点,让越来越多的公司引入接口自动化测试. 框架简介 APIAutoTest是处理A ...

  10. 【干货分享】dos命令大全

    一般来说dos命令都是在dos程序中进行的,如果电脑中安装有dos程序可以从开机选项中选择进入,在windows 系统中我们还可以从开始运行中输入cmd命令进入操作系统中的dos命令,如下图: 严格的 ...