GB/Z 20869-2007 工业机器人 用于机器人的中间代码

GB/Z 20869-2007 Industrial robot—Intermediate Code for Robot(ICR)

国家标准 中文简体 废止 页数:74页 | 格式:PDF

基本信息

标准号
GB/Z 20869-2007
相关服务
标准类型
国家标准
标准状态
废止
中国标准分类号(CCS)
国际标准分类号(ICS)
发布日期
2007-01-18
实施日期
2024-08-16
发布单位/组织
中华人民共和国国家质量监督检验检疫总局、中国国家标准化管理委员会
归口单位
全国工业自动化系统与集成标准化技术委员会
适用范围
本指导性技术文件规定的中间代码是面向用户的编程系统和工业机器人控制系统的中间界面。它定义了数据列表(包括中间代码有关的数据)的结构和访问结构。

发布历史

研制信息

起草单位:
北京机械工业自动化研究所
起草人:
聂尔来、郝淑芬、许、董瑞翔、贾永君、贾沛、于括
出版信息:
页数:74页 | 字数:137 千字 | 开本: 大16开

内容描述

ICS25.040.30

J07GB

中华人民共和国国家标准化指导性技术文件

GB/Z20869--2007

工业机器人

用于机器人的中间代码

Industrialrobot--IntermediateCodeforRobotCICR)

CISO/TR10562:1995,Manipulatingindustrialrobots

IntermediateCodeforRobotsCICR),MOD)

2007-01-18发布

中华人民共租国国家质量监督检验检疫总局

发布

中国国家标准化管理委员会

GB/Z20869-2007

目次

前言…………………1

I范围-

2规范性引用文件…

3术语和定义……..

4本指导性技术文件的约定………………1

5基本概念…………………2

6数据类型…………………8

7指令………………………14

8数据列表定义…54

附录A(资料性附录)机器人系统状态变量……………56

附录B(资料性附录)实施指南……·

附录c(资料性附录)ICR的代码数表..

GB/Z20869-2007

前言

本指导性技术文件修改采用ISO/TR10562:1995((操作型机器人用于机器人中间代码(lCR)>>

(英文版)。

本指导性技术文件等同翻译ISO/TR10562:1995。为便于使用,本指导性技术文件作了下列编辑

性修改:

←一"本技术报告"改为"本指导性技术文件"

为了与现有的工业机器人系列标准一致,本指导性技术文件名称中删除了"操作型"三个字;

一一删除了国际技术报告的前言;

删去了原文中不符合我国标准编写的字句;

删去了原文中的附录C,将附录D作为本指导性技术文件的附录C。

本指导性技术文件的附录A、附录日和附录C为资料性附录。

本指导性技术文件由中国机械工业联合会提出。

本指导性技术文件由全国工业自动化系统与集成标准化技术委员会归口。

本指导性技术文件起草单位:北京机械工业自动化研究所。

本指导性技术文件主要起草人:聂尔来、郝淑芬、许瑾、董瑞翔、贾永君、贾沛、于括。

本指导性技术文件酋次发布。

I

GB/Z20869-2007

工业机器人用于机器人的中间代码

1范围

本指导性技术文件规定的中间代码是面向用户的编程系统和工业机器人控制系统的中间界面。它

定义了数据列表(包括中间代码有关的数据)的结构和访问结构。

2规范性引用文件

下列文件中的条款通过本指导性技术文件的引用而成为本指导性技术文件的条款。凡是注日期的

引用文件,其随后所有的修改单(不包括勘误的内容)或修订版均不适用于本指导性技术文件,然而,鼓

励根据本指导性技术文件达成协议的各方研究是否可使用这些文件的最新版本。凡是不注日期的引用

文件,其最新版本适用于本指导性技术文件。

GB/T12643-1997工业机器人词汇(eqvISO8373:1994)

GB/T15273.1•1994信息处理八位单字节编码图形字符集第一部分:拉丁字母一

(idtISO8859-1:1987)

GB/T16720.3一1996工业自动化系统制造报文规范第3部分:机器人伴同标准

(eqvISO/IEC9506-3:1991)

3术语和定义

GB/T12643确定的及下列术语和定义适用于本指导性技术文件。

按照GB/T15273.1(8位字符集)规定的对所有代码和数据元素将作出描述。ICR是面向机器和

解释器的,而不是面向用户的。

3.1

ICR程序ICRprogram

用ICR写的机器人指令和数据集合。

3.2

数据列表dateIist

用ICR代码写的位置、位姿和其他数据结构的集合。

3.3

机器人控制器robotcontrolunit

接收指令代码,并向操作机每个关节发送伺服信号的控制装置。

4本指导性技术文件的约定

如果某个程序码仅用本指导性技术文件所定义的代码特征,并且它不依艘于任何专用的解释器,则

认为该程序代码遵循了本指导性技术文件。

本指导性技术文件的单条语句可分成两组,第一组(A组)语句与工业机器人控制器及其所控制的

机器人类型无关。第二组CB组)语句依赖于特定的工业机器人类塑及控制器。

A组分成八个相关层次。

基本层(level0)包含:

•存储和数据管理;

•程序流程控制;

G.B/Z20869-2007

•布尔和算术运算;

语句:CNFGCHAN、OPENCHAN、CLOSECHAN、RESETCHAN、STATCHAN、数据交换语

句DIN和DOUT;

•除了符号寻址外的其他寻址模式。

作为基本层的扩展,产生了七个彼此独立的相关层次:

符号寻址模式。

除了基本层所列语句之外的其他数据交换语句。

CNFGCHAN、OPENCHAN、CLOSECHAN、RESETCHAN、STATCHAN、DIN和DOUT。

一一数据列表管理o

传感器函数。

十二调试纠错函数。

一一用户扩展语句。

备用扩展语句。

B组分成核心语句和扩展语句。

一一核心语句包括:

ACCEL、VEL和MOVTIM语句。

]MOVE和LMOVE语句。

