ABB机器人RAPID指令中文

更新时间:2024-05-29 16:12:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

RAPID参考手册 指令

1

1.指令1.1.AccSet—降低加速度 用途:

当处理较大负载时使用AccSet指令。它允许减慢加速度和减速度,使机器人有一个更平滑的运动。 该指令只能在主任务T_ROB1中使用,或者如果处于多运动系统,在Motion任务中。 基本范例:

AccSet的基本范例说明如下。 例1 AccSet 50,100;

加速度备限制到正常值的50%。 例2 AccSet 100,50;

加速度斜线限制到正常值的50%。 项目:

AccSet Acc Ramp Acc:

数据类型:num(数值)

加速度和减速度作为正常值的百分比。100%对应最大加速度。最大值:100%。输入值<20%则给出最大加速度的20%。 Ramp 数据类型:num(数值) 加速度和减速度的增加作为正常值的百分比的比例(如图)。通过减小这个数值可以限制震动。100%对应最大比例。最大值:100%,输入值<10%则给出最大比例的10%。 下图说明减小加速度可以平滑运动。 加速度 加速度 加速度

时间 时间 时间 AccSet 100,100 正常加速度 AccSet 30,100 AccSet 100,30 程序执行: 该加速度值应用到机器人和外部轴,直到一个新的AccSet指令执行。 缺省值(100%)在以下情况是自动设置:

z 冷启动

z 加载了新的程序 z 从头开始执行程序时 语法:

AccSet [AccSet “:=”]<数值表达式(IN)>“,”[Ramp “:=”]<数值表达式(IN)>“;” 相关信息: 有关信息

在世界坐标系统中控制加速度 沿着路径降低TCP加速度

参看

第590页WorldAccLim--在世界坐标系统中控制加速度第265页PathAccLim—沿路径降低TCP加速度

定位指令 RAPID参考手册-RAPID概述,RAPID摘要部分-运动

2

1.2.ActUnit—激活一个机械单元

用途:

ActUnit用来激活一个机械单元。 例如当使用普通驱动单元的时候,它可以用来决定哪一个单元被激活。 该指令只能在主任务T_ROB1中使用,或者如果处于多运动系统,在Motion任务中。 基本范例:

ActUnit的基本范例说明如下: 例1 ActUnit orbit_a;

orbit_a机械单元的激活。 项目:

AccUnit MechUnit MechUnit: 机械单元 数据类型:mecunit(机械单元) 要激活的机械单元的名称。 程序执行: 当机器人的和外部轴的实际路径准备好以后,整个路径被清理并且特定的机械单元被激活。这意味着它被机器人控制和监视。 如果多个机械单元共享一个普通驱动单元,这些单元中的一个的激活,也将把该单元连接到普通驱动单元。 限制: 如果在该指令之前有一个运动指令,那个指令的程序中必须带有停止点(区域数据fine),而不是一个通过点,否则将不能进行电源失败后的重启。

AccUnit指令不能在连接到以下任何特定的系统事件的RAPID程序中执行:电源上电,停止,Q停止,重启或者复位。 语法:

ActUnit [MechUnit “:=”]<机械单元变量(VAR)>“;” 相关信息: 相关信息 废除机械单元 机械单元 更多例子

参照

第69页DeactUnit—废除一个机械单元 第969页MecUnit—机械单元

第69页DeactUnit—废除一个机械单元

3

1.3.Add—增加一个数字数值

用途:

Add用于增加一个数值到一个数字变量或恒量,或者从一个数字变量或者恒量中减去一个数值。 基本范例:

Add的基本范例说明如下: 例1 Add reg1,3;

3被增加到reg1,即reg1=reg1+3。 例2 Add reg1,—reg2

从reg1减去reg2,即reg1=reg1-reg2。 项目:

Add Name AddValue Name:

数据类型:数字

将要改变的变量或者恒量的名称。 AddValue: 数据类型:数字 要增加的数值。 语法:

Add [Name “:=”]<数字的变量或者恒量(INOUT)>“,”[AddValue“:=”]<数字表达式(IN)>“;” 相关信息: 相关的信息

参看

给变量加1 Incr—增加1,第117页 改变量减1 Decr—减1,第71页 使用一个任意的表达式改变数据,例如乘法

“:=”—赋值,第19页

4

1.4.AliasIO—用别名定义I/O

用途:

