第六章 工业机器人数据与编程基础¶
2022年10月27日
本章学习要点¶
本章学习提要:¶
机器人操作与编程是实现机器人集成系统工作的基础,本章将以ABB机器人为例,着重讲解机器人编程的必备知识,目的在于:掌握RAPID语言中的常用数据类型与用法,了解RAPID程序的架构与分类,掌握常用的程序控制指令、运算指令以及机器人运动指令。
内容简介¶
RAPID语言中的指令
RAPID编程实例
RAPID编程操作技巧
1. RAPID语言中的指令¶
指令¶
指令是指能够在一段程序语句中起主导作用的将相应数据和函数按照某种方式来运算的功能说明,相应的有逻辑指令,运动指令,判断指令,等待指令等等,如if、while 有运动指令如 moveL、moveC、waittime等。
基本指令 – 赋值指令¶
赋值指令用于对程序数据进行赋值。赋值可以是一个常量或数学表达式,比如:
PROC main()
a:=10;
b:=a+5;
ENDPROC
(1)添加活动:
首先在示据,右边选择
(2)添加
首先同样
b
b:=<EXP>;
表达式赋值¶
点击第一个【
信号控制指令¶
信号控制指令用控制系统匹配好的I/O信号实现通信控制,下表为常用I/O控制指令说明表。
在一,若存在Set、Reset指令前有运动指令MoveJ、MoveL、MoveC、MoveAbsJ运动语句,则运动语句的转弯区数据使用fine才可以准确地输出I/O信号状态的变化。
WaitDI、WaitDO为数字输入信号判断指令,在程序执行这两种指令时,等待输入信号或者输出信号的值为1或者0。如果实现了目的信号状态的改变,则程序继续往下执行;最大等待时间300s,等待至300秒目的信号状态还是没有达到,则机器人报警或进入出错处理程序。
表 常用I/O控制指令表¶
指令 |
说明 |
例子 |
|---|---|---|
Set |
数字信号置位指令用于将数字输出(Digital Output)置位为“1”。 |
Set do5; |
Reset |
数字信号复位指令用于将数字输出(Digital Output)置位为“0”。 |
Reset do5; |
WaitDI |
数字输入信号判断指令用于判断数字输入信号的值是否与目标一致 |
WaitDI di3, 1; |
WaitDO |
数字输出信号判断指令用于判断数字输出信号的值是否与目标一致 |
WaitDO do3, 0; |
WaitUntil 信号判断指令¶
WaitUntil信号判断指令可用于布尔量、数字量和I/O信号值的判断,如果条件到达指令中的设定值,程序继续往下执行,否则就一直等待,除非设定了最大等待时间。
例:
WaitUntil di1 = 1;
WaitUntil do1 = 0;
WaitUntil flag = TRUE;
WaitUntil gil = 6;
程序调用指令¶
程序调用指令在编程中非常常见,相关指令有ProcCall、CallByVar、RETURN等,下表针对三种指令进行说明分析。
表 调用程序指令表¶
指令 |
ProcCall |
CallByVar |
RETURN |
|---|---|---|---|
说明 |
调用例行程序 |
通过带变量的例行程序名称调用返回原例行程序 |
|
解析 |
可将例行程序中参数进行赋值例行程序 |
CallByVar Name,Number; Name: 例行程序名称第一部分 (String) Number: 例行程序名称第二部分 (num) 应用:通过指令中相应数据,机器人调用想用例行程序,但无法调用带参例行程序。 |
|
ProcCall Procedure {Argument} ; |
例:
CallByVar “proc”,numal;
需要指出的是:使用ProcCall调用程序不会在代码中显示“ProcCall”,而只会显示调用程序的名称。如“ProcCall proc3"
数据运算相关指令及函数¶
数据运算是程序中不可或缺的,一些常用的运算功能在机器人控制系统中已经封装为对应指令,可以直接在编程时使用,如求余数、求正弦、判断数据类型、数据转换等运算指令,下表为常用数据运算指令。
名称 |
指令/函数 |
说明 |
|---|---|---|
赋值指令 |
:= |
对程序数据进行赋值 |
等待指令 |
WaitTime |
等待一个指定的时间,程序再往下执行 |
WaitUntil |
等待一个条件满足后,程序继续往下执行 |
|
WaitDI |
等待一个输入信号状态为设定值 |
|
WaitDO |
等待一个输出信号状态为设定值 |
|
程序注释 |
comment |
对程序进行注释编程表示为“!”,程序编辑器中的编辑栏“备注行” |
变量函数功能 |
TryInt |
判断数据是否是有效的整数 |
Dim |
获取一个数组的维数 |
|
Present |
读取(测试)带参数例行程序的可选参数值 |
|
IsPers |
判断一个参数是不是可变量 |
|
IsVar |
判断一个参数是不是变量 |
|
数据转换功能 |
StrToByte |
将字符串转换为指定格式的字节数据 |
NumToStr |
将数字数据转换为字符串 |
|
ByteToStr |
将字节数据转换成字符串 |
常用的逻辑指令¶
IF条件逻辑判断指令用于对条件进行判断后,执行相应的操作,是RAPID中重要的组成部分。
IF条件判断指令,就是根据不同的条件去执行不同的指令。条件判定的条件数量可以根据实际情况进行增加与减少。也就是相应的增加或减少“ELSEIF… THEN;”的数量。
指令解析:
IF di1 = 1 THEN
Bool1:=FALSE;
ELSEIF di2 = 1 THEN
Bool2:=TRUE;
ELSE
Reset do0;
ENDIF
如果只有一个条件的来判断,可以简略只用IF指令,代码如下:
IF dil = 1 Reset do0;
案例: 分析下面例行程序
VAR num b;
PROC Path_10()
a:=10;
b:=5;
al:
b:=b+1;
IF b=10 stop;
Goto al;
ENDPROC
FOR重复执行判断指令¶
FOR重复执行判断指令,是用于一个或多个指令需要重复执行次数的情况,示例代码如下:
例1:
FOR i FROM 1 TO 100 DO
PROCA1;
ENDFOR
例2:
VAR num a
VAR num b
FOR i FROM 1 TO 100 DO
a:=a+b;
ENDFOR
WHILE条件判断指令¶
WHILE条件判断指令,用于在给定条件满足的情况下,一直重复执行对应的指令。
例3:
WHILE REG1 = REG2 DO
REG1:= REG1+3;
ENDWHILE
逻辑指令¶
PROC Routine2()
TPReadNum W1, "height";
TPReadFK W3, "gender", "men", "women", stEmpty, stEmpty, stEmpty;
IF W3 = 1THEN
GOTO bl;
ELSEIF W3 =2 THEN
goto b2;
ELSE
TPWrite "erro";
Stop;
ENDIF
b1:
IF W1 >160 THEN
string1:="high";
ELSE
string1:="low";
GOTO b3;
ENDIF
b2:
IF W1 >148 THEN
string1:="high";
ELSE
string1:= "low";
GOTO b3;
ENDIF
b3:
TPWrite "you are " + string1;
ENDPROC
通过使用WHILE或FOR循环,计算123*…10的结果,代码如下:¶
PROC yunsuan()
s1:=1;
FOR i FROM 1 TO 10 do
s1:=s1*i;
ENDFOR
TPWrite"result is "\Num:=s1;
s2:=1;
H1:=1;
WHILE H1<=10 DO
s2:=H1*s2;
H1:=H1+1;
ENDWHILE
TPWrite"result is "\Num:=s2;
ENDPROC
逻辑指令¶
通过下面的一段程序代码体会判断逻辑指令在运算程序中的应用。在此程序中含有四种运算功能:“Abs” “Sqrt" "Pow”“Sin”,它们是系统内置的系统内置功能函数FUNCTION.
PROC abs1()
TPReadNum W1, "the first number";
TPReadFK W3, "choose ", "sqrt", "2", "SIN", stEmpty, stEmpty;
W1 := Abs(W1);
IF W3 = 1 THEN
W4 := Sqrt(W1);
ELSEIF W3 = 2 THEN
W4 := Pow(W1,2);
ELSE
W4 := Sin(W1);
ENDIF
TPWrite "the result is "\Num:=W4;
ENDPROC
逻辑指令¶
RAPID编程中的系统内置功能函数FUNCTION是非常常用的编程技巧,ABB机器人RAPID编程中的功能(FUNCTION)就是系统内置的有返回值程序,在执行完了以后可以返回一个数值。使用功能可以有效地提高编程和程序执行的效率。
功能(函数)有两种来源,一种是系统内部的可调用的,另一种就是建立功能程序。下面是带有功能(函数)程序进行学习。
功能“Offs”的作用是位置目标点phome基于p0 X方向偏移100mm,Y方向偏移0mm,Z方向偏移200mm,这段程序的意义也可以是的实现了,机器人tcp运动到距离p0点X方向100mm,Z方向200mm的位置。
PROC main()
a:=1;
c:=1;
MoveJ p0,v100,z100,MyNewTool1\WObj:=Wobj1;
PHOME:=offs(p0,100,0,200);
MoveJ phome,v100,z100,MyNewTool1\WObj:=Wobj1;
ENDPROC
逻辑判断语句¶
表 常用程序逻辑判断指令表¶
指令 |
说明 |
|---|---|
IF |
条件判断,若满足相应条件择运行相应语句 |
FOR |
制定重复次数型重复 |
WHILE |
条件判断重复 |
TEST |
对一个变量进行判断,从而执行不同的程序 Test data 和Test value是不同的,前者是判断数据变量后者是值 |
GOTO |
跳转到例行程序内标签的位置与Label同时使用 |
Label |
标签 |
指令¶
指令 |
说明 |
|---|---|
Stop |
停止程序执行 指令就绪之前,将完成当前执行的所有移动,停止在当前运行程序行,运行完指令停止,按下示教器“Start”键继续运行 |
EXIT |
终止程序执行 在执行指令EXIT后,程序指针消失。继续开始程序需要将指针调到首行 |
Break |
临时停止程序的执行,用于手动调试 |
SystemStopA |
停止程序执行与机器人运动 |
ction |
|
ExitCycle |
中止当前程序的运行并将程序指针PP复位到主程序的第一条指令。如果选择了程序连续运行模式,程序将从主程序的第一句重新执行 |
程序停止¶
BREAK和stop指令的不同在于,在运行一段圆弧指令之初,候执行break 停止指令,机器人工具tcp马上停止在圆弧开始起点位置;而运行stop指令,机器人会保持运行到圆弧运动第一个点位。如图所示。
基础运动控制指令¶
机器人在空间中运动主要有关节运动MoveJ、线性运动MoveL、圆弧运动MoveC和绝对位置运动MoveAbsJ四种方式。编辑运动语句前一定要在“手动操纵”界面,在添加或修改机器人的运动指令之前,要选用好相应工具坐标与工件坐标;
(1)关节运动指令
关节运动指令是对路径精度要求不高的情况下,机器人的工具中心点TCP从一个位置移动到另一个位置,两个位置之间的路径不一定是直线,下面一段运动指令代码,其中代码解析见下表,运动路径及姿态下图所示。
指令解析:¶
]]
MoveJ p1, v1000, z50, tool1\Wobj:=wobj1;
MoveJ p2, v1000, z50, tool1\Wobj:=wobj1;
]]
运动语句分析表¶
参数 |
含义 |
说明 |
|---|---|---|
P1 |
目标点位置数据 |
TCP点的运动目标空间位置 |
P2 |
目标点位置数据 |
TCP点的运动目标空间位置 |
v1000 |
运动速度数据1000 |
单位mm/s |
z50 |
转弯区数据 |
转弯半径,单位mm |
tool1 |
工具坐标数据 |
当前指令使用的工具 |
wobj1 |
工件坐标数据 |
当前指令使用的工件坐标 |
机器人运动指令¶
机器人运动控制指令表¶
指令 |
说明 |
|---|---|
MoveJ |
关节运动 |
MoveC |
TCP圆弧运动 |
MoveL |
TCP线性运动 |
MoveAbsJ |
轴绝对角度位置运动 |
MoveCDO |
TCP圆弧运动的同时触发一个输出信号 |
MoveJDO |
关节运动的同时触发一个输出信号 |
MoveLDO |
TCP线性运动的同时触发一个输出信号 |
MoveCSync |
TCP圆弧运动的同时执行一个例行程序 |
MoveJSync |
关节运动的同时执行一个例行程序 |
MoveLSync |
TCP线性运动的同时执行一个例行程序 |
1.运动指令MoveJ、MoveC和MoveL¶
指令MoveJ、MoveC、MoveL的变元相似,下表以MoveJ为例来解析相关元素,指令MoveC、MoveL的用法参考MoveJ。
MoveJ [\Conc] ToPoint Speed [\V] | [\T] Zone [\Z] [\Inpos]Tool [\WObj]
MoveC [\Conc] ToPoint Speed [\V] | [\T] Zone [\Z] [\Inpos]Tool [\WObj]=
MoveL [\Conc] ToPoint Speed [\V] | [\T] Zone [\Z] [\Inpos]Tool [\WObj]=
指令解析¶
机器人运动指令¶
指令解析¶
元素 |
说明 |
|---|---|
【\Conc】 |
Concurrent数据类型:switch |
ToPoint |
数据类型:robtarget |
【\v】 |
Velocity数据类型:num |
【\T】 |
Time数据类型:num |
Zone |
数据类型:zonedata |
【\z】 |
该参数用于规定指令中机械臂TCP的位置精度。角路径的长度以mm计,其替代区域数据中指定的相关区域。 |
【\Inpos】 |
In position数据类型: stoppointdata |
Tool |
数据类型:tooldata |
【\WObj】 |
Work Object数据类型: wobjdata |
机器人运动指令¶
下面是一个例子:
MoveJ \Conc, P1, v2000, z40, grip3;
【\Conc】是grip3工具的TCP沿非线性路径运动至(通过、接近)指令中储存的位置时,机械臂运动继续执行MoveJ运动至P1点,同时执行后续逻辑指令。
关节运动指令 MoveJDO¶
MoveJDO一种通过移动机械臂设置拐角处的数字信号输出指令的关节运动指令,指令格式为
MoveJDO ToPoint Speed [\T] Zone Tool [\WObj] Signal Value
其中我们重点对比指令MoveJ,其中的不同的变元是Signal和Value,其余变元的含义可参考MoveJ。
Signal的数据类型为signaldo,是待改变的数字信号输出信号。
Value的数据类型为dionum,是信号的值(0或1)。
关节运动指令 MoveJDO¶
举例来说:
MoveJDO p2, v1000, z30, tool2, do1, 1;
这条指令用来描述下图的运动。如图所示,机器人工具的TCP点tool2 沿非线性路径由位置p1移动至位置p2到p3,其速度数据为v1000,且区域数据为z30。运动时在最接近P2位置时,将输出信号do1置位为1。图中体现出来运动路径和出发信号的相对关系。由于图中区域数据Zone的数据为Z30,如图当运动路径在距离P2点最近位置时信号 do1输出1。
指令MoveLDO、MoveCDO、MoveJAO、MoveJGO与MoveJDO用法类似。
MoveJSync¶
MoveJSync通过接头移动来移动机械臂,执行RAPID无返回值程序。变元为:MoveJSync ToPoint [\ID] Speed [\T] Zone Tool [\WObj] ProcName.
ProcName 数据类型为string。是在机器人运动角路径中间位置执行的RAPID无返回值程序的名称。调试时候,单步运行执行调用例行程序会会出现在错误, stop当前指令会出错,可采用StopInstr指令代替stop指令。
MoveJSync¶
例1:
MoveJSync Pal, v500, z80, tool1, "pr1";
工具中心点tool1沿非线性路径移动至位置Pa1,其速度数据为v500,且区域数据为z80。在Pa1处角路径中部执行无返回值程序pr1。
例2:
MoveJSync Pal, v500, z80, tool1,"Module2: pr2";
将在角路径中部调用模块Module2中局部声明的无返回值程序pr2。
MoveAbsJ¶
MoveAbsJ是指移动机械臂至绝对位置,常用于将机器人六个轴调回到机械零点(0度),指令变元与MoveJ的区别是:
参数TojointPos与MoveJ指令的参数ToPoint相同
参数[\NoEoffs],为外轴偏差开关,数据类型为是 switch,如果参数【\NoEOffs】得以设置,则关于MoveAbsJ的运动将不受外轴有效偏移量的影响。
例1:
MoveAbsJ p0, v100, z30, tooll;
通过速度数据v100和区域数据z30,机械臂以及工具tool1 得以沿非线性路径运动(单轴运动)到绝对轴位置p0。
例2:
MoveAbsJ P1\NoEOffs, v1000, z50, tool1\Wobj:=wobj1;
探索及配置监测指令¶
在工业机器人运动过程中,运动探索及搜索功能是将运动指令和传感器及相关信号参数进行有机结合,提供里一种更为优秀的编程思路,极大的优化程序,相关指令见下表。
探索指令表¶
指令 |
说明 |
|---|---|
SearchC |
TCP圆弧搜索运动 |
SearchL |
TCP线性搜索运动 |
SearchExtJ |
外轴搜索运动 |
探索及配置监测指令¶
例:
SearchL\Stop, di103, Ts10, p20, v20, XP02;
以上代码的意义是:机械臂用工具XP02沿直线以20mm/s的速度向着点p20的方向进行直线运动,直到输入信号di103变为1(有效)时候停止,并将位置存储到变量点Ts10中。
指令ConfL:指定机器人在线性运动及圆弧运动过程中是否严格遵循程序中已设定的轴配置参数。在默认情况下,轴配置监控是打开的,当关闭轴配置监控后,机器人在运动过程中采取最接近当前轴配置数据的配置到达指定目标点。
例如: 目标点p10中,数据[1,0,1,0]就是此目标点的轴配置数据:¶
CONST robtarget p10 := [[*,*,*],[*,*,*,*],[1,0,1,0],[9E9, 9E9, 9E9, 9E9, 9E9,
9E9]];
ConfL \Off;
MoveL p10, v1000, fine, tool0;
机器人自动匹配一组最接近当前各关节轴姿态的轴配置数据移动至目标点p10,到达p10时,轴配置数据不一定为程序中指定的[1,0,1,0]。
此外,ConfJ用法与ConfL相同,区别为前者是关节运动过程中的轴监控开关,影响对应的MoveJ指令;而后者为线性运动过程中的轴监控开关,影响的是MoveL指令。
运动加速度控制指令¶
速度控制指令表¶
指令 |
说明 |
|---|---|
AccSet |
定义机器人的加速度 |
VelSet |
设定最大的速度与倍率 |
SpeedRefresh |
更新当前运动的速度倍率 |
指令解析AccSet:¶
AccSet Acc Ramp [\FinePointRamp]
变元:Acc的数据类型为num,定义加速度和减速度的百分比。100%相当于最大加速度。最大值:100%。输入值<20%,得出最大加速度的20%。
变元:Ramp的数据类型为num,定义加速度与减速度比率的百分比。通过降低该值,可限制顿挫。100%相当于最大加速率。最大值:100%。输入值<10%,得出最大加速率的10%。
若没有进行AccSet限速则执行默认值AccSet100,100
例子:
AccSet100,100; AccSet30,100; AccSet100,30.
运动速度控制指令¶
VelSet:用于限定机器人TCP的运动速度,指令MoveL、MoveJ等均可设置机器人TCP的运动速度,但机器人TCP的实际速度还会受到VelSet指令的影响。VelSet指令影响后续指令的运动速度,直至新的VelSet指令被执行。
格式:VelSet Override Max
说明:Override的数据类型为num,所需速率占编程速率的百分比。100%相当于编程速率。
Max的数据类型为num,最大TCP速率,以mm/s计。
通过以下实例代码分析VelSet指令的用法及速度数据算法。
VelSet 50, 800;
MoveL pa, v1000, z10, tool1;
MoveL pb, v2000, z10, tool1;
MoveL pc, v1000\T:=5, z10, tooll;
点pa的速度为500mm/s,点pb的速度为800mm/s。从pb移动至pc需耗时5秒,当在定位指令中规定了时间时,将不考虑最大速度。
SpeedRefresh: 函数应用实例代码如下:¶
VAR num change_speed:=70;
SpeedRefresh changespeed;
2. Rapid编程实例¶
线性运动实例¶
线性运动是机器人的TCP从起点到终点之间的路径始终保持为直线。一般如焊接、涂胶等应用对路径要求高的场合使用此指令,如图所示。
圆弧运动指令¶
圆弧路径是在机器人可到达的控件范围内定义三个位置点,第一个点是圆弧的起点,第二个点用于圆弧的曲率,第三个点是圆弧的终点,准确绘制一段圆弧需要两条运动指令,因为首先需要保证机器人到达圆弧起始位置,代码如下,首先通过关节运动到达P1位置,然后通过圆弧运动通过P2点最后到达圆弧终点位置P3。
指令解析:¶
]]
MoveJ p1, v1000, fine, tool1\Wobj:=wobj1;
MoveC p2, p3, v1000, z1, tool1\Wobj:=wobj1;
]]
运动指令的使用示例¶
代码如下,运动轨迹示意如图所示,通过使用的工具数据是tool1,工件坐标数据是wobj1。
指令:
]]
MoveJ Pal, v100, fine, tool1\Wobj:=wobj1;
MoveL Pa2, v100, fine, tooll\Wobj:=wobj1;
MoveC Pa3, Pa4 v100, z10, tool1\Wobj:=wobj1;
MoveL Pa5, v120, fine, tool1\Wobj:=wobj1;
MoveC Pa6, Pa7 v80, z1, tool1\Wobj:=wobj1;
MoveL Pa8, v300, z100, tool1\Wobj:=wobj1;
MoveL Pa9, v150, z1, tool1\Wobj:=wobj1;
MoveJ Pal, v80, fine, tool1\Wobj:=wobj1;
]]
运动程序示例¶
编制一个程序的基本流程是:
建立相应模块,比如运算模块,程序数据定义模块,逻辑控制模块,信号处理模块等;
在模块下建立相应的例行程序,如针对实际控制功能进行归类,如抓手末端执行器的控制,以及整个动作工作流程分割成若干的部分,每一部分的运动语句放到一个例行程序里面。
建立运动程序¶
建立RAPID程序实例¶
首先要建立好工具和用户坐标系,匹配好I/O通讯板卡和di1、di2、di3。其次要建立一个新的模块“Module1”, 建立主程序“main”,并建立相应的例行程序:rHome(回原点程序)、rInitAll(初始化程序)、PR1、PR2、PR3等(运动路径程序),具体操作步骤如下:
在常规的行程序中,加入在程序正式运行前,需要作初始化的内容,如速度限定、夹具复位等。具体根据需要添加。在此例行程序rInitAll中只增加了两条速度控制的指令和调用了回原点位的例行程序rHome,若程序有中断的必要,中断声明一般添加在初始化程序中,下面代码中断相关语句已经被屏蔽,可忽略。
PROC rInitAll()
AccSet 100, 100;
VelSet 100, 5000;
rHome;
! IDelete intno1;
! CONNECT intno1 WITH ZHONGDUAN;
! ISignalDI\Single, di4, 1, intno1;
ENDPROC
建立运动例行程序¶
分别是三个部分的轨迹运行程序和回原点程序,分别为:PR1、PR2、PR3和rHome,其中PR1、PR2、PR3分别对应的是A/B/C三个区域的运动。
PROC main()
rInitAll;
WHILE TRUE DO
IF dil = 1 THEN
PR1;
ELSEIF di2 = 1 THEN
PR2;
ELSEIF di3 = 1 THEN
PR3;
ENDIF
WaitTime 0.3;
ENDWHILE
ENDPROC
程序调试¶
工业机器人程序编辑完成后需要对编辑好的程序进行调试和验证,具体调试方式如下:
(1)编程结束后,需要打开示教器“调试”菜单,单击“检查程序”,对程序的语法进行检查,单击“确定”完成。如果有错,系统会提示出错的具体位置与建议操作。
(2)调试非主程序的例行程序时,必须进行低速或者超低速单步调试,打开“调试”菜单,选择“PP移至例行程序”选择想要调试的例行程序,左手按下使能键,进入“电动机开启”状态。按以下“单步向前”按键,并小心观察机器人的移动。一定要记住在按下“程序停止”键后,才可以松开使能键。
程序调试¶
(3)观察程序指针位置和实际的机器人动作及位置,下面图是左边紫色箭头是:程序指针(紫色小箭头)的简称。程序指针永远指向将要执行的指令。左侧的深色机器人的简化下图标表示当前机器人已经到达了该语句的运动位置。
程序调试¶
(4)在程序调试过程中,如只想试运行某一个语句或者在段语句开始执行程序,先在示教器中选择那一句语句,使用“PP移至光标”,如前图所示,可以将程序指针移至想要执行的指令,进行执行,方便程序的调试。此功能只能将PP在同一个例行程序中跳转。如要将PP移至其他例行程序,可先使用“PP移至例行程序”功能。
(5)通过上述方法已经将例行程序进行一一的调试无误后可对main主程序进行调试,在调试菜单下选择“PP移至Main”, PP便会自动指向主程序的第一句指令。首先将机器人速度调节到尽可能的低速位置。左手激活使能键,进入“电动机开启”状态,按一下“程序启动”按键,并小心观察机器人的移动,进行调试。
自动运行调试¶
在手动状态下,完成了调试确认运动与逻辑控制正确之后,就可以将机器人系统投入自动运行状态,以下就RAPID程序自动运行的操作:
(1)将控制柜模式选择钥匙左旋至自动状态,示教器上单击“确定”,确认状态的切换,然后单击“PP移至Mian”,将PP指向主程序的第一句语句,按下系统控制柜白色电机上电按钮。
(2)将速度调节至合适状态,建议第一次试运行,速度调试在5%左右,
3. Rapid编程操作技巧¶
通常而言,同一种工艺或者行业的机器人工作站程序的编写、运行、逻辑及运算方式等较为接近,因此,使用时,只要将相似工业机器人的程序模块导入到新的工作站,即可大大提高编程效率。
导入与保存程序模块¶
导入EIO文件¶
EIO文件是工业机器IO分配源文件。
导入EIO文件后就不需要再分配相关I/O,能够快速进行按照EIO文件里的分配方式I/O分配,不再需要再人工分配I/O。导入EIO文件前需要确认EIO文件对应的工业机器人及相关通讯方式及通讯板卡相同或者相近。
调用带参数的例行程序¶
参数在例行程序的局部变量表中定义。参数必须有一个符号名、一个变量类型和一个数据类型。例行程序之间可以交换最多16个参数。
例: 子程序(带参数的例行程序)
MODULE MainModule
VAR num nuf:=0;
PROC Pr1(num nuf)
FOR i FROM 1 TO nuf DO
nuf := nuf * 2;
ENDFOR
reg4 := nuf;
TPWrite NumToStr(reg4,1);
ENDPROC
PROC main()
Pr1 (7);
ENDPROC
ENDMODULE
调用带参数的例行程序¶
运行主程序,计算为2的7次方再乘以7,最后示教器显示如图所示。
作业讲解¶
运料车自动装、卸料控制¶
控制要求:①某运料车如图所示,可在A、B两地分别启动。运料车启动后,自动返回A地停止,同时控制料斗门的电磁阀Y1打开,开始下料。1分钟后,电磁阀Y1断开,关闭料斗门,运料车自动向B地运行。到达B地后停止,小车底门由电磁阀Y2控制打开,开始卸料。1分钟后,运料车底门关闭,开始返回A地。之后重复运行。 ②运料车在运行过程中,可用手动开关使其停车。再次启动后,可重复①中内容。