CALIB、CURPOS、GOHOME、MOVSTP、MOVCONT和MOVCANCELi吾句。

末端执行器语句描述。

一一扩展语句包括:

不包括在核心语句中的技术规范。

不包括在核心语句中的每个运动和执行器的控制。

机器人设备的描述。

在本指导性技术文件中,ICR处理器定义为"接受ICR代码作为输入,并按照标准定义语义执行

ICR代码的系统或机构"。如果处理器至少满足A组中的基本层和B组中的核心部分,那么认为它遵

从了本指导性技术文件,除非处理器明确指出不接受B组中核心部分的函数。

ICR可用两种不同形式表达,在第一种形式中,所有操作数仅由ASCII码数字组成,第二种形式允

许用助记符表示操作数。下面两条语句的效果完全相同。

(220,5450;

和②220,'MOVEND气

在语句①中操作符用数字表示,而语句②中操作符采用助记符的形式。

由于ICR代码有两种不同的表示方法,所以有两种不同的ICR解释器。第一种较简单,它用数值

作操作数,而第二种允许使用助记符。第二种解释器称为MNEMONICAL-ICR解择器,也可以看作是

一种预处理器,它先将助记符转换成数值,再由第一种较简单的ICR解释器处理。

5基本概念

5.1引言

本指导性技术文件是涉及工业机器人需求的系列标准的一部分,其他标准包括诸如安全、性能规范

及其测试方法、术语和机械接口等。可以看出这些标准是相互关联的,而且也是与其他标准相关的。

本指导性技术文件是一个二级委员会对离线编程和不同机器人控制器之间的中间代码。CR)的草

案。机器人编程语言的表示有多个层次。ICR也允许技术和几何数据在机器人控制器之间相互交换,

但这并不意味着要使用中间代码的其他层次,这也不是要取消ICR和机器人控制器之间的其他中间代

码。然而,ICR应被作为机器人编程和控制器之间的中间接口。

2

GB/Z20869-2007

本指导性技术文件附录A中给出机器人系统状态变量的指南,作为ICR的参考,这些状态变量定

义在GB/T16720.3。

