ABB机器人RAPID语言内核

一、什么是RAPID语言???

1、RAPID语言支持分层编程方案;在分层编程方案中,可为特定机器人系统安装新程序、数据对象和数据类型。该方案能对编程环境进行自定义(扩展编程环境的功能),并获得RAPID编程语言的充分支持。

此外,RAPID语言还带有若干强大功能:

】对任务和模块进行模块化编程

】无返回值程序和有返回值程序

】类型定义

】变量、永久数据对象、常量

】算术

】控制结构

】步退执行支持

】错误恢复

】撤销执行支持

】中断处理

】占位符

2、RAPID语言摘要

 

任务与模块

RAPID应用被称作一项任务。一项任务包括一组模块。一个模块包含一组数据和程序声明。任务缓冲区用于存放系统当前在用(在执行、在开发)的模块。

RAPID语言区分了任务模块和系统程序模块。一个任务模块被视作任务/应用的一部分,而一个系统程序模块被视作系统的一部分。系统程序模块在系统启动期间自动加载到任务缓冲区,旨在(预)定义常用的系统特定数据对象(工具、焊接数据、移动数据等)、接口(打印机、日志文件..)等。

虽然(除了系统程序模块外)单个任务模块通常包含小应用,但较大应用可能包含主任务模块,主任务模块反过来又引用一项或多项其他任务模块所含的程序和/或数据。

一项任务模块包含任务的入口无返回值程序。运行任务实际上表示执行该入口程序。入口程序无法具备参数。

程序

有三类程序:有返回值程序、无返回值程序和软中断程序。

  • 有返回值程序将返回特定类型的值,用于表达式中。

  • 无返回值程序不返回任何值,用于语句中。

  • 软中断程序提供了中断响应手段。软中断程序可与特定中断关联起来,随后,在发生该中断的情况下,被自动执行。

用户程序

用户(定义)程序利用RAPID声明来进行定义。

RAPID程序声明指定了程序名称、程序参数、数据声明、语句,可能也指定了回退处理器和/或错误处理器和/或撤销处理器。

预定义程序

预定义程序由系统提供,一直可供使用。

有两类预定义程序:内置程序和安装程序。

  • 内置程序(如有返回值运算程序一样)属于RAPID语言的一部分。

  • I安装程序是用于控制机械臂、夹具、传感器等的、与应用或设备有关的程序。

注意

从用户角度讲,内置程序和安装程序并无区别。

数据对象

有四种数据对象:常量、变量、永久数据对象和参数。

  • 永久(数据对象)可描述为“永久”变量。在两次会话之间,永久变量将保持值。

  • 在每次新会话开始时,即,当加载模块时(模块变量)或调用程序时(程序变量),将失去(重新初始化)变量值。

数据对象可呈结构化(记录),也可呈维度化(数组、矩阵等)。

语句

语句可为简单语句或复合语句。反过来,复合语句又可能包含其他语句。标签是“空操作”语句,可用于定义在程序中指定的(goto)位置。语句将被接连执行,除非goto、return、raise、exit、retry或trynext语句、或发生中断或错误,造成从另一点继续执行。

赋值语句将改变变量、永久数据对象或参数的值。

在将任何调用参数与无返回值程序的相应参数关联起来后,无返回值程序调用将引起无返回值程序被执行。RAPID语言支持对无返回值程序名称进行后期绑定。

goto语句会导致程序在标签指定位置继续执行。

return语句将终止程序的求值。

raise语句用于发出和传递错误。

exit语句将终止任务的求值。

connect语句用于指定中断编号,并将中断编号与软中断(中断服务)程序关联起来。

retry和trynext语句用于在错误发生后,重新开始求值。

if和test语句用于选择。if语句能够允许基于条件值,选择语句表。test语句将选择一组(或不选择)语句表,具体取决于表达式的值。

for和while语句用于迭代。只要循环变量处于指定值域内,for语句就会重复执行语句表的求值。在每一迭代结束时,将(以可选增量)更新循环变量。只要满足条件,while语句便会重复执行语句表的求值。在每一迭代开始时,会对条件进行求值和核实。

步退执行

RAPID语言支持对语句进行逐步步退执行。在RAPID程序开发期间,步退执行对调试、测试和调节十分有用。RAPID无返回值程序可能包含回退处理器(语句表),回退处理器定义了无返回值程序的步退执行“行为”。

错误恢复

发生运行中的错误会造成正常程序执行被中止。反过来,可转由用户提供的错误处理器来进行控制。任何程序声明均可能包括错误处理器。错误处理器能取得有关错误的信息,并可能采取一些行动来对错误做出响应。如若合适,错误处理器可将错误返回给引起出错的语句来进行控制(retry)或返回给引起出错的语句的后一个语句来进行控制(trynext)或返回给程序调用点来进行控制。如果无法进一步执行程序,那么,错误处理器至少能确保平稳地中止了任务。

撤销执行