AliasIO用来用别名定义一个任意类型的信号,或者用来在内置(built-in)任务模块中使用信号。 在不同的机器人安装中,带别名的信号可以被用来预定义常规程序,而不用在运行之前进行任何的程序更新。 在任何实际信号的使用之前,必须运行AliasIO指令。参看第17页的基本范例来加载模块,第18页更多范例来安装模块。 基本范例: 指令AliasIO的基本范例说明如下: 也可参看第18页更多范例 例1 VAR signaldo alias_do; PROC Prog_start() AliasIO config_do,alias_do; ENDPROC 程序prog_start链接到系统参数的START事件。程序定义的数字输出信号alias_do链接到程序开头配置的数字输出信号config_do。 项目:

AliasIO FromSignal, ToSignal; FromSignal: 数据类型:signalxx 或者字符串。

加载的模块:

信号标识符按照配置(数据类型signalxx)命名,信号描述符也从配置中复制。信号必须在IO配置中定义。 安装的模块或者加载的系统模块:

一个相关(CONST、VAR、PERS或者它们的参数)包含信号(数据类型string字符串)的名称,从该信号中,信号描述符在系统中搜索后被复制。信号必须在IO配置中定义。 ToSignal: 数据类型:signalxx 信号标识符按照程序(数据类型signalxx)命名,信号描述符复制到该系统中。信号必须在RAPID程序中声明。

FromSignal和ToSignal项目必须使用(或者找到)相同的数据类型,并且必须是类型signalxx(signalai,signalao,signaldi,signaldo,signalgi或者signalgo)中的一个。 程序执行: 信号描述符数值从FromSignal项目给出的信号复制到ToSignal项目给出的信号。 更多范例: 指令AliasIO的更多范例说明如下。 例1 VAR signaldi alias_di;

PROC prog_start( ) CONST string config_string :=”config_di”; AliasIO config_string,alias_di; ENDPROC

程序prog_start链接到系统参数中的START事件。程序定义的数字输入信号alias_di链接到程序开头配置的数字输入信号config_di(通过常量config_string)。 限制:

当开始程序的时候,别名信号直到AliasIO指令执行之后才能使用。

5

指令AliasIO必须放置在

?? 或者在程序开始(事件START)时执行的事件程序中

?? 或者在每一个程序开始之后(信号使用之前)执行的程序部分。

为了防止错误,不推荐使用把AliasIO信号动态重新链接到不同的物理信号。

语法:

AliasIO [FromSignal “:=”]<任意类型的相关(REF)>“,”

[ToSignal“:=”]<任意类型的变量(VAR)>“;” 相关信息: 相关信息

参看

输入/输出指令 RAPID参考手册-RAPID概述,RAPID摘要部分-输入和输出信号 通常的输入输出功能性 RAPID参考手册-RAPID概述,运动和I/O原理部分-I/O原理 I/O配置 定义事件程序 加载/安装任务模块

技术相关手册-系统参数 技术相关手册-系统参数 技术相关手册-系统参数

6

1.5.“:=”—赋值

用途: “:=”指令用来给数据赋一个新值。这一个值可以是包括从常量值到任意的表达式中的任何一个。例如reg1+5*reg3。 基本范例: 指令的基本范例说明如下。 也可参见第19页更多范例。 例1 reg1:=5;

数值5赋给reg1。 例2 reg1:=reg2-reg3;

reg2-reg3计算返回的数值赋给reg1。 例3 counter:=counter+1;

counter增加1。 项目: Data:=Value Data: 数据类型:所有 将被赋新值的数据。 Value: 数据类型:和Data一样。 期望的数值。 更多范例: 该指令的更多范例说明如下。 例1 tool1.tframe.trans.x:=tool1.tframe.trans.x+20;

tool1的TCP在X方向上移动20毫米。 例2 pallet{5,8}:=Abs(value)

pallet矩阵的一个元素被赋予一个等于value变量的绝对值的数值。 限制: 数据(将被改变数值的)不可以是: 常量 非数值数据类型 数值或者数据必须有相似的(相同的或者别名的)数据类型。 语法:

(EBNF) <赋值目标>“:=”<表达式>“;” <赋值目标>::=<变量>|<恒量>|<参数>| 相关信息: 相关信息

参看

表达式 RAPID参考手册-RAPID概述,基本特性部分-表达式 非数值数据类型 RAPID参考手册-RAPID概述,基本特性部分-数据类型 给数据赋一个初始数值