本指导性技术文件附录B阐述了在应用中如何使用和实现ICR.如何把机器人编程语言转变成

ICR代码。

一台工业机器人需要完成多种任务,这组用来定义机器人将要完成规定人的运动和辅助功能的指

令由一个任务程序来规定。

一个特定的应用是通过任务描述或用面向用户的编程语言写的程序来说明的。这个面向用户的高

级编程语言的文法和语义取决于系统编程的类型(例如是陈述性编程还是面向CAD的交互式编程)。

程序必须翻译成机器人低级程序代码,然后装入机器人控制器去执行。

从各种机器人控制器的数量和面向用户的高级编程系统的演变来说,很有必要在这两者之间建立

一座桥梁。ICR就是为此打开方便之门,它的目的是既支持机器人控制实现的所有特征,也支持描述任

务的全部要素。

在不同机器人控制器之间或在任何机器人编程系统和控制器之间交换用户程序和数据.ICR代码

是很有用的。代码本身是由一系列代表不同指令的记录组成,→条指令可能是一个数据或类型定义。

指令包括数学运算和堆桔操作,它能对按照后缀法定义的数学表达式进行有效的计算。

高级编程语言中支持块结构有利于结构化编程。关于变量和其他可编程对象在块中的作用域由符

号标识,在某些特定场合也使用绝对地址,如直接处理1/0存储映射。

本指导性技术文件详细说明了ICR的功能和范围,但其正式文法描述是在助记符层实现的。代码

数字的定义很容易映射到本文描述的ICR元素。

有些用到的条目如位姿或方向没有详细解释,它们的意义在其他ISO文献中已有描述。

中间代码的主要特征如下:

一一中间代码:如图1所示,中间代码正好介于机器人编程系统的标准输出和机器人控制器的标准

输入之间o

一一数据交换标准格式:用ICR写的数据列表能用于数据交换和示教的数据输入。

机器间接口:ICR被认为是计算机系统之间的数据交换格式,它不是面向用户的语言,代码基

本上仅由整数表示,然而为了增加程序可读性,用符号表示变量和其他操作.ICR中仅使用可

打印字符集。

JCR

数据交换表

图1带有中间接口的机器人编程结构

3

GB/Z20869-2007

用ICR写的数据和程序在图l所示的系统之间传送,程序以如下两种方法执行。

用ICR写的程序通过解释器转变成指定代码,然后传送到机器人控制器执行。

一一用ICR写的程序用文件或通信方式传送到机器人控制器直接执行。

机器人控制器的系统构成和实现完全依赖于机器人的系统开发商,但在本指导性技术文件中假定

控制器的结构如图2所示:

一-路径发生器:用于计算工业操作机的行程轨迹。

一-伺服系统:用来实现路径。

一一外设控制器:用于控制数字/模拟量的I/O单元。

一一传感器:没有定义专门的装置,通常假定为DIO

o

RS232C标准的串行线路。

通信线路:假定如

一一文件存储系统:文件可用于选择项。

本指导性技术文件假定的多关节机器人是具有六个自由度的工业操作机,本指导性技术文件不包

括多于六个自由度的机器人,而对于少于六个自由度的机器人,本指导性技术文件同样适用。

机器人控制器

L伺附一关节

外设控制器

传感器

通信线路

文件存储系统

固2机器人控制器的构形

5.2ICR语法描述

从词法角度看,ICR程序是由GB/T15273.1规定的一串字符(8位字符集)组成,所有控制符(如

换行和回车)在处理中被忽略。

5.2.1ICR的元语言

为ICR词法定义的元语言源于巴科斯-若尔表示法(BNF)。

a)终结符(通常是字母)用单引号"'"括起。

b)用括号"("和")"表示一个分组。

c)连字符表示连接多个符号(终结符和非终结符)0

d)方括号"["和"J"表示可选标识符。

e)大括号"{"和"}"表示可重复。

例如,{iteml}表示有O个,1个或任意多个iteml。

f)符号"1"表示替换项。

例如,item11item2表示或者为item1或者为item2,但二者不能同时出现。

例:number_constant::=I#飞integerIreal)。

