06_ABB机器人常用指令详解-中文(二)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
RAPID参考手册指令
1.指令
1.1.AccSet—降低加速度
用途:
当处理较大负载时使用AccSet指令。
它允许减慢加速度和减速度,使机器人有一个更平滑的运动。
该指令只能在主任务T_ROB1中使用,或者如果处于多运动系统,在Motion任务中。
基本范例:
AccSet的基本范例说明如下。
例1AccSet 50,100;
加速度备限制到正常值的50%。
例2AccSet 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%)在以下情况是自动设置:
●冷启动
●加载了新的程序
●从头开始执行程序时
语法:
AccSet [AccSet “:=”]<数值表达式(IN)>“,”[Ramp “:=”]<数值表达式(IN)>“;”
相关信息:
1.2.ActUnit—激活一个机械单元
用途:
ActUnit用来激活一个机械单元。
例如当使用普通驱动单元的时候,它可以用来决定哪一个单元被激活。
该指令只能在主任务T_ROB1中使用,或者如果处于多运动系统,在Motion任务中。
基本范例:
ActUnit的基本范例说明如下:
例1 ActUnit orbit_a;
orbit_a机械单元的激活。
项目:
AccUnit MechUnit
MechUnit:
机械单元
数据类型:mecunit(机械单元)
要激活的机械单元的名称。
程序执行:
当机器人的和外部轴的实际路径准备好以后,整个路径被清理并且特定的机械单元被激活。
这意味着它被机器人控制和监视。
如果多个机械单元共享一个普通驱动单元,这些单元中的一个的激活,也将把该单元连接到普通驱动单元。
限制:
如果在该指令之前有一个运动指令,那个指令的程序中必须带有停止点(区域数据fine),而不是一个通过点,否则将不能进行电源失败后的重启。
AccUnit指令不能在连接到以下任何特定的系统事件的RAPID程序中执行:电源上电,停止,Q停止,重启或者复位。
语法:
ActUnit [MechUnit “:=”]<机械单元变量(V AR)>“;”
相关信息:
1.3.Add—增加一个数字数值
用途:
Add用于增加一个数值到一个数字变量或恒量,或者从一个数字变量或者恒量中减去一个数值。
基本范例:
Add的基本范例说明如下:
例1Add reg1,3;
3被增加到reg1,即reg1=reg1+3。
例2Add reg1,—reg2
从reg1减去reg2,即reg1=reg1-reg2。
项目:
Add Name AddV alue
Name:
数据类型:数字
将要改变的变量或者恒量的名称。
AddV alue:
数据类型:数字
要增加的数值。
语法:
Add [Name “:=”]<数字的变量或者恒量(INOUT)>“,”[AddV alue“:=”]<数字表达式(IN)>“;”相关信息:
1.4.AliasIO—用别名定义I/O
用途:
AliasIO用来用别名定义一个任意类型的信号,或者用来在内置(built-in)任务模块中使用信号。
在不同的机器人安装中,带别名的信号可以被用来预定义常规程序,而不用在运行之前进行任何的程序更新。
在任何实际信号的使用之前,必须运行AliasIO指令。
参看第17页的基本范例来加载模块,第18页更多范例来安装模块。
基本范例:
指令AliasIO的基本范例说明如下:
也可参看第18页更多范例
例1 V AR 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、V AR、PERS或者它们的参数)包含信号(数据类型string字符串)的名称,从该信号中,信号描述符在系统中搜索后被复制。
信号必须在IO配置中定义。
ToSignal:
数据类型:signalxx
信号标识符按照程序(数据类型signalxx)命名,信号描述符复制到该系统中。
信号必须在RAPID程序中声明。
FromSignal和ToSignal项目必须使用(或者找到)相同的数据类型,并且必须是类型signalxx (signalai,signalao,signaldi,signaldo,signalgi或者signalgo)中的一个。
程序执行:
信号描述符数值从FromSignal项目给出的信号复制到ToSignal项目给出的信号。
更多范例:
指令AliasIO的更多范例说明如下。
例1V AR 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指令执行之后才能使用。
指令AliasIO必须放置在
◆或者在程序开始(事件START)时执行的事件程序中
◆或者在每一个程序开始之后(信号使用之前)执行的程序部分。
为了防止错误,不推荐使用把AliasIO信号动态重新链接到不同的物理信号。
语法:
AliasIO [FromSignal “:=”]<任意类型的相关(REF)>“,”
[ToSignal“:=”]<任意类型的变量(V AR)>“;”
相关信息:
1.5.“:=”—赋值
用途:
“:=”指令用来给数据赋一个新值。
这一个值可以是包括从常量值到任意的表达式中的任何一个。
例如reg1+5*reg3。
基本范例:
指令的基本范例说明如下。
也可参见第19页更多范例。
例1reg1:=5;
数值5赋给reg1。
例2reg1:=reg2-reg3;
reg2-reg3计算返回的数值赋给reg1。
例3counter:=counter+1;
counter增加1。
项目:
Data:=V alue
Data:
数据类型:所有
将被赋新值的数据。
V alue:
数据类型:和Data一样。
期望的数值。
更多范例:
该指令的更多范例说明如下。
例1tool1.tframe.trans.x:=tool1.tframe.trans.x+20;
tool1的TCP在X方向上移动20毫米。
例2pallet{5,8}:=Abs(value)
pallet矩阵的一个元素被赋予一个等于value变量的绝对值的数值。
限制:
数据(将被改变数值的)不可以是:
常量
非数值数据类型
数值或者数据必须有相似的(相同的或者别名的)数据类型。
语法:
(EBNF)
<赋值目标>“:=”<表达式>“;”
<赋值目标>::=<变量>|<恒量>|<参数>|<V AR>
相关信息:
1.6.BitClear—在一个字节数据中清除一个特定位
用途:
BitClear用来清除(设为0)定义的字节数据中一个特定的位。
基本范例:
该指令的基本范例说明如下。
例1CONST num parity_bit:=8;
V AR 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)>‘;‘
1.7.BitSet—在字节数据中设定一个特定的位
用途:
BitSet用来在定义的字节数据中把一个特定位设为1。
基本范例:
该指令的基本范例说明如下。
例1CONST num parity_bit:=8;
V AR 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)>‘;‘
相关信息:
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;
V AR 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 ‗:=‘]<errnum的变量(V AR)> ‗;‘
相关信息:
1.9.Break—跳出程序执行
用途:
Break用来在程序执行中制造一个立即跳出,为了RAPID程序代码调试的目的。
基本范例:
该指令的基本范例说明如下。
例1…..
Break
….
程序执行停止,为了调试目的的分析变量、数值等成为可能。
程序执行:
该指令立即停止程序执行,不用等机器人或者外部轴到达他们编程的当时运动的目的点。
程序执行然后能从下一条指令重新开始。
如果在一些事件程序中有Break指令,程序的执行将被打断,并且没有停止事件程序将被执行。
下次同一事件发生的时候事件程序将从开头执行。
语法:
Break‘;’
相关信息:
1.10.CallByVar—通过一个变量调用程序
用途:
CallByV ar(Call By V ariable)可以使用一个特定的名称,例如proc_name1, proc_name2, proc_name3 …proc_namex通过一个变量调用程序。
基本范例:
该指令的基本范例说明如下:
也可参照第28页更多范例。
例1reg1:=2;
CallByV ar ―proc‖,reg1;
程序proc2被调用。
项目:
CallByV ar Name Number
Name:
数据类型:字符串
程序名称的第一部分,例如proc_name。
Number:
数据类型:数字
程序号码的数字数值。
该数值将被转换成一个字符串,给出程序名称的第二部分,例如,1。
数值必须是一个正整数。
更多范例:
如何作出程序调用的动态和静态选择的更多范例。
例1—程序调用的静态选择。
TEST reg1
CASE 1:
Lf_door door_loc;
Case 2:
Rf_door door_loc;
Case 3:
Lr_door door_loc;
Case 4:
Rr_door door_loc;
DEFAULT:
EXIT;
ENDTEST
取决于寄存器reg1的数值是1、2、3或者4,来调用不同的程序来对选择的门完成合适的工作,门位于项目door_loc。
例2—用RAPID语法动态选择程序调用。
Reg1:=2;
%‖proc‖+NumToStr(reg1,0)% door_loc;
程序proc2和项目door_loc被调用。
限制:所有程序必须有一个特定的名称,例如proc1,proc2,proc3。
例3—用CallByV ar动态选择程序调用。
Reg1:=2;
CallByV ar ―proc‖,reg1;
程序proc2被调用。
限制:所有程序必须有一个特定的名称,如proc1,proc2,proc3,并且没有项目可以被使用。
限制:
只能被用来调用不带参数的程序。
不能用来调用LOCAL(本地)程序。
CallByV ar的执行比普通的程序调用要占用多一点的时间。
错误处理:
如果Number项目小于零或者不是一个整数,系统参数ERRNO被设成ERR_ARGV ALERR。
如果相关到一个未知的程序,系统参数ERRNO被设成ERR_REFUNKPRC。
如果程序调用错误(不是程序错误),系统参数ERRNO被设成ERR_CALLPROC。
这些错误可以在错误处理器中进行处理。
语法:
CallByV ar [名称‘:=’]<字符串表达式(IN)>‘,’[号码‘:=’]<数字表达式(IN)>‘;’
相关信息:
1.11.CancelLoad—取消模块的加载
用途:
CancelLoad用来取消用StartLoad指令正在加载或者已经加载的模块。
CancelLoad只能用在指令StartLoad和WaitLoad之间。
基本范例:
该指令的基本范例说明如下。
也可参见第30页的更多范例。
例1ConcelLoad load1
加载load1被取消。
项目:
CancelLoad LoadNo
LoadNo:
数据类型:loadsession
相关到被StartLoad所开始的加载系列。
更多范例:
如何使用该指令的更多范例说明如下。
例1V AR loadsession load1;
StartLoad ―HOME:‖\File:=‖PART_B.MOD‖,load1;
…
IF …
CancelLoad Load1;
StartLoad ―HOME:‖\File:=‖PART_C.MOD‖,load1;
ENDIF
…
WaitLoad load1;
指令CancelLoad将取消正在进行的PART_B.MOD模块的加载,而要使加载PART_C.MOD成为可能。
错误处理:
如果项目LoadNo指定的变量没有在使用,也就是说没有进行加载,系统变量ERRNO将设为ERR_LOADNO_NOUSE。
这个错误然后在错误处理器中可能被处理。
语法:
CancelLoad [LoadNo ‗:=‘]<加载系列变量(V AR)>‘;‘
1.12.CirPathMode—在圆形路径过程中工具再定位
用途:
CirPathMode(圆形路径模式)使在圆周运动中选择不同的模式再定位工具成为可能。
该指令只能被使用在主任务T_ROB1,或者如果在多运动系统中,使用在运动任务中。
基本范例:
该指令的基本范例说明如下:
例1CirPathMode \PathFrame
在所有成功的圆形运行过程中,从开始点到ToPoint的实际路径格式中工具再定位的标准模式。
这是系统中的缺省值。
例2CirPathMode \ObjectFrame
在所有成功的圆形运行过程中,从开始点到ToPoint的实际对象格式中工具再定位的修改的模式。
例3CirPathMode \CirPointOri
在所有成功的圆形运行过程中,从开始点通过程序中的CirPoint再定位到ToPoint的工具再定位的标准模式。
描述:
PathFrame
CirPathMode [ \PathFrame] | [ \ObjectFrame] | [ \CirPointOri]
[\PathFrame]
数据类型:switch
在圆周运动过程中,工具的再定位在实际路径格式中的从开始点方向到ToPoint方向连续完成。
这是系统中的标准模式。
[ \ObjectFrame]
数据类型:switch
在圆周运动中,工具的再定位在实际对象格式中从开始点方向到ToPoint方向连续完成。
[ \CirPointOri]
数据类型:switch
在圆周运动中,工具的再定位在实际对象格式中从开始点方向到程序中CirPoint方向再到ToPoint方向连续完成。
只有编程的CirPointMode;没有任何转换导致和CirPointMode\PathFrame相同的结果。
程序执行:
特定的圆形工具再定位模式应用于下一个执行的机器人任意类型的圆周运动(MoveC,SearchC,TriggC,MoveCDO,MoveCSync,ArcC,PaintC…)并且直到新的CirPathMode(或者旧的CirPathReori)指令执行之前都有效。
标准的圆形再定位程序(CirPathMode \PathFrame)在以下情况下自动设定:
●冷启动
●当加载一个新的程序
●当从开头执行程序时
限制:
该指令只影响圆周运动。
当使用\CirPointOri模式时,CirPoint必须在点A和点B之间,按照下图是圆周运动在CirPoint突破程序中的方向。
如果工作在手腕单一点区域附近并且SingArea\Wrist指令已经被执行,指令CirPathMode将没有影响,因为系统那时候选择另一种圆周运动(关节插补)的工具再定位模式。
该指令代替旧的指令CirPathReori(即使在将来也可以使用,但是在文档中不再介绍。
语法:
CirPathMode ‗;‘ [‗\‘PathFrame] | [‗\‘ObjectFrame] | [‗\‘CirPointOri]
相关信息:
1.13.Clear—清除数值
用途:
Clear用来清除一个数字变量或恒量,即把它设为零。
基本范例:
该指令的基本范例说明如下。
例1Clear reg1;
Reg1被清除,即reg1:=0。
项目:
Clear Name
Name:
数据类型:数字
即将清除的变量或恒量的名称。
语法:
Clear [Name ‗:=‘] <数字的变量或者恒量(INOUT)> ‗;‘相关信息:
1.14.ClearIOBuff—清除串行通道的输入缓冲器
用途:
ClearIOBuff用来清理串行通道的输入缓冲器。
所有来自串口通道的缓冲的字母将被丢弃。
基本范例:
该指令的基本范例说明如下。
例1V AR iodev channel2;
…
Open ―com2:‖, channel2 \Bin;
ClearIOBuff channel2;
WaitTime 0.1;
相关到channel2的串行通道的输入缓冲器被清空。
等待时间保证足够时间来完成清空操作。
项目:
ClearIOBuff IODevice
IODevice:
数据类型:iodev
将被清空缓冲器的串行通道的名称(相关)。
程序执行:
所有输入串行通道的缓冲器的字母被清除。
下一个读取指令将等待来自通道的新的指令。
限制:
该指令只能被串行通道使用。
不等待操作完成的通知。
在每一次使用中,推荐在指令后使用0.1秒的等待时间,来给操作足够的时间。
错误处理:
如果要在一个文件上使用该指令(清除文件),系统变量ERRNO将被设成ERR_FILEACC。
该错误可以在错误处理器中处理。
语法:
ClearIOBuff [IODevice ‗:=‘]<iodev 的变量(V AR)> ‘;’
相关信息:
1.15.ClearPath—清除当前路径
用途:
ClearPath清除当前运动路径层次上(基本层次或者StorePath层次)的整个运动路径。
运动路径是指在ClearPath执行的时候,从RAPID已经执行但是机器人没有完成的运动开始所有的运动段落。
在ClearPath指令执行前机器人必须在停止点位置,或者用StopMove指令停止机器人。
基本范例:
该指令的基本范例说明如下。
在下列程序例子中,机器人从初始位置到达p1点。
在点px,信号dil将指示有效负载被丢掉。
在陷阱程序gohome中,继续执行。
机器人将在px停止运动(开始跳出),路径将被清除,机器人将移动到初始位置。
错误将被提高到调用minicycle程序,并且整个用户定义的程序循环proc1,proc2将被再次从开始执行。
例1V AR intnum drop_payload;
CONST errnum ERR_DROP_LOAD:=-1;
PROC minicycle( )
BookErrNo ERR_DROP_LOAD;
Proc1;
…
ERROR (ERR_DROP_LOAD)
RETRY;
ENDPROC
PROC proc1( )
…
proc2;
…
ENDPROC
PROC proc2( )
CONNECT drop_payload WITH gohome;
IsignalDI \Single, dil, 1, drop_payload;
MoveL p1,v500,fine,gripper;
………….
Idelete drop_payload
ENDPROC
TRAP gohome
StopMove \Quick;
ClearPath;
Idelete drop_payload;
MoveL home, v500, fine, gripper;
RAISE ERR_DROP_LOAD;
ERROR
RAISE;
ENDTROP
如果正在运行相同的程序,但是在陷阱程序gohome中没有使用StopMove和ClearPath,在回到初始位置home之前机器人将继续运动到p1位置。
如果编程时在MoveL home中使用飞点(zone)代替停止点(fine),在调用minicycle程序中的错误处理器的过程中,运动将会继续并且直到运动准备好。
语法:
ClearPath ‗;‘
相关信息:
1.16.ClearRawBytes—清除原始字节数据的内容
用途:
ClearRawBytes用来把原始字节变量的所有内容设为0。
基本范例:
指令的基本范例说明如下。
例1V AR rawbytes raw_data;
V AR num integer :=8
V AR 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 ‗:=‘]<原始字节类型的变量(V AR)>
[‗\‘FromIndex‘:=‘<数字类型的表达式(IN)>] ‘ ; ‘
用途:
ClkReset用来复位一个用来计时的停止监视功能的时钟。
该指令在使用时钟指令之前使用,用来确保它归零。
基本范例:
该指令的基本范例说明如下。
例1CleReset Clock1;
时钟Clock1 被复位。
项目:
ClkReset Clock
Clock:
数据类型:时钟
要复位的时钟的名称。
程序执行:
当时钟被复位,它被设为0。
如果时钟正在运行,它将被停止然后复位。
语法:
ClkReset [ Clock ‗:=‘ ] <时钟类型的变量(V AR)> ‗;‘
相关信息:
用途:
ClkStart用来开始一个用于计时的停止-监视功能的时钟。
基本范例:
该指令的基本范例说明如下。
也可参看第43页的更多范例。
例1ClkStart Clock1
时钟Clock1 开始计时。
项目:
ClkStart Clock
Clock:
数据类型:时钟
将要开始计时的时钟的名称。
程序执行:
当时钟开始计时,它将运行并且继续计秒直到它停止。
当让它开始计时的程序停止的时候,时钟继续运行。
但是,你想要计时的事件可能不再有效。
例如,如果程序测量输入的等待时间,当程序停止的时候,输入已经被接收。
在这种情况下,当程序停止的时候,程序将不能“看到”事件的发生。
当机器人电源断电的时候,只要备份电池保留包含时钟变量的程序,始终将继续运行。
如果时钟正在运行,它可以被读取、停止或者复位。
更多范例:
该指令的更多范例说明如下。
例1V AR clock clock2;
V AR 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 ‗:=‘ ] <时钟类型的变量(V AR)> ‗;‘
相关信息:
用途:
ClkStop用来停止一个用于计时的停止-监视功能的时钟。
基本范例:
该指令的基本范例说明如下。
ClkStop Clock1
时钟Clock1 停止计时。
项目:
ClkStop Clock
Clock:
数据类型:时钟
将要停止计时的时钟的名称。
程序执行:
当时钟停止计时,它将停止运行。
如果时钟被停止,它可以被读取、再次开始或者复位。
错误处理:
如果时钟运行了4,294,967秒(49天17个小时2分钟47秒),它将超载并且系统变量ERRNO被设成ERR_OVERFLOW。
该错误可以在错误处理器中处理。
语法:
ClkStop [ Clock ‗:=‘ ] <时钟类型的变量(V AR)> ‗;‘
相关信息:
1.20.Close—关闭一个文件或者串行通道
用途:
Close用来关闭一个文件或者串行通道。
基本范例:
该指令的基本范例说明如下。
例1Close channel2;
被channel2相关到的串行通道被关闭。
项目:
Close IODevice
IODevice:
数据类型:iodev
将要被关闭的文件或者串行通道的名称(相关)。
程序执行:
指定的文件或者串行通道被关闭并且在读或写之前必须重新打开。
如果它已经被关闭,该指令被忽略。
语法:
Close [ IODevice ‗:=‘ ] <iodev类型的变量(V AR)> ‗;‘
相关信息:
1.21.CloseDir—关闭一个目录
用途:
CloseDir用来关闭一个目录,和OpenDir达到平衡。
基本范例:
该指令的基本范例说明如下。
例1PROC lsdir(string dirname)
V AR dir directory;
V AR string filename;
OpenDir directory,dirname;
WHILE ReadDir(directory,filename) DO
TPWrite filename;
ENDWHILE
CloseDir directory;
ENDPEOC
该例子打印出指定目录下所有文件或者子目录名称。
项目:
CloseDir Dev
Dev:
数据类型:dir
一个相关到OpenDir指令取得的目录的变量。
语法:
CloseDir[ Dev‘:=‘ ] <dir类型的变量(V AR)> ‘;’
1.22.comment—注释
用途:
comment只是用来使程序容易理解。
对程序的执行没有影响。
基本范例:
该指令的基本范例说明如下。
例1!Goto the position above pallet
MoveL p100, v500, z20, tool1;
一个注释被插入程序,使程序更容易理解。
项目:
!Comment
Comment:
文本字符串。
任何文本。
程序执行:
执行该指令的时候不会发生什么。
语法:
(EBNF)
‘!’{<字母>} <newline>
相关信息:
1.23.Compact IF—如果满足一个条件,那么。
(执行一个指令)
用途:
如果满足一个给定的条件,只有将执行一个单一指令的时候才使用Compact IF。
如果不同的指令将被执行,取决于给定的条件是否满足,使用IF指令。
基本范例:
该指令的基本范例说明如下:
例1IF reg1 >5 GOTO next;
如果reg1大于5,程序继续从下一个标签执行。
例2IF conter >10 Set do1;
如果conter >10,那么do1信号被设置。
项目:
IF Condition…
Condition:
数据类型:bool
指令的执行必须满足的条件。
语法:
(EBNF)
IF<条件表达式>(<指令> | <SMT>)‗;‘
相关信息:
1.24.ConfJ—在关节运动过程中控制配置
用途:
ConfJ(配置关节)用来指定在关节运动过程中是否控制机器人配置。
如果不控制,机器人有时候会使用与程序中不同的配置。
ConfJ \Off时,机器人不能转变主轴配置-它将寻找和当前途径具有相同主轴配置的途径,但是它移动到轴4和轴6的最近的腕配置。
该指令只能使用在主任务中,或者在多运动系统中,使用在运动任务中。
基本范例:
该指令的基本范例说明如下。
例1ConfJ \Off;
MoveJ *, v1000, fine, tool1;
机器人移动到编程位置和方向。
如果该位置可以用多种不同的方式到达、用多种轴配置,将选择最近的可能位置。
例2ConfJ \On;
MoveJ *, v1000, fine, tool1;
机器人移动到程序中的位置、方向和轴配置。
如果这是不可能的,程序执行将停止。
项目:
ConfJ [\On] | [\Off ]
[\On]:
数据类型:switch
机器人通常移动到遍编程中的轴配置。
如果不能使用编程中的位置和方向,程序执行停止。
IRB5400机器人将移动到程序中的轴配置或者是接近程序中的轴配置的轴配置。
如果它不能到达程序中的轴配置的话,程序的执行也不会停止。
[\Off]:
数据类型:switch
机器人通常运动到最接近的轴配置。
程序执行:
如果选择了项目\On( 或者没有选择项目),机器人通常运动到编程的轴位置。
不过不能使用程序中的位置和方向,在运动开始之前程序执行就停止。
如果选择了项目\Off,机器人通常运动到最近接的轴配置。
如果配置被错误地手动指定,或者如果执行了程序移植,这将可能和程序中的不一样。
控制配置(ConfJ \On)是缺省值。
这被自动设置:
◆冷启动时
◆新程序被加载
◆从头开始程序执行
语法:
ConfJ [ ‗\‘ On] | [ ‗\‘ Off] ‗;‘
相关信息:
1.25.ConfL—在线性运动过程中监视配置
用途:
ConfJ(配置关节)用来指定在线性或者圆周运动过程中是否监视机器人配置。
如果不监视,执行时候的配置可能和程序中的配置不一样。
当模式改变为关节运动的时候,也可能导致不可预知的清扫机器人运动。
该指令只能使用在主任务中,或者在多运动系统中,使用在运动任务中。
注意!在IRB5400机器人中,无论在ConfL中怎么指定,监视总是关闭的。
基本范例:
该指令的基本范例说明如下。
例1ConfL \On;
MoveL *, v1000, fine, tool1;
当从当前位置不能到达程序中的配置时,程序执行停止。
例2SingArea \Wrist;
ConfL \On;
MoveL *, v1000, fine, tool1;
机器人运动到编程位置、方向和腕部轴配置。
如果不能到达,程序执行停止。
例3ConfL \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”作为为不同的程序部分的开始点的已知配置点。
监视被激活是缺省值。
这被自动设置:
◆冷启动时
◆新程序被加载
◆从头开始程序执行
语法:。