操作员手册-IRC5和FlexPendant,FlexPendant部分编辑数据实例

7

1.6.BitClear—在一个字节数据中清除一个特定位

用途:

BitClear用来清除(设为0)定义的字节数据中一个特定的位。 基本范例: 该指令的基本范例说明如下。 例1 CONST num parity_bit:=8;

VAR byte data1:=130; BitClear data1,parity_bit;

变量data1中位号8(parity_bit)将设为0,例如变量data1的内容将从130变成2(整数表示法)。当使用BitClear时数据类型byte的位操作在下图有说明。

项目:

BitClear BitData BitPos BitData: 数据类型:字节 整型表示法的位数据,将被改变的数据。 BitPos: 数据类型:数字

BitData中将被设为零的位的位置(1-8)。 限制: 字节数据类型的范围是十进制的0-255。 有效的位的位置为1-8。 语法:

BitClear [BitData ‘:=’]<字节变量或者恒量(INOUT)>’,’[BitPos’:=’]<数字表达式(IN)>’;’ 相关信息: 相关信息

参看

在字节数据中设定一个特定的位 BitSet—在字节数据中设定一个特定的位,第23页 检查字节数据中特定的位是否被设置 BitCheck—检查字节数据中特定的位是否被设置,第654页 位的其他功能 RAPID参考手册-RAPID概述,RAPID摘要部分-数学-位功能

8

1.7.BitSet—在字节数据中设定一个特定的位

用途:

BitSet用来在定义的字节数据中把一个特定位设为1。 基本范例: 该指令的基本范例说明如下。 例1 CONST num parity_bit:=8;

VAR byte data1:=2; BitSet data1 parity_bit;

变量data1中位号8(parity_bit)将设为1,例如变量data1的内容将从2变成130(整数表示法)。当使用BitClear时数据类型byte的位操作在下图有说明。

项目:

BitSet BitData BitPos BitData: 数据类型:字节 整型表示法的位数据,将被改变的数据。 BitPos: 位的位置 数据类型:数字

BitData中将被设为零的位的位置(1-8)。 限制: 字节数据类型的范围是十进制的0-255。 有效的位的位置为1-8。 语法: BitSet [BitData ‘:=’]<字节变量或者恒量(INOUT)>’,’[BitPos’:=’]<数字表达式(IN)>’;’ 相关信息: 相关信息

参看

在字节数据中清除一个特定的位 BitClear—在字节数据中清除一个特定的位,第23页 检查字节数据中特定的位是否被设置 BitCheck—检查字节数据中特定的位是否被设置,第654页 位的其他功能 RAPID参考手册-RAPID概述,RAPID摘要部分-数学-位功能

9

1.8.BookErrNo—定制一个RAPID系统错误号码

用途:

BookErrNo用来定制一个新的RAPID系统错误号码。 基本范例: 该指令的基本范例说明如下: 例1 !Introduce a new error number in a glue system

!Note: The new error variable must be declared with the initial value –1; VAR errnum ERR_GLUEFLOW:=-1;

!Book the new RAPID system error number BookErrNo ERR_GLUEFLOW;

变量ERR_GLUEFLOW将被赋给一个空闲的系统错误号码,将在RAPID代码中使用。 !Use the new error number IF dil=0 THEN RAISE ERR_GLUEFLOW; ELSE …

ENDIF

Error handling ERROR IF ERRNO=ERR_GLUEFLOW THEN …. ELSE … ENDIF 如果数字输入dil是0,新定制的错误号码将被提出并且系统错误变量ERRNO将被设定到新定制的错误号码。这些用户产生的错误的错误处理然后可以像平常一样在错误处理器中处理。 项目:

BookErrNo ErrorName ErrorName: 数据类型:errnum 新的RAPID系统错误变量名称。 限制: 新的错误变量不可以像程序变量一样被声明。 新的错误变量必须带初始值-1声明,这就给出一个信息:该错误应该是一个RAPID系统错误。 语法: BookErrNo [ErrorName ‘:=’] ‘;’ 相关信息: 相关信息

参看

错误处理 RAPID参考手册-RAPID概述,基本特性部分-错误恢复 错误号码 Errnum—错误号码,第941页

调用一个错误处理器 RAISE—调用一个错误处理器,第303页

10

1.16.ClearRawBytes—清除原始字节数据的内容

用途:

ClearRawBytes用来把原始字节变量的所有内容设为0。 基本范例: 指令的基本范例说明如下。 例1 VAR rawbytes raw_data;

VAR num integer :=8 VAR num float :=13.4;

PackRawBytes integer, raw_data, 1 \\IntX :=DINT;

PackRawBytes float,raw_data, (RawBytesLen(raw_data)+1) \\Float4;

ClearRawBytes raw_data \\FromIndex :=5;

在前4个字节里,放入integer的数值(从索引1开始),从索引5开始的后4个字节里放入了float的数值。 例子中的最后一个指令清除了Raw_data 的内容,从索引5开始,例如float将被清除,但是integer被保存在raw_data 中。当前Raw_data中有效字节的长度被设为4。 项目:

ClearRawbytes RawData [ \\FromIndex ] RawData: 数据类型:原始字节

RawData是将被清除的数据容器。 [ \\FromIndex ]: 数据类型:数字 带有指定的[ \\FromIndex ],将从[ \\FromIndex ]开始清除RawData的内容。 一直到头的所有东西都被清除。 如果没有指定[ \\FromIndex ],从索引1开始的所有数据将被清除。 程序执行: 在指定的变量中,从索引1(缺省)开始或者从\\FromIndex开始的数据被复位到0。 指定变量中有效字节的当前长度被设为0(缺省)或者如果\\FromIndex使用的话为(\\FromIndex-1)。 语法: ClearRawBytes [RawData ‘:=’]<原始字节类型的变量(VAR)>

[‘\\’FromIndex’:=’<数字类型的表达式(IN)>] ’ ; ’

相关信息: 相关信息

参看

原始字节的数据 Rawbytes—原始数据,第994页

得到原始字节数据的长度 RawBytesLen—得到原始字节数据的长度,第806页 复制原始字节数据的内容 CopyRawBytes—复制原始字节数据的内容,第58页

将设备网标题打包进原始字节数据 PackDNHeader—将设备网标题打包进原始字节数据,第258页 将数据打包进原始字节数据 PackRawBytes—将数据打包进原始字节数据,第261页 写入原始字节数据 WriteRawBytes—写入原始字节数据,第604页 读取原始字节数据 ReadRawBytes—读取原始字节数据,第319页

从原始字节数据将数据拆包 UnpackRawBytes—从原始字节数据中将数据拆包,第556页

21

1.17.ClkReset—复位一个用来计时的时钟

用途:

ClkReset用来复位一个用来计时的停止监视功能的时钟。该指令在使用时钟指令之前使用,用来确保它归零。

基本范例: 该指令的基本范例说明如下。 例1 CleReset Clock1;

时钟Clock1 被复位。 项目:

ClkReset Clock Clock: 数据类型:时钟 要复位的时钟的名称。 程序执行: 当时钟被复位,它被设为0。 如果时钟正在运行,它将被停止然后复位。 语法: ClkReset [ Clock ‘:=’ ] <时钟类型的变量(VAR)> ‘;’ 相关信息: 相关信息

参看

其他时钟指令 RAPID参考手册-RAPID概述,RAPID摘要部分-系统

和时间

22

1.18.ClkStart—开始一个用来计时的时钟

用途:

ClkStart用来开始一个用于计时的停止-监视功能的时钟。 基本范例: 该指令的基本范例说明如下。 也可参看第43页的更多范例。 例1 ClkStart Clock1

时钟Clock1 开始计时。 项目:

ClkStart Clock Clock: 数据类型:时钟 将要开始计时的时钟的名称。 程序执行: 当时钟开始计时,它将运行并且继续计秒直到它停止。当让它开始计时的程序停止的时候,时钟继续运行。但是,你想要计时的事件可能不再有效。例如,如果程序测量输入的等待时间,当程序停止的时候,输入已经被接收。在这种情况下,当程序停止的时候,程序将不能“看到”事件的发生。 当机器人电源断电的时候,只要备份电池保留包含时钟变量的程序,始终将继续运行。 如果时钟正在运行,它可以被读取、停止或者复位。 更多范例: 该指令的更多范例说明如下。 例1 VAR clock clock2;

VAR num time;

ClkReset clock2; ClkStart clock2; WaitUntil dil =1; ClkStop clock2; Time:=ClkRead(clock2);