一个数字常量,可用#30定义整数30,而#O.3E2定义实数30.0

0

5.2.2ICR词法元素

在这一节中的文法描述了宇符词法元素的格式及其彼此分类,因此和本指导性技术文件所使用的

4

GB/Z20869-2007

其他文法不同,这就意味着ICR词法元素不同于句法定义,因为在多个终结符之间不允许有空格(如整

数定义)。以后各章的句法定义将以此为参考。

digit::=

'0'1γ1'2'1'3'1'4'1

'5'1'6'1'7'1'8'1'9'.

Uppeccase_1etter

'A'1'B'1'c'1'D'1'E'1'F'1'G'1

'H'1'1'1γI'K'I'L'I'M'I'N'1

'0'1'p'1'Q'1'R'1's'1'T'1'u'1

'v'1'w'1'x'1'y'1'Z'.

10wercase1etter二

'a'1'b'I'c'1'd'1'e'γ1'g'1

'h'I'i'γ1'k'1'1'1'm''n'

'OF|ypy|Fqr|FrF|F5F|rtf|fur|

Fvr|'WF|fi|yi|yzf.

1etterupper_case_1etter11oweccase_1etter.

,,

space..

underscore二

speciaLcharacterO::=

'!'1''''1'#'1'$'1'%'1'&'1'"1

'('1')'l'*'l'十,l',l',l',1'/'.

speciaLcharacter1

'1';'1'<'l'二,1'>'I'?'I'@'.

speciaLcharacter2二

'['1']'l'\γ,1'-'1人

speciaLcharacter3::=

'{'1'1'1'}'l'

graphiccharacter

1etter1digit1space1underscore1

speciaLcharacterO1speciaLcharacter1

speciaLcharacter21speciaLcharacter3.

unsigned_integerdigit{digit}.

在6.2中描述了有关整型、字符型、实型、布尔型、字符串型的语义。

mteger工[<'十,l'-')]unsigned_integer

character

'"graphic_character'"1

,$'unsigned_integer.

上面美元符"$"表示字符码的数值。其类型是GB/T15273.1规定的码(8位字符集)。

rea1二integer'.'[unsigned_integer]['E'integer].

boo1ean::='T'1'TRUE'I'F'I'FALSE'.

string字符串是双引号"叫括起来的一列字符。而串中的双引号本身用两个双引号本身来表示,

如"abc""def"表示abc"defù

string::=''''[graphiccharacter]'川

d

Gß/Z20869-2007

symbol标识符形式上与不限长度的宇符串类似,它所有宇符必须是字母,数字或下划线,而且第一

个宇符必须是字母。标识符中大小号字母是不区别的(如ABC和abc意义相同)。标识符不能用双引

号括起。

symbolletter{CletterIdigitIunderscore)}.

5.3地址模式

5.3.1绝对地址

当用户需要指定机器人控制器和其他外设的绝对地址时,可用整形数字来表示。地址应能被控制

器接受,注意:对于绝对地址的解释完全依赖于系统,所以为了代码的通用性,最好不要使用绝对地址。

我们己经提到过,有关机器人控制器的计算环境己超出本文范围。然而,我们经常需要存储空间的

映象(如1/0映象的外设)。因为ICR是简单、初级的语言,注意绝对地址并一定是实地址,也可以是

CPU虚存空间的虚地址,它的数据类型是除INTEGER(整数)类型范围外的无符号INTEGER(整数)。

表示如下:

absolute_address::='@'unsigned_integer.

这里元符号整数代表虚存空间的地址。由于绝对地址对机器人系统有高度依赖性,应尽量避免

使用。

5.3.2块相对地址

块相对地址是指只表示程序块和其内部块的变量,若用整数给出块相对地址,它的值可由如下公式

计算:

24

2block_nesting_number十variable_index.

注释:定义数22432位整数来表示一个块的相对地址,块嵌套号(block_nesting_num-

是考虑到用

ber)是对在此之前已被激活的块开始语句(BLKBEG)中给出的块嵌套标识号的引用。如果具有相同块

