1、 1RAPID 参 考手册 指 2 令 1.指令 1.1AccSet降低加速度 用途: 当处理较大负载时使用 AccSet 指令。它允许减慢加速度和减速度,使机器人有 一个更平滑的运动。 该指令只能在主任务 T_ROB1 中使用,或者如果处于多运动系统,在 Motion 任 务中。 基本范例: 3 AccSet 的基本范例说明如下。 例1 AccSet 50,100; 加速度被限制到正常值的 50%。 例2 AccSet 100,50; 加速度斜线限制到正常值的 50%。 项目: AccSet Acc Ramp Acc: 数据类型:num(数值) 加速度和减速度作为正常值的百分比。100%对应
2、最大加速度。最大值:100%。 输入值20%则给出最大加速度的 20%。 Ramp 数据类型:num(数值) 加速度和减速度的增加作为正常值的百分比的比例(如图) 。通过减小这个数值 可以限制震动。100%对应最大比例。最大值:100%,输入值10%则给出最大比例 的 10%。 下图说明减小加速度可以平滑运动。 加速度 加速度 加速度 时间 时间 4 时间 AccSet 100 , 100 正常加速度 A c c S e t 3 0, 100 AccSet 100,30 程序执行: 该加速度值应用到机器人和外部轴,直到一个新的 AccSet 指令执行。 缺省值(100%)在以下情况是自动设置:
3、 冷启动 加载了新的程序 从头开始执行程序时 语法: AccSet AccSet “:=”“, ”Ramp “:=”“; ” 相关信息: 有关信息 参看 在世界坐标系统中控制加速度 第 590 页 WorldAccLi m-在世界坐标系统 中控制加速度 沿着路径降低 TCP 加速度 第 265 页 PathAccLim沿路径降低 TCP 加速度 定位指令 RAPID 参考手册-RAPID概述, RAPID摘 要部分-运动 5 1.2 ActUnit激活一个机械单元 用途: ActUnit 用来激活一个机械单元。 例如当使用普通驱动单元的时候,它可以用来决定哪一个单元被激活。 该指令只能在主任务
4、 T_ROB1 中使用,或者如果处于多运动系统,在 Motion 任 务中。 基本范例: ActUnit 的基本范例说明如下: 例 1 ActUnit orbit_a; orbit_a机械单元的激活。 项目: AccUnit MechUnit MechUnit: 机械单元 数据类型:mecunit(机械单元) 要激活的机械单元的名称。 程序执行: 当机器人的和外部轴的实际路径准备好以后, 整个路径被清理并且特定的机械单 元被激活。这意味着它被机器人控制和监视。 如果多个机械单元共享一个普通驱动单元,这些单元中的一个的激活,也将把该 单元连接到普通驱动单元。 限制: 如果在该指令之前有一个运动指
5、令,那个指令的程序中必须带有停止点(区域数 6 据 fine) ,而不是一个通过点,否则将不能进行电源失败后的重启。 AccUnit 指令不能在连接到以下任何特定的系统事件的 RAPID程序中执行: 电源 上电,停止,Q 停止,重启或者复位。 语法: ActUnit MechUnit “:=”“; ” 相关信息: 相关信息 参照 废除机械单元 第 69页 DeactUnit废除一个机械单元 机械单元 第 969页 MecUnit机械单元 更多例子 第 69页 DeactUnit废除一个机械单元 7 1.3 Add 增加一个数字数值 用途: Add 用于增加一个数值到一个数字变量或恒量,或者从一
6、个数字变量或者恒量中减去一个数 值。 基本范例: 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 “:=”“, ”AddValue“:=”“; ” 相关信息: 相关的信息 参看 给变量加1 Incr增加 1,第 117 页 改变量减1 Decr减 1,第
7、 71页 使用一个任意的表达式改变数据,例如乘法 “:=”赋值,第 19页 8 1.4 AliasIO用别名定义 I/O 用途: AliasIO 用来用别名定义一个任意类型的信号,或者用来在内置(built-in)任务模块中使用信 号。 在不同的机器人安装中,带别名的信号可以被用来预定义常规程序,而不用在运行之前进行 任何的程序更新。 在任何实际信号的使用之前,必须运行 AliasIO 指令。参看第 17 页的基本范例来加载模块, 第 18页更多范例来安装模块。 基本范例: 指令 AliasIO的基本范例说明如下: 也可参看第 18页更多范例 例 1 V AR signaldo alias_d
8、o; PROC Prog_start() AliasIO config_do,alias_do; ENDPROC 程序 prog_start 链接到系统参数的 START 事件。程序定义的数字输出信号 alias_do 链接到程 序开头配置的数字输出信号 config_do。 项目: AliasIO FromSignal, ToSignal; FromSignal: 数据类型:signalxx 或者字符串。 加载的模块: 信号标识符按照配置(数据类型 signalxx)命名,信号描述符也从配置中复制。信号必须在 IO 配置中定义。 安装的模块或者加载的系统模块: 一个相关(CONST、VA R
9、、PERS 或者它们的参数)包含信号(数据类型 string字符串)的名 称,从该信号中,信号描述符在系统中搜索后被复制。信号必须在 IO配置中定义。 ToSignal: 数据类型:signalxx 信号标识符按照程序(数据类型 signalxx)命名,信号描述符复制到该系统中。信号必须在 RAPID程序中声明。 FromSignal和 ToSignal项目必须使用(或者找到)相同的数据类型,并且必须是类型 signalxx (signalai,signalao,signaldi,signaldo,signalgi 或者 signalgo)中的一个。 程序执行: 信号描述符数值从 FromSi
10、gnal 项目给出的信号复制到 ToSignal 项目给出的信号。 更多范例: 指令 AliasIO的更多范例说明如下。 例1 V 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)。 9 限制: 当
11、开始程序的时候,别名信号直到 AliasIO指令执行之后才能使用。 指令 AliasIO必须放置在 或者在程序开始(事件 START)时执行的事件程序中 或者在每一个程序开始之后(信号使用之前)执行的程序部分。 为了防止错误,不推荐使用把 AliasIO信号动态重新链接到不同的物理信号。 语法: AliasIO FromSignal “:=”“, ” ToSignal“:=”“; ” 相关信息: 相关信息 参看 输入/输出指令 RAPID参考手册-RAPID概述,RAPID摘要部分-输入和输出信号 通常的输入输出功能 性 RAPID参考手册-RAPID概述,运动和 I/O原理部分-I/O原理
12、I/O配置 技术相关手册-系统参数 定义事件程序 技术相关手册-系统参数 加载/安装任务模块 技术相关手册-系统参数 10 1.5 “:= ”赋值 用途: “:=”指令用来给数据赋一个新值。这一个值可以是包括从常量值到任意的表达式中的任何 一个。例如 reg1+5*reg3。 基本范例: 指令的基本范例说明如下。 也可参见第 19页更多范例。 例1 reg1:=5; 数值 5赋给 reg1。 例2 reg1:=reg2-reg3; reg2-reg3计算返回的数值赋给 reg1。 例3 counter:=counter+1; counter 增加 1。 项目: D a t a :=Value
13、Data: 数据类型:所有 将被赋新值的数据。 Va l u e: 数据类型:和 Data一样。 期望的数值。 更多范例: 该指令的更多范例说明如下。 例1 tool1.tframe.trans.x:=tool1.tframe.trans.x+20; tool1的 TCP 在 X方向上移动 20毫米。 例2 pallet5,8:=Abs(value) pallet矩阵的一个元素被赋予一个等于 value变量的绝对值的数值。 限制: 数据(将被改变数值的)不可以是: 常量 非数值数据类型 数值或者数据必须有相似的(相同的或者别名的)数据类型。 语法: (EBNF) “:=”“; ” : :=|
14、相关信息: 相关信息 参看 表达式 RAPID参考手册-RAPID概述,基本特性部分-表达式 非数值数据类型 RAPID参考手册-RAPID概述,基本特性部分-数据类型 给数据赋一个初始数值 操作员手册-IRC5 和 FlexPendant,FlexPendant 部分编辑数据实 例 11 1.6 BitClear在一个字节数据中清除一个特定位 用途: BitClear用来清除(设为 0)定义的字节数据中一个特定的位。 基本范例: 该指令的基本范例说明如下。 例1 CONST num parity_bit:=8; V AR byte data1:=130; BitClear data1,par
15、ity_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 :=,BitPos:=; 相关信息: 相关信息 参
16、看 在字节数据中设定一个特定的位 BitSet在字节数据中设定一个特定的位,第 23页 检查字节数据中特定的位是否被设 置 BitCheck检查字节数据中特定的位是否被设置,第 654页 位的其他功能 RAPID 参考手册-RAPID 概述,RAPID 摘要部分-数学-位功 能 12 1.7 BitSet在字节数据中设定一个特定的位 用途: BitSet 用来在定义的字节数据中把一个特定位设为 1。 基本范例: 该指令的基本范例说明如下。 例1 CONST num parity_bit:=8; V AR byte data1:=2; BitSet data1 parity_bit; 变量 da
17、ta1中位号 8(parity_bit)将设为 1,例如变量 data1的内容将从 2变成 130(整数表示 法) 。当使用 BitClear时数据类型 byte 的位操作在下图有说明。 项目: BitSet BitData BitPos BitData: 数据类型:字节 整型表示法的位数据,将被改变的数据。 BitPos: 位的位置 数据类型:数字 BitData中将被设为零的位的位置(1-8) 。 限制: 字节数据类型的范围是十进制的 0-255。 有效的位的位置为 1-8。 语法: BitSet BitData :=,BitPos:=; 相关信息: 相关信息 参看 在字节数据中清除一个特
18、定的位 BitClear在字节数据中清除一个特定的位,第 23页 检查字节数据中特定的位是否被设 置 BitCheck检查字节数据中特定的位是否被设置,第 654页 位的其他功能 RAPID 参考手册-RAPID 概述,RAPID 摘要部分-数学-位功 能 13 1.8 BookErrNo定制一个 RAPID 系统错误号码 用途: BookErrNo用来定制一个新的 RAPID系统错误号码。 基本范例: 该指令的基本范例说明如下: 例1 !Introduce a new error number in a glue system !Note: The new error variable mu
19、st 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
20、 . E L S E E N D I F 如果数字输入 dil 是 0,新定制的错误号码将被提出并且系统错误变量 ERRNO 将被设定到新 定制的错误号码。这些用户产生的错误的错误处理然后可以像平常一样在错误处理器中处理。 项目: BookErrNo ErrorName ErrorName: 数据类型:errnum 新的 RAPID系统错误变量名称。 限制: 新的错误变量不可以像程序变量一样被声明。 新的错误变量必须带初始值-1声明, 这就给出一个信息: 该错误应该是一个 RAPID系统错误。 语法: BookErrNo ErrorName := ; 相关信息: 相关信息 参看 错误处理 RA
21、PID参考手册-RAPID概述,基本特性部分-错误恢复 错误号码 Errnum错误号码,第 941页 调用一个错误处理器 RAISE调用一个错误处理器,第 303页 14 1.9 Break跳出程序执行 用途: Break用来在程序执行中制造一个立即跳出,为了 RAPID程序代码调试的目的。 基本范例: 该指令的基本范例说明如下。 例1 Break . 程序执行停止,为了调试目的的分析变量、数值等成为可能。 程序执行: 该指令立即停止程序执行,不用等机器人或者外部轴到达他们编程的当时运动的目的点。程 序执行然后能从下一条指令重新开始。 如果在一些事件程序中有 Break指令, 程序的执行将被打
22、断, 并且没有停止事件程序将被执行。 下次同一事件发生的时候事件程序将从开头执行。 语法: Break; 相关信息: 相关信息 参看 程序活动停止 Stop停止程序执行,第 438页 致命错误后停止 EXIT终止程序执行,第 92页 终止程序执行 EXIT终止程序执行,第 92页 只停止机器人运动 StopMove停止机器人运动,第 442页 15 1.10 CallByVar通过一个变量调用程序 用途: CallByVar(Call By Variable)可以使用一个特定的名称,例如 proc_name1, proc_name2, proc_name3 proc_namex通过一个变量调用
23、程序。 基本范例: 该指令的基本范例说明如下: 也可参照第 28页更多范例。 例1 reg1:=2; CallByVar “proc”,reg1; 程序 proc2被调用。 项目: CallByVar Name Number Name: 数据类型:字符串 程序名称的第一部分,例如 proc_name。 Number: 数据类型:数字 程序号码的数字数值。该数值将被转换成一个字符串,给出程序名称的第二部分,例如,1。 数值必须是一个正整数。 更多范例: 如何作出程序调用的动态和静态选择的更多范例。 例1 程序调用的静态选择。 TEST reg1 CASE 1: Lf_door door_loc;
24、 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,proc
25、3。 例3 用 CallByVar 动态选择程序调用。 Reg1:=2; CallByVar “proc”,reg1; 16程序 proc2被调用。限制:所有程序必须有一个特定的名称,如 proc1,proc2,proc3,并且没有项 目可以被使用。 限制: 只能被用来调用不带参数的程序。 不能用来调用 LOCAL(本地)程序。 CallByVar的执行比普通的程序调用要占用多一点的时间。 错误处理: 如果 Number 项目小于零或者不是一个整数,系统参数 ERRNO被设成 ERR_ARGV ALERR。 如果相关到一个未知的程序,系统参数 ERRNO被设成 ERR_REFUNKPRC。 如
26、果程序调用错误(不是程序错误) ,系统参数 ERRNO 被设成 ERR_CALLPROC。 这些错误可以在错误处理器中进行处理。 语法: CallByVar 名称:=, 号码:=; 相关信息: 相关信息 参照 调用程序 RAPID 参考手册-RAPID 概述,基本特性部分- 程序 操作员手册-IRC5 和 FlexPendant 17 1.11 CancelLoad取消模块的加载 用途: CancelLoad用来取消用 StartLoad指令正在加载或者已经加载的模块。 CancelLoad只能用在指令 StartLoad和 WaitLoad之间。 基本范例: 该指令的基本范例说明如下。 也可
27、参见第 30页的更多范例。 例1 ConcelLoad load1 加载 load1被取消。 项目: CancelLoad LoadNo LoadNo: 数据类型:loadsession 相关到被 StartLoad所开始的加载系列。 更多范例: 如何使用该指令的更多范例说明如下。 例1 V AR loadsession load1; StartLoad “HOME:”File:=”PART_B.MOD”,load1; IF CancelLoad Load1; StartLoad “HOME:”File:=”PART_C.MOD”,load1; ENDIF WaitLoad load1; 指令
28、 CancelLoad将取消正在进行的 PA RT _ B . M O D 模块的加载,而要使加载 PART_C.MOD成 为可能。 错误处理: 如果项目 LoadNo 指定的变量没有在使用,也就是说没有进行加载,系统变量 ERRNO将设为 ERR_LOADNO_NOUSE。这个错误然后在错误处理器中可能被处理。 语法: CancelLoad LoadNo :=; 相关信息: 相关信息 参照 在执行过程中加载一个程序模 块 StartLoad在执行过程中加载一个程序模块,第 410页 把加载的模块连接到任务中 WaitLoad把加载的模块连接到任务中,第 566页 加载系列 Loadsessi
29、on程序加载系列,第 968页 加载一个程序模块 Load在执行过程中加载一个程序模块,第 182页 卸载一个程序模块 Unload在执行过程中卸载一个程序模块,第 553页 接受未解决的相关 技术相关手册-系统参数, 标题控制器部分-任务类型-检查未解决 的相关 18 1.12 CirPathMode在圆形路径过程中工具再定位 用途: CirPathMode(圆形路径模式)使在圆周运动中选择不同的模式再定位工具成为可能。 该指令只能被使用在主任务 T_ROB1,或者如果在多运动系统中,使用在运动任务中。 基本范例: 该指令的基本范例说明如下: 例1 CirPathMode PathFrame
30、 在所有成功的圆形运行过程中, 从开始点到 ToPoint的实际路径格式中工具再定位的标准模式。 这是系统中的缺省值。 例2 CirPathMode ObjectFrame 在所有成功的圆形运行过程中,从开始点到 ToPoint 的实际对象格式中工具再定位的修改的模 式。 例3 CirPathMode CirPointOri 在所有成功的圆形运行过程中,从开始点通过程序中的 CirPoint 再定位到 ToPoint 的工具再定 位的标准模式。 描述: PathFrame 以下表格中的图显示了标准模式PathFrame下的工具再定位。 说明 描述 箭头显示了工具从腕部中心点到工具中心点也 就是
31、编程点。 腕部中心点的路径在图中用虚线点 出。 PathFrame 模式使工具绕圆柱得到相同的角度 变得容易。 机器人手腕将不能突破 CirPoint中编 程的方向。 以下表格中的图显示了用固定工具方向的标准模式PathFrame的使用。 说明 描述 该图片显示了用倾斜工具和PathFrame 模式在 圆的中心获得的工具方向。 和下图中使用ObjectFrame模式的相比较。 ObjectFrame 下表中的图显示了修改的模式ObjectFrame和固定工具方向的使用。 说明 描述 该图片显示了用倾斜工具和ObjectFrame模式在 圆的中心获得的工具方向。 该模式将做出和 MoveL 用相
32、同方法的工具的线 性再定位。 机器人手腕将不能穿过 CirPoint中编 程的方向。 和上图中使用PathFrame模式的相比较。 CirPointOri 以下表格中的图显示了标准模式PathFrame和修改的模式CirPointOri之间不同的工具再定位。 说明 描述 箭头显示了工具从腕部中心点到工具中心点也 就是编程点。 腕部中心点的不同路径在图中用虚 19 线点出。 CirPointOri 模式使机器人手腕突破 CirPoint 中 编程的方向。 项目: CirPathMode PathFrame | ObjectFrame | CirPointOri PathFrame 数据类型:sw
33、itch 在圆周运动过程中, 工具的再定位在实际路径格式中的从开始点方向到 ToPoint方向连续完成。 这是系统中的标准模式。 ObjectFrame 数据类型:switch 在圆周运动中,工具的再定位在实际对象格式中从开始点方向到 ToPoint 方向连续完成。 CirPointOri 数据类型:switch 在圆周运动中,工具的再定位在实际对象格式中从开始点方向到程序中 CirPoint 方向再到 ToPoint 方向连续完成。 只有编程的 CirPointMode;没有任何转换导致和 CirPointModePathFrame相同的结果。 程序执行: 特定的圆形工具再定位模式应用于下一
34、个执行的机器人任意类型的圆周运动(MoveC, SearchC,TriggC,MoveCDO,MoveCSync,ArcC,PaintC)并且直到新的 CirPathMode(或者 旧的 CirPathReori)指令执行之前都有效。 标准的圆形再定位程序(CirPathMode PathFrame)在以下情况下自动设定: 冷启动 当加载一个新的程序 当从开头执行程序时 限制: 该指令只影响圆周运动。 当使用CirPointOri模式时, CirPoint 必须在点 A和点 B之间, 按照下图是圆周运动在 CirPoint 突破程序中的方向。 如果工作在手腕单一点区域附近并且 SingArea
35、Wrist 指令已经被执行,指令 CirPathMode 将没 有影响,因为系统那时候选择另一种圆周运动(关节插补)的工具再定位模式。 该指令代替旧的指令 CirPathReori(即使在将来也可以使用,但是在文档中不再介绍。 语法: CirPathMode ; PathFrame | ObjectFrame | CirPointOri 相关信息: 相关信息 参照 插补 RAPID参考手册-RAPID概述,运动和 I/O原理 部分-程序执行过程中的定位 运动设定数据 Motsetdata运动设定数据,第 971页 20 圆周运动指令 MoveC使机器人圆周运动,第 209页 21 1.13 C
36、lear清除数值 用途: Clear 用来清除一个数字变量或恒量,即把它设为零。 基本范例: 该指令的基本范例说明如下。 例1 Clear reg1; Reg1被清除,即 reg1:=0。 项目: Clear Name Name: 数据类型:数字 即将清除的变量或恒量的名称。 语法: Clear Name := ; 相关信息: 相关信息 参看 给变量加1 Incr给变量加 1,第 117 页 使变量减1 Decr变量减 1,第 71页 给变量增加任何值 Add增加数字数值,第 16页 使用任意值改变数据 “:=”给变量赋值,第 19页 22 1.14 ClearIOBuff清除串行通道的输入缓
37、冲器 用途: ClearIOBuff用来清理串行通道的输入缓冲器。所有来自串口通道的缓冲的字母将被丢弃。 基本范例: 该指令的基本范例说明如下。 例1 V AR iodev channel2; Open “com2:”, channel2 Bin; ClearIOBuff channel2; WaitTime 0.1; 相关到 channel2的串行通道的输入缓冲器被清空。等待时间保证足够时间来完成清空操作。 项目: ClearIOBuff IODevice IODevice: 数据类型:iodev 将被清空缓冲器的串行通道的名称(相关) 。 程序执行: 所有输入串行通道的缓冲器的字母被清除。
38、下一个读取指令将等待来自通道的新的指令。 限制: 该指令只能被串行通道使用。不等待操作完成的通知。在每一次使用中,推荐在指令后使用 0.1秒的等待时间,来给操作足够的时间。 错误处理: 如果要在一个文件上使用该指令(清除文件) ,系统变量 ERRNO 将被设成 ERR_FILEACC。 该错误可以在错误处理器中处理。 语法: ClearIOBuff IODevice := ; 相关信息: 相关信息 参看 打开一个串行通道 RAPID参考手册-RAPID概述, RAPID摘要部分 -通讯 23 1.15 ClearPath清除当前路径 用途: ClearPath清除当前运动路径层次上(基本层次或
39、者 StorePath层次)的整个运动路径。 运动路径是指在 ClearPath 执行的时候,从 RAPID 已经执行但是机器人没有完成的运动开始 所有的运动段落。 在 ClearPath 指令执行前机器人必须在停止点位置,或者用 StopMove 指令停止机器人。 基本范例: 该指令的基本范例说明如下。 在下列程序例子中,机器人从初始位置到达 p1点。在点 px,信号 dil 将指示有效负载被丢掉。 在陷阱程序 gohome 中,继续执行。机器人将在 px 停止运动(开始跳出) ,路径将被清除,机器 人将移动到初始位置。错误将被提高到调用 minicycle程序,并且整个用户定义的程序循环
40、proc1, proc2将被再次从开始执行。 例1 V 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,v50
41、0,fine,gripper; . 24 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)代
42、替停止点(fine) ,在调用 minicycle 程序中 的错误处理器的过程中,运动将会继续并且直到运动准备好。 语法: ClearPath ; 相关信息: 相关信息 参看 停止机器人运动 StopMove停止机器人运动,第 442页 错误恢复 RAPID参考手册-RAPID概述, RAPID摘要部分 -错误恢复 RAPID 参考手册-RAPID 概述,基本特性部分- 错误恢复 25 1.16 ClearRawBytes 清除原始字节数据的内容 用途: ClearRawBytes用来把原始字节变量的所有内容设为 0。 基本范例: 指令的基本范例说明如下。 例1 V AR rawbytes r
43、aw_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 开始,
44、例如 float 将被清除,但是 integer 被保存在 raw_data 中。当前 Raw_data中有效字节的长度被设为 4。 项目: ClearRawbytes RawData FromIndex RawData: 数据类型:原始字节 RawData是将被清除的数据容器。 FromIndex : 数据类型:数字 带有指定的 FromIndex ,将从 FromIndex 开始清除 RawData的内容。 一直到头的所有东西都被清除。 如果没有指定 FromIndex ,从索引 1开始的所有数据将被清除。 程序执行: 在指定的变量中,从索引 1(缺省)开始或者从FromIndex开始的数
45、据被复位到 0。 指定变量中有效字节的当前长度被设为 0(缺省)或者如果FromIndex 使用的话为 (FromIndex-1) 。 语法: ClearRawBytes RawData := FromIndex:= ; 相关信息: 相关信息 参看 原始字节的数据 Rawbytes原始数据,第 994页 得到原始字节数据的长度 RawBytesLen得到原始字节数据的长度,第 806页 复制原始字节数据的内容 CopyRawBytes复制原始字节数据的内容,第 58页 将设备网标题打包进原始字节数据 PackDNHeader将设备网标题打包进原始字节数据,第 258页 将数据打包进原始字节数据
46、 PackRawBytes将数据打包进原始字节数据,第 261页 写入原始字节数据 WriteRawBytes写入原始字节数据,第 604页 读取原始字节数据 ReadRawBytes读取原始字节数据,第 319页 26 从原始字节数据将数据拆包 UnpackRawBytes从原始字节数据中将数据拆包,第 556 页 27 1.17 ClkReset 复位一个用来计时的时钟 用途: ClkReset 用来复位一个用来计时的停止监视功能的时钟。该指令在使用时钟指令之前使用, 用来确保它归零。 基本范例: 该指令的基本范例说明如下。 例1 CleReset Clock1; 时钟 Clock1 被复
47、位。 项目: ClkReset Clock Clock: 数据类型:时钟 要复位的时钟的名称。 程序执行: 当时钟被复位,它被设为 0。 如果时钟正在运行,它将被停止然后复位。 语法: ClkReset Clock := ; 相关信息: 相关信息 参看 其他时钟指令 RAPID参考手册-RAPID概述, RAPID摘要部分 -系统和时间 28 1.18 ClkStart开始一个用来计时的时钟 用途: ClkStart 用来开始一个用于计时的停止-监视功能的时钟。 基本范例: 该指令的基本范例说明如下。 也可参看第 43页的更多范例。 例1 ClkStart Clock1 时钟 Clock1 开
48、始计时。 项目: ClkStart Clock Clock: 数据类型:时钟 将要开始计时的时钟的名称。 程序执行: 当时钟开始计时,它将运行并且继续计秒直到它停止。当让它开始计时的程序停止的时候, 时钟继续运行。但是,你想要计时的事件可能不再有效。例如,如果程序测量输入的等待时间, 当程序停止的时候,输入已经被接收。在这种情况下,当程序停止的时候,程序将不能“看到” 事件的发生。 当机器人电源断电的时候,只要备份电池保留包含时钟变量的程序,始终将继续运行。 如果时钟正在运行,它可以被读取、停止或者复位。 更多范例: 该指令的更多范例说明如下。 例1 V 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 := ; 相关信息: 相关