Dil变成1的等待时间被测量。 错误处理: 如果时钟运行了4,294,967秒(49天17个小时2分钟47秒),它将超载并且系统变量ERRNO被设成ERR_OVERFLOW。 该错误可以在错误处理器中处理。 语法: ClkStart [ Clock ‘:=’ ] <时钟类型的变量(VAR)> ‘;’ 相关信息: 相关信息

描述在

其他时钟指令 RAPID参考手册-RAPID概述,RAPID摘要部分-系统和时间

23

1.19.ClkStop—停止一个用来计时的时钟

用途:

ClkStop用来停止一个用于计时的停止-监视功能的时钟。 基本范例: 该指令的基本范例说明如下。 ClkStop Clock1

时钟Clock1 停止计时。 项目:

ClkStop Clock Clock: 数据类型:时钟 将要停止计时的时钟的名称。 程序执行: 当时钟停止计时,它将停止运行。 如果时钟被停止,它可以被读取、再次开始或者复位。 错误处理: 如果时钟运行了4,294,967秒(49天17个小时2分钟47秒),它将超载并且系统变量ERRNO被设成ERR_OVERFLOW。 该错误可以在错误处理器中处理。 语法: ClkStop [ Clock ‘:=’ ] <时钟类型的变量(VAR)> ‘;’ 相关信息: 相关信息

参看

其他时钟指令 RAPID参考手册-RAPID概述,RAPID摘要部分-系统和时间 更多例子 ClkStart—开始一个用来计时的时钟,第43页

24

1.20.Close—关闭一个文件或者串行通道

用途:

Close用来关闭一个文件或者串行通道。 基本范例: 该指令的基本范例说明如下。 例1 Close channel2;

被channel2相关到的串行通道被关闭。 项目:

Close IODevice IODevice: 数据类型:iodev 将要被关闭的文件或者串行通道的名称(相关)。 程序执行: 指定的文件或者串行通道被关闭并且在读或写之前必须重新打开。如果它已经被关闭,该指令被忽略。 语法: Close [ IODevice ‘:=’ ] ‘;’ 相关信息: 相关信息

参看

打开一个文件或者串行通道 RAPID参考手册-RAPID概述,RAPID摘要部分-通讯

25

1.21.CloseDir—关闭一个目录

用途:

CloseDir用来关闭一个目录,和OpenDir达到平衡。 基本范例: 该指令的基本范例说明如下。 例1 PROC lsdir(string dirname)

VAR dir directory; VAR string filename;

OpenDir directory,dirname;

WHILE ReadDir(directory,filename) DO TPWrite filename; ENDWHILE

CloseDir directory; ENDPEOC

该例子打印出指定目录下所有文件或者子目录名称。 项目: CloseDir Dev Dev: 数据类型:dir 一个相关到OpenDir指令取得的目录的变量。 语法: CloseDir[ Dev’:=’ ] ‘;’ 相关信息: 相关信息

参看

目录 Dir—文件目录结构,第938页

制作一个目录 MakeDir—创建一个新的目录,第192页 打开一个目录 OpenDir—打开一个目录,第256页

读取一个目录 ReadDir—在一个目录中读取下一个入口,第810页 删除一个目录 RemoveDir—删除一个目录,第322页 删除一个文件 RemoveFile—删除一个文件,第324页 重新命名一个文件 RenameFile—重新命名一个文件,第325页

26

1.22.comment—注释

用途:

comment只是用来使程序容易理解。对程序的执行没有影响。 基本范例: 该指令的基本范例说明如下。 例1 !Goto the position above pallet

MoveL p100, v500, z20, tool1;

一个注释被插入程序,使程序更容易理解。 项目: !Comment Comment: 文本字符串。 任何文本。 程序执行: 执行该指令的时候不会发生什么。 语法: (EBNF) ‘!’{<字母>} 相关信息: 相关信息

参看

注释中允许的字母 RAPID参考手册-RAPID概述,基本特征部分-基本元素 数据或者程序声明中的注释 RAPID参考手册-RAPID概述,基本特征部分-基本元素

27

1.23.Compact IF—如果满足一个条件,那么。。。(执行一个指令)

用途: 如果满足一个给定的条件,只有将执行一个单一指令的时候才使用Compact IF。 如果不同的指令将被执行,取决于给定的条件是否满足,使用IF指令。 基本范例: 该指令的基本范例说明如下: 例1 IF reg1 >5 GOTO next;