嵌套号的几个块同时激活,最后激活的块有效。对于主程序块嵌套号从零开始。

变量索引(variable_index)是指一个变量的块内相对寻址,这个变量必须在块嵌套号(block_nest-

ing_number)到引用的块内用变量语句(DECLVAR)进行说明。

若一个块相对地址由其标识符给出,那么外部块或过程名后加点""作为它的前缀(如procedure_

out.variable_name)。如果没有外部块或过程名,则默认它是内部块。

blockreladdress

'BRADR"<'(integerI[symbol'.'JsymboD')'.

5.3.3操作鼓存取

在ICR指令中,存取操作数通过使用常量,绝对地址,块相对地址或标识符。

operand

symbolIabsolute3ddressIconstantIblockreLaddress.

部分操作数被压入堆战中,其余的在语句中描述,指令执行结果被压入堆拢。当遇到一个标识符,

就要根据指令中的定义判断它是标号,过程名还是变量。

整型常量表示为"#1012"这里"#"是ASCII宇符。"#1012"是一个1000加12的十进制数。

为表示数据入战和出钱。在每条指令的定义中使用如下表示法。

Stack:

Ln:var_type,…,1一2:var_type,I_1:var_type

二'>O_m:var_type,...,0_2:var_type,0_1:var_type

这里,Lx表示第x次入枝值,O_x表示第x次出钱值,var_type表示数据类型o

堆战是"后进先出"(LIFO)存储器,输入/输出值的顺序如图3所示,因此L1和0_1位于找顶

(TOS),"var_type"可以是一个或多个数据类型名(参见"变量和常量勺,当使用两个或更多的数据类型

时,用括号和竖线表示如下:

GB/Z20869一2007

L1:(var一type1Ivar_type2).

(这个表达方式超出了ICR词法定义,仅仅用来作解释和说明。)

os-Hi

s一~汁

>

围3堆枝操作

5.4ICR单元结构

ICR程序的基本结构由单元组成,单元可包括一个用户程序.也可能是一个含有过程、函数或数据

列表的模块。模块对于分别开发程序部件再将它们连接起来是必须的。数据列表用于机器人控制器之

间的数据交换(如用户程序中的位置量)。

lcrumtprogramIdata_list.

programpbeg{statement}pend.

datalistdlhead{dldat}dlend.

5.5语旬结构

ICR的每个操作都写成一条语句,语句由一个行号和一条指令组成,一条指令又由一个操作符和零

个、二个或多个操作数组成,操作数以逗号分隔,整个操作以分号结束。

所有的运算都用ASCII字符数字代码表示,如"22100"。为了增加代码可读性,也可用助记符表

示。如:"PBEG"。而行号必须是唯一的。

statementline_number',instruction',

linenumberunsigned_integer.

mstructlOn

remarkIdeclvarItypedefIprogflowIoperation

specificationImovecontrolIdata巳xchangeI

datalistopIdescriptionIsensorfunctionIdebugfunction.

指令在第7章中定义,为方便起见,下面给出一个例子。

remarkcd_remark',linenumber\text.

cd_remark二'REMARK'Iremark_code.

remark_code1000(整数)

linenumber机器人高级编程语言中的行号(整数)

textremark(字符串)

这里cd_remark是指令REMARK(用助记符"REMARK"或1000表示)的标识码。两种表示法

(助记符和数字代码)要求定义两种与之相适应的ICR装入器,类型1仅采用代码方式,而类型2可用

代码或助记符方式,"linenumber"和"text"是REMARK指令的操作数。

5.6程序流程结构

ICR被设计成两个计算机系统间的中间代码,它没有复杂的程序流程结构,而是采用简单、快速的

方法,如条件转移和无条件转移。

所有语句由一系列无符号整数表示的指令序号编号,转移目标通过指令号定义的,如:

label二unsigned_integer.

禁止从块或过程外部跳入n个块或过程中间o

7

GB/Z20869-2007

在ICR中引入块结构,在一个块中可使用动态变量,但它必须在块首("blkbeg")说明,并在程序退

出本块时取消,块的嵌套和其他特征和Pascal语言中规定相同。

6数据类型

6.1ICR中的数据处理

ICR是一种代码系统,它计算内存中的数据,通过外设和传感器获取信息,控制外设和操作机。其

数值计算通常在战中执行。

ICR中的定义不受存储地址、规则范围以及过程的嵌套和函数限制,任何在实施中引起的限制,必

须由用户考虑。

6.1.1数据类型

在ICR中定义的数据类型分成:

a)逻辑和算术数据类型:integer,Boolean,real,character;

b)文本数据类型:string;

c)结构数据类型:array,record;