通过将程序指针移到程序外,可以在任意点中止程序。在一些情况下,当程序正在执行特定敏感程序时,不适合终止程序。采用撤销处理器,或许可以保护这些敏感程序,使其不会出现意外的程序复位。如果程序被中止,那么,将自动执行撤销处理器。该代码一般应执行清理动作,比如,关闭文件。

中断

中断发生原因在于用户定义(中断)条件变为真。中断不像错误,中断与特定代码段的执行无直接关联(不同步)。发生中断会引起正常程序执行被中止,可转由软中断程序来进行控制。为响应中断而采取必要动作后,软中断程序可从中断点重新开始执行程序。

数据类型

任何RAPID对象(值、表达式、变量、有返回值程序等)都具备一个数据类型。数据类型可为内置型,或为安装型(对照安装程序),还可为用户定义型(在RAPID语言中定义)。内置型数据为RAPID语言的一部分,而各站点之间的安装型数据集或用户定义型数据集可能不同。

注意

从用户角度讲,内置型数据、安装型数据和用户定义型数据并无区别。

数据还可分为三种类型:原子型、记录型和别名型。原子型的定义必须为内置型或安装型,而记录型或别名型也可为用户定义型。

  • 原子数据类型被命名为“原子型”是因为这种数据类型未根据任何其他类型进行定义,无法分成各部分或各分量。

  • 记录型由一组命名的有序分量累积而来。

  • 别名型按定义来讲等同于另一类型。别名型能够对数据对象进行分类。

除了原子型、记录型和别名型分类外,每一类型还具备一个值类型。存在三种值类型:值型、非值型和半值型。

  • 值型对象代表一些形式的值,比如,3.55或John Smith)。

  • 非值(型)对象代表一些物理对象或逻辑对象的隐藏描述或密封描述,比如一个文件。

  • 半值对象有两类,一种为基本非值型,另一种为关联值型,关联值型可用于表示非值型的一些性质。

内置数据类型

内置原子型数据有bool、num、dnum和string。

  • bool为枚举类型,其值为真或假,提供了一种开展逻辑计算和关联计算的方式。

  • num型支持精确算术计算和近似算术计算。

  • string型表示字符序列。

内置记录型数据有pos、orient和pose。

  • pos型表示空间位置(矢量)。

  • orient型表示在空间中的方位。

  • pose型表示坐标系(位置/方位组合)。

内置别名型数据有errnum和intnum。Errnum和intnum均为num的别名,用于表示错误和中断编号。

将利用算术运算符、关系运算符和逻辑运算符以及预定义程序来定义内置型数据的对象的运算。

安装数据类型

安装型数据的概念是,能够使用适当参数类型来使用安装程序。安装型数据可为原子型、记录型、或为别名型。

用户定义数据类型

用户定义型数据能更轻松地自定义应用程序,也能够编写更易读取的RAPID程序。

占位符

占位符概念支持对RAPID程序进行结构化生成和修改。离线编程工具和在线编程工具可利用占位符来临时表示RAPID程序的“未定义”部分。含占位符的程序在语法上是正确的,可加载到任务缓冲区(也可从任务缓冲区保存)。如果RAPID程序中的占位符未引起语义错误,那么,该程序甚至可被执行,但遇到的占位符会引起执行错误。

3、RAPID语言表示方法

上下文无关语法

RAPID语言的上下文无关语法利用巴科斯范式的变体EBNF来表示。

  • 粗体大写字表示保留字和占位符,比如,WHILE。

  • 引用字符串表示其他终止符,比如,'+'。

  • 括入尖角括号的字符串表示语法类、非终止符,比如<constant expression>。

  • 符号::=系指被定义为,比如,<dim> ::= <constant expression>

  • 终止符和/或非终止符列表表示一个序列,比如,GOTO<identifier> ';'

  • 方括号中括的是可选项。这些可选项可能不会出现,也可能出现一次,比如,<return statement> ::= RETURN [ <expression> ] ';'

  • 竖线将替代项分隔开,比如,OR | XOR

  • 大括号中括的是重复项。这些重复项可能不会出现,也可能出现多次,比如,<statement list> ::= { <statement> }

  • 圆括号用于将各概念分层次地组到一起,比如,(OR|XOR)<logical term>

 4、错误分类

错误类型

按照检测时间,错误可分为静态错误或执行错误。

静态错误

静态错误的检出时间为模块加载到任务缓冲区时(参见任务模块)或程序修改后、执行前。

错误类型

示例

示例说明

词汇错误,非法词法单元

b := 2E52786;

指数超出范围

语法错误,违反语法规则

FOR i 5 TO 10 DO

缺FROM关键字

语义错误,违反语义规则,典型的类型错误

VAR num a;

a := "John";

数据类型不匹配

致命(系统资源)错误

-

程序太复杂(嵌套)

执行错误

在任务执行期间出现(并检出)执行错误。

  • 算法错误,比如,除零

  • 输入/输出错误,比如,无此文件或器件

  • 致命(系统资源)错误,比如,执行栈溢出

RAPID语言的错误处理器能够恢复非致命执行错误,参见错误恢复

 以上是RAPID引言,方便大家了解它,后续将更新RAPID语言词汇元素

  • 10
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值