如果reg1大于5,程序继续从下一个标签执行。 例2 IF conter >10 Set do1;

如果conter >10,那么do1信号被设置。 项目:

IF Condition… Condition: 数据类型:bool 指令的执行必须满足的条件。 语法: (EBNF) IF<条件表达式>(<指令> | ) ‘;’ 相关信息: 相关信息

参看

条件(逻辑表达式) RAPID参考手册-RAPID概述,基本特性部分-表达式 IF 带多个指令 IF—如果一个条件满足,那么。。。;否则。。。,第115页

28

1.24.ConfJ—在关节运动过程中控制配置

用途:

ConfJ(配置关节)用来指定在关节运动过程中是否控制机器人配置。如果不控制,机器人有时候会使用与程序中不同的配置。 ConfJ \\Off时,机器人不能转变主轴配置-它将寻找和当前途径具有相同主轴配置的途径,但是它移动到轴4和轴6的最近的腕配置。 该指令只能使用在主任务中,或者在多运动系统中,使用在运动任务中。 基本范例: 该指令的基本范例说明如下。 例1 ConfJ \\Off;

MoveJ *, v1000, fine, tool1;

机器人移动到编程位置和方向。如果该位置可以用多种不同的方式到达、用多种轴配置,将选择最近的可能位置。 例2 ConfJ \\On;

MoveJ *, v1000, fine, tool1;

机器人移动到程序中的位置、方向和轴配置。如果这是不可能的,程序执行将停止。 项目:

ConfJ [\\On] | [\\Off ] [\\On]: 数据类型:switch 机器人通常移动到遍编程中的轴配置。如果不能使用编程中的位置和方向,程序执行停止。

IRB5400机器人将移动到程序中的轴配置或者是接近程序中的轴配置的轴配置。如果它不能到达程序中的轴配置的话,程序的执行也不会停止。 [\\Off]: 数据类型:switch 机器人通常运动到最接近的轴配置。 程序执行: 如果选择了项目\On( 或者没有选择项目),机器人通常运动到编程的轴位置。不过不能使用程序中的位置和方向,在运动开始之前程序执行就停止。 如果选择了项目\\Off,机器人通常运动到最近接的轴配置。如果配置被错误地手动指定,或者如果执行了程序移植,这将可能和程序中的不一样。 控制配置(ConfJ \\On)是缺省值。这被自动设置:

?? 冷启动时

?? 新程序被加载 ?? 从头开始程序执行

语法: ConfJ [ ‘\\’ On] | [ ‘\\’ Off] ‘;’ 相关信息: 相关信息

参看

处理不同的配置 RAPID参考手册-RAPID概述,运动和I/O原理部分-机器人配置 线性运动中的机器人配置 ConfL—在线性运动过程中监视配置,第52页

29

1.25.ConfL—在线性运动过程中监视配置

用途:

ConfJ(配置关节)用来指定在线性或者圆周运动过程中是否监视机器人配置。如果不监视,执行时候的配置可能和程序中的配置不一样。当模式改变为关节运动的时候,也可能导致不可预知的清扫机器人运动。 该指令只能使用在主任务中,或者在多运动系统中,使用在运动任务中。 注意!在IRB5400机器人中,无论在ConfL中怎么指定,监视总是关闭的。 基本范例: 该指令的基本范例说明如下。 例1 ConfL \\On;

MoveL *, v1000, fine, tool1;

当从当前位置不能到达程序中的配置时,程序执行停止。 例2 SingArea \\Wrist;

ConfL \\On;

MoveL *, v1000, fine, tool1;

机器人运动到编程位置、方向和腕部轴配置。如果不能到达,程序执行停止。 例3 ConfL \\Off;

MoveJ *, v1000, fine, tool1;