d)几何数据类型:position,orientation,pose;

e)和机器人有关的数据类型:joint,main.Joint,add-.ioint,robtarget。

在6.2~6.5将详细讨论。除了后四种数据类型,所有其他数据类型和PASCAL语言中相同。数

据结构的实现与系统有关,后四种类型是专门为机器人控制设计的。

尽管不同数据类型间的混合运算基本上是不允许的,但每一种数据类型及其组合的运算是可以的,

也可以进行强制类型转换。

6.1.2变量

ICR有两种变量:

←一静态变量;

一-动态变量。

后者仅用于块和过程内部。

变量可以用一个在使用前说明的唯一符号表示,也可以用一个能由块相对地址存取的变量表示。

变量的类型由它的标识符给定,可能是一个数字代码或符号名,如ICR预定义的数据类型表所示。

var_typetype_identifierIdata_type.

type_indentifierunsigned_integer.

data_type

'BRADR'I'INT'I'REAL'I'BOOL'I'CHAR'I'STR'I

'POS'I'ORI'I'POSE'I'JOINT'I'M_JOINT'I'A_JOINT'I'RυBTRT'.

数据类型的缩略词在7.4中给出详细描述。

ICR预定义的数据类型表

数据类型数据类型含义

类型标识码

OBRADR

块相对地址

1INT

整型

2REAL实型

3BOOL

布尔型

4CHAR

字符型

5STR

字符串型

8

Gß/Z20869-2007

(续表)

类型标识码

数据类型数据类型含义

6(保留)

7

(保留)t:

8POS

位置

9ORI

i方向

10POSE

1位姿

11JOINT!关节

12M_JOINT主关节

13A_JOINTi附加关节

14ROBTRT

机器人目标

ICR的数据类型分成以下几组:

一一逻辑和算术型:它和传统计算机科学定义的一样。

文本型:STRING数据类型允许处理文本信息,如:反映用户终端输入或建立文本信息块。

一一结构型:类似于Pascal语言,用户可以定义结构。

一一与机器人无关的几何数据类型:为定义机器人的运动,几何型数据是很有用的,它是预定义的

结构型数据,机器人的位置能通过POSITION(直角坐标系)描述,而ORIENTATION(直角

参考坐标系)给出了机器人的方向(主要是末端执行器方向)。用POSE描述了机器人在直角

坐标系中的位置和方向。

一一与机器人相关的数据类型:和机器人有关的数据类型对不同机器人(更精确地说是机器人运动

学)也不同。因此,它们是与实现有关的。如果ICR程序由一个机器人控制器移植到另一个

上,它们的定义也必须改变。JOINT数据类型表示关节坐标,ROBTARGET像POSE一样也

描述了机器人在直角坐标系中的位置和方向,但它还包括构造信息,如需要,也用于表示附加

轴的不确定的位置和关节值。

以上描述都为预定义数据类型。

6.2逻辑和算术数据类型

对以下每种数据类型,其类型定义描述了其预定义的取值1包围,其语法定义于5.2.2。

BOOLEAN(BOOL)

i亥类型包含"TRUE"和"FALSE"两个逻辑值。

允许值是:

false_valueFALSEIF

truevalueTRUEIT

INTEGER(INT)

包含整数范围的数据类型。

允许整数值的范围是:

最小值=-2,147,483,647

最大值=+2,147,483,647

(一个整型变量值由4个字节表示)。

CHARACTER(CHAR)

ASCII码字符的数据类型。

允许值有:

9

GB/Z20869-2007

