第 4章 系统工件 3D 建模及程序转换模块设计与开发
4.2 程序转换模块研究与开发
4.2.3 RAPID 指令及函数
VERSION:1
LANGUAGE:ENGLISH
%%%
MODULE ABC —— 主模块名 PROC main() —— 主程序 ……
ENDPROC ENDMODULE
文件头
Fig. 4-5 The structure of simple RAPID program 图 4-5 简单 RAPID 程序文件结构
4.2.2 RAPID 数据类型
RAPID 语言的数据类型相当丰富,这些数据类型可以分为两类:基本数据 类型和复合型的数据类型。基本数据类型中有些与一般高级语言的数据类型相似 如:布尔型(bool)、数值型(num)、字符串(string)。
复合型的数据类型是以基本数据类型或者其它复合型数据类型为基本元素,
其通常结合RAPID 指令使用。这种数据类型的种类较多,一般一个指令。常用 的这类数据如下:姿态参数(confdata)、位置参数(pos)、速度参数(speeddata)、
轨迹特征点参数(robtarget)等。
程序中这些数据类型还可以分为三个种类:常量(CONST)、变量(VAR)
变量声明:VAR string author := “John Smith”;
常量声明:CONST num pi := 3.141592654;
留存数据:PERS pos refpnt := [100.23,778.55,183.98];
计算机高级语言的差别所在。RAPID 语言的常用指令大致分为以下几类:
(1)程序流程控制指令
包括Compact IF、IF、FOR、WHILE、TEST、GOTO、label、ProcCall、RETURN 等,这些指令与高级语言的程序流程控制语句相类似,具有循环控制、条件控制、
逻辑判断以及多分支选择控制,其在具体格式上也有相似之处。这些指令没有与 之相对应的数据类型。
(2)运动设置指令
这部分的指令主要对机器人运动的一些参数或状态进行设置的,包括:速度 的设定(VelSet)、加速度的设定(AccSet)、机器人姿态的控制(ConfJ、ConfL)
手爪载荷的设定(GripLoad)等。
(3)运动指令
这部分指令直接控制机器人的运动,因而相对最多,其中常用指令包括:轨 迹运动指令(MoveC、MoveJ、MoveL、MoveAbsJ、MoveCDO、MoveJDO、
MoveLDO)、查找指令(SearchC、SearchL)、运动控制指令(StopMove、StartMove、
ClearPath)及附加轴控制指令(DeactUnit、ActUnit、MechUnit Load)等。
(4)输入输出指令
这部分指令包括InvertDO、PulseDO、Reset、Set、SetAO、SetDO、SetGO、
WaitDI、WaitDO 等,主要是控制机器人与外界的信号传输情况。
(5)通讯指令
RAPID 语言中的通讯指令负责四个渠道的通讯:与示教板之间的通讯、文
本信息的传输、机器人与传感器之间二进制信息的传输及机器人与其它计算机之 间二进制信息的传输。这部分的常用指令主要是指与示教板之间通讯的指令,包 括:TPErase、TPWrite、ErrWrite、TPReadFK、TPReadNum、TPShow。
(6)数学运算指令
在RAPID 语言中,数学运算大多由函数实现,这部分的指令只有 4 条(Add、
Incr、Decr、Clear),用于进行简单加减和清零。此外,加减乘除的数学符号也 可以直接出现在表达式中,实现其运算功能,如:5+reg1*2 可以直接作为某指 令或函数的一个参数使用。
RAPID 语言中有函数 71 个。包括常用的一些数学函数,如三角函数(Cos、
Sin、Tan 等),指数、平方根、绝对值运算(Exp、Sqrt、Abs);字符串操作函数
(StrFind、StrLen、StrMatch 等);以及一些与机器人运动、设置或机器人参数 计算相关的函数。其中数学函数、字符串操作函数的结构也与高级语言有相似之 处。
4.2.4 程序转换模块设计
通过对系统程序数据存储格式及 RAPID 语言特征的分析,使用类封装程序 转换过程。通过转换模块生成的机器人语言以文本文件的形式保存,可以通过软
盘或网络接口下载至 IRB140 机器人的控制柜使用。转换模块功能示意图如图 4
-6 所示。
Fig. 4-6 The sketch map of program conversion module’s function 图 4-6 程序转换模块功能示意图
充分利用到系统的结构链表,采取边读取、边转换、边写出机制,从而减少 系统数据结构的定义,提高系统执行效率。转换函数主体根据指令序列链表中的 待转换的指令类型,调用相应的子函数进行转换。转换主体函数的工作流程如图 4-7 所示。
Fig. 4-7 The work flow of the main function of program conversion
创建目标程序时,以文件名作为程序的主模块名。故文件名的命名规则必须和 RAPID 语法中规定的一致。依次读取 instruction 结构链表的每个结点,根据结点 中的instr_type 所存储的指令类型和指令编号信息,然后判断是哪一条指令并在 该指令的数据结构链中找到该指令。将这条指令存储在结构体中的参数或通过调 用函数计算所得的参数,以RAPID 语言的格式写入翻译的目标文件,并显示于 转换模块界面,如图4-8 所示。在这里,可以启用操作系统的记事本进一步编 辑转换后的机器人程序,或是进入程序下载界面,下载运行该程序。
Fig. 4-8 The conversion result in program conversion interface 图 4-8 程序转换界面显示的转换结果