机器人移动到程序中的位置和方向,但是到达最近的可能轴配置,这可能和程序中的轴位置不同。 项目: ConfL [\\On] | [\\Off ] [\\On]: 数据类型:switch 机器人配置被监视。 [\\Off]: 数据类型:switch 机器人配置不被监视。 程序执行: 在线性或者圆周运动过程中,机器人通常运动到拥有最接近的可能轴配置的程序中的位置和方向。如果选择了项目\On( 或者没有选择项目),如果有从当前位置不能到达程序中的位置的风险,程序执行立即停止。然而,虽然腕部轴可能继续朝错误的配置运动,仍旧可以重启程序。在停止点,机器人将检查所有轴的配置是否都到达,不仅仅是腕部轴。 如果也使用了SingArea \\Wrist,机器人总是运动到程序中的腕部轴配置,并且在停止点将检查剩余的轴配置。 如果选择了项目\\Off,就没有监视。 对于ConfL \\On 和\\Off,避免问题的一个简单的规则就是插入中间点,使点之间的每一个轴的运动小于90度。更精确地说,任意一对轴(1+4),(1+6),(3+4),(3+6)的运动的和不应该超过180度。 如果在一个大运动中使用了ConfL \\Off,带错误50050位置不能到达或者错误50080位置不匹配的程序,可能导致直接或者延迟停止。在带有ConfL \\Off的程序中,推荐运动到带“ConfJ \\On+MoveJ”或者“ConfL \\On+SingArea\\Wrist +MoveL”作为为不同的程序部分的开始点的已知配置点。 监视被激活是缺省值。这被自动设置:

?? 冷启动时 ?? 新程序被加载 ?? 从头开始程序执行

语法:

30

CopyRawBytes不能用来从一个rawbytes变量中的一些数据复制到同一个rawbytes变量的其它部分。 语法:

CopyRawBytes [FromRawData ‘:=’ ] < rawbytes类型的变量(VAR)>’ , ‘ [FromIndex’ :=’ ] < num类型的表达式(IN)> ‘,’ [ToRawData’ :=’ ] < rawbytes类型的变量(VAR)>’ , ‘ [ToIndex’ :=’ ] < num类型的表达式(IN)> [‘\\’NoOfBytes’ :=’ < num类型的表达式(IN)> ]’;’ 相关信息: 相关信息 Rawbytes数据

获得rawbytes数据的长度 清除rawbytes数据的内容

把设备网的标题打包进rawbytes数据 把数据打包进rawbytes数据 写rawbytes数据 读rawbytes数据

从rawbytes数据解压数据

参看

第994页rawbytes—原始数据

第806页RawBytesLen—获得rawbytes数据的长度 第40页ClearRawBytes—清除rawbytes数据的内容

第258页PackDNHeader—把设备网标题打包进rawbytes数据 第261页PackRawBytes—把数据打包进rawbytes数据 第604页WriteRawBytes—写rawbytes数据 第319页ReadRawBytes—读rawbytes数据

第556页UnpackRawBytes—从rawbytes数据中解压数据

36

1.29.CorrClear—删除所有修正发生器

描述:

CorrClear用来删除所有连接的修正发生器。该指令用来删除所有之前由修正发生器提供的偏移。 基本范例: 该指令的基本范例说明如下: 例1 CorrClear;

该指令删除所有连接的修正发生器。 注意:

确保所有修正发生器(已连接的)在程序开始的时候都被删除的一个简单方法是在START事件routine中运行CorrClear。参看系统参数—标题:控制器 语法:

CorrClear ‘;’ 相关信息: 相关信息

连接到修正发生器 从修正发生器断开连接 写修正发生器 读取当前总偏移量 修正描述符

参看

第61页CorrCon—连接到一个修正发生器 第66页CorrDiscon—从修正发生器断开连接 第67页CorrWrite写修正发生器 第685页CorrRead—读取当前总偏移量 第934页corrdescr—修正发生器描述符

37

1.30.CorrCon—连接到一个修正发生器

用途:

CorrCon用来连接到一个修正发生器。 基本范例: 该指令的基本范例说明如下: 也可参照第61页更多范例。 例1 VAR corrdescr id;

CorrCon id;

参考的修正发生器符合变脸id的预定。 项目:

CorrCon Descr Descr: 数据类型:corrdescr 修正发生器的描述符。 更多范例: 该指令得更多范例说明如下: 路径坐标系统: 所有路径修正(路径上的偏移量)都被加入路径坐标系统。路径坐标系统按照以下说明定义: P=路径坐标系统 T=工具坐标系统

z 路径坐标X轴作为路径的正切值被给出。

z 路径坐标Y轴由工具坐标轴Z和路径坐标轴X交叉产生。 z 路径坐标轴Z由路径坐标轴X和路径坐标轴Y交叉产生。 应用范例: 用路径修正的一个应用实例是机器人拿着装有两个传感器的工具,监测到到工作对象的垂直和水平距离。下图说明了路径修正装置。

程序范例:

CONST num TARGET_DIST := 5; CONST num SCALE_FACTOR := 0.5; VAR intnum intno1; VAR corrdesc hori_id; VAR corrdesc vert_id; VAR pos total_offset; VAR signalai hori_sig; VAR signalai vert_sig; VAR pos write_offset;

PROC PathRoutine( ) ! 连接到修正发生器寻找水平和垂直方向。 CorrCon hori_id; CorrCon Vert_id;

38

!设定一个5赫兹的计时器中断。陷阱程序将读取传感器数值并计算路径修正值。 CONNECT intno1 WITH ReadSensors; Itimer\\singel 0.2, intno1 ! 计时器跟踪开始的位置。 MoveJ P10,v100,z10,tool1; !用垂直和水平方向运行MoveL。 MoveL p20,v100,z10,tool1\\Corr; ! 读取所有修正发生器增加的总的修正值。 Total_offset := CorrRead( ); ! 在示教器上写出垂直修正的总数。 TPWrite “垂直修正的总数是:”\\Num:=total_offset.z; ! 断开垂直方向上修正发生器的连接。谁拼修正将不受影响。 CorrDiscon vert_id; ! 只在水平中断方向上运行MoveL。 MoveL p30,v100,z10,tool1 \\Corr; ! 删除所有突出连接的修正发生器。

!在这种情况下,仅存的修正发生器就是水平方向的修正发生器。

CorrClear; !删除计时器中断。 IDelete intno1; ENDPROC

TRAP ReadSensors ! 计算水平修正值并进行修正。 Write_offset.x := 0; Write_offset.y := (hori_sig – TARGET_DIST) *SCALE_FACTOR; Write_offset.z :=0; CorrWrite hori_id, write_offset; ! 计算垂直修正值并进行修正。 Write_offset.x := 0; Write_offset.y := 0; Write_offset.z := (vert_sig – TARGET_DIST) *SCALE_FACTOR; CorrWrite vert_id, write_offset; ! 再次设定中断。 IDelete intno1; CONNECT intno1 WITH R诶的Sensors; ITimer\\singel 0.2, intno1; ENDTRAP 程序解释: 两个修正发生器用指令CorrCon连接。每一个修正发生器用一个独立的corrdesc类型的描述符(hori_id和vert_id)参考。 两个传感器每一个都用一个修正发生器。 设置了一个计时器中断以5赫兹的频率来调用陷阱程序ReadSensors。路径修正需要的偏移量在陷阱程序中计算并且通过指令CorrWrite被写到相应的修正发生器(由hori_id和vert_id参考)。所有的修正将会立即对路径起影响。当使用路径修正器的时候,MoveL指令必须使用可选项目Corr来编程。否则,将不会执行修正。 当第一个MoveL指令准备好的时候,用CorrRead功能来读取由所有连接的修正发生器提供的所有的修正的总数(路径修正总数)。总的垂直路径的修正的结果用TPWrite指令写到示教器上。

CorrDiscon将断开垂直修正(由描述符vert_id参考)的修正发生器。由该修正发生器添加的所有修正将从

39

总路径修正中删除。由水平修正的修正发生器添加的修正仍旧保留。 最后,CorrClear功能将删除所有保留的连接修正发生器和之前累加的修正。在这种情况下,只有水平修正的修正发生器将被删除。计时器中断也将由Idelete指令删除。 修正发生器: 下图说明了修正发生器。

X Y z 路径坐标轴

0 0 3 垂直修正发生器,带有它自身修正的总数

0 1 0 水平路径发生器,带有它则身修正的总数

- - - 没连接的修正发生器

- - - 没连接的修正发生器

- - - 没连接的修正发生器

0 1 3 由所有连接的修正发生器完成的所有修正的总数

限制: 最多可以同时连接5个修正发生器。连接的修正发生器控制器重启后不能幸存。 语法:

CorrCon [ Descr ‘ :=’ ] < corrdiscr类型的变量(VAR)> ‘;’ 相关信息: 相关信息 断开修正发生器 写入修正发生器 读取当前总偏移量 删除所有修正发生器 修正发生器描述符

参看

第66页CorrDiscon—断开修正发生器 第67页CorrWrite—写入修正发生器 第685页CorrRead—读取当前总偏移量 第60页CorrClear—删除所有修正发生器 第934页corrdescr—修正发生器描述符

40

本文来源:https://www.bwwdw.com/article/c2y6.html

Top