图形宇符/无符号整数范围

无符号整数范围=0~255

(其前128个值和ASCII码相对应)。

REAL(REAL)

包含实数范围内的数据类型。

reaLvalueinteger'.'[unsigned_integer][exponent].

exponent::='E'inerger.

实数传统表示法是由小数部分和可选的指数部分组成。

小数部分是由正、负整数或零后跟一点号气'和可选的无符号整数组成,用来表示小数的十进制

部分。

指数是一个正数、0或负数,代表10的方次,在实数定义内不允许有空格,实数允许取值范围是正

负两范围和零值,true_zero.

negative_range=~1.7E38~-1.7E-38

positive_range=1.7E-38~1.7E38

truezeroo.

(实数变量值用四字节浮点数表示,参见IEEE754)。

BRADR(BRADR)

该数据类型涉及块相对地址。

允许在整数范围内取值:

lowescbradcvalue=0

highest_bradcvalue=+4,294,967,296

(块相对地址用四个字节表示)。

这些取值范围是ICR实施中的最低要求。

6.3文本表达

STRING(STR)

该数据类型是由双引号"川'括起来的一串字符组成,它含有字符串实际长度的信息,字符串中字符

的位置从1开始,其长度在0~255的范围内。

6.4结构数据类型

ICR中结构数据类型如数组和记录不具有显示的数据类型,但在ICR中能定义数组并通过块相对

地址实现在其上的操作。

下面举例说明,在这个例子中的一些ICR元素在以后将详细说明,在任何高级语言中,如下数据的

定义和赋值都有具体规定。

VAR

X:RECORD

K_1:real;

K_2:integer;

K_3:array[1..5Jofinteger;

K_4:array[1..4Jof

RECORD

L_1:real;

L_2:integer;

ENDRECORD;

ENDRECORD;

10

GB/Z20869-2007

Y:integer;

BEGIN

Y:X.K_4[3].L_2;

ENDPROG.

可以用下列语句进行类型说明:

snr,TYPEDEF,4096,1,REAL,1,INT;

snr,DECLVAR,0,1,REAL,O,6,INT,0,4,4096,0,1,INT;

为了存取数组元素并赋值,ICR中提供如下地址管理:

假定X的块相对地址为3

0

元素'x.k_4'的块相对地址→TOS:

o

snr,PUSHBR,BRADR(lO);

内部记录的元素号→TOS:

1

snr,PUSHSZ,4096;元素(L_l,L_2)的号

下标最小界→TOS:

2

snr,PUSHI,#3;

snr,PUSHI,#1;

snr,SUBI;

(以上三行能简化为:"sI汀,PUSHI,#2")

检查下标越界:

snr,PUSHI,#3;TOS<-(upb-lwb=4•1=3)

3

snr,CHECK_BR,error_snr,0;

计算下标所指元素地址:

snr,MULBR;TOS<-TOS养TOS

j2j

snr,ADDBR;TOS<-TOS十TOSo

o1

'L_2'的地址→TOS:

计算记录域

o

snr,ADD_DIST,BRADR(lO),BRADR(ll);

取值并存入变量"Y"中:

sr汀,LOADVD,1;TOS<→在X.K_4[3].L_2中的整数值

o

snr,POPI,BRADROS);

6.5预定义的几何数据类型

POSITION(POS)

该结构类型定义了机器人的位置,包含三个实数:

RECORDX,Y,Z:REAL;END

ORIENTATION(ORD

该结构类型定义了直角坐标系中机器人末端执行器的方向,它是由一个表示方向主义的整数和四

个表示方向值(角和其他参数)的实数组成。方向定义种类的标识码决定四个实数值的意义:

RECORD

orUd:INT;

a,b,c,d:REAL;

END

例中:ori_id=1时,a,b,c,是绕x,y、z关节轴的旋转角度,d为任意值:

ori_id=2时,a,b,c,是绕z、y\和z"关节轴的旋转角度,d为任意值;

oriid=3时,a,b,c,是绕z、yr、x"关节轴的旋转角度,d为任意值;

定制服务