ABB[a]-J-6ABB 机器人的程序编程
6.1 任务目标
?掌握常用的PAPID 程序指令。
?掌握基本RAPID程序编写、调试、自动运行和保存模块。
6.2 任务描述
?建立程序模块test12.24,模块test12.24 下建立例行程序main 和Routine1,在main 程序下进行运动指令的基本操作练习。
?掌握常用的RAPID 指令的使用方法。
?建立一个可运行的基本RAPID程序,内容包括程序编写、调试、自动运行和保存模块。
6.3 知识储备
6.3.1 程序模块与例行程序
RAPID 程序中包含了一连串控制机器人的指令,执行这些指令可以实现对机器人的控制操作。应用程序是使用称为RAPID 编程语言的特定词汇和语法编写而成的。RAPID 是一种英文编程语言,所包
含的指令可以移动机器人、设置输出、读取输入,还能实现决策、重复其他指令、构造程序、与系统操作
RAPID 程序的架构说明:
1)RAPID 程序是由程序模块与系统模块组成。一般地,只通过新建程序模块来构建机器人的程序,而系统模块多用于系统方面的控制。
2)可以根据不同的用途创建多个程序模块,如专门用于主控制的程序模块,用于位置计算的程序模块,用于存放数据的程序模块,这样便于归类管理不同用途的例行程序与数据。
3)每一个程序模块包含了程序数据、例行程序、中断程序和功能四种对象,但不一定在一个模块中都
有这四种对象,程序模块之间的数据、例行程序、中断程序和功能是可以互相调用的。
4)在RAPID 程序中,只有一个主程序main,并且存在于任意一个程序模块中,并且是作为整个RAPID 程序执行的起点。
操作步骤:
6.3.2 在示教器上进行指令编程的基本操作
ABB 机器人的RAPID 编程提供了丰富的指令来完成各种简单与复杂的应用。下面就从最常用的指令开始
6.4.1 基本RAPID 指令练习
建立程序模块test12.24,模块test12.24 下建立例行程序main 和Routine1,在main 程序下进行运动指令的基本操作练习。
1.赋值指令“:=”赋值指令用于对程序数据进行赋值。赋值可以是一个常量或数学表达
式。下面的操作步骤以添加一个常量赋值与数学表达式赋值说明此指令的使用:
常量赋值:reg1:=5;
数学表达式赋值:reg2:=reg1+4;
(2)添加带数学表达式的赋值指令的操作
1.在指令列表中选择“:=”。
2.机器人运动指令
机器人在空间中运动主要有关节运动(MoveJ)、线性运动(MoveL)、圆弧运动(MoveC)和绝对位置运动(MoveAbsJ)四种方式。
(1)绝对位置运动指令绝对位置运动指令是机器人的运动使用六个轴和外轴的角度值来定义目标位置数据。操作步骤:
1.进入“手动操纵”画面,确认
已选定工具坐标与工件坐标
(*提示:在添加或修改机器
人的运动指令之前,一定要
确认所使用的工具坐标与工
件坐标)。
2.选中指令的位置,打开“添
加指令” 菜单,选择
“M oveAbsJ”指令。
指令解析:
*提示:MoveAbsJ 常用于机器人六个轴回到机械零点(0°)的位置。
(2)关节运动指令
关节运动指令是对路径精度要求不高的情况下,机器人的工具中心点TCP 从一个位置移动到另一个位置,两个位置之间的路径不一定是直线。
指令解析:
关节运动适合机器人大范围运动时使用,不容易在运动过程中出现关节轴进入机械死点的问题。
*注意:目标点位置数据定义机器人TCP 点的运动目标,可以在示教器中单击“修改位置”进行修改。运动速度数据定义速度(mm/s)
转弯区数据定义转变区的大小mm。工具坐标
数据定义当前指令使用的工具工件坐标数据
定义当前指令使用的工件坐标
(3)线性运动指令
线性运动是机器人的TCP 从起点到终点之间的路径始终保持为直线。一般如焊接、涂胶等应用对路径要求高的场合使用此指令。
(4)圆弧运动指令圆弧路径是在机器人可到达的控件范围内定义三个位置点,第一个点是圆弧的起点,第二个点用于圆
弧的曲率,第三个点是圆弧的终点。
指令解析:
MoveL p10, v1000, fine, tool1\Wobj:=wobj1;
(5)运动指令的使用示例
指令:
MoveL p1, v200, z10, tool1\Wobj:=wobj1;
MoveL p2, v100, fine, tool1\Wobj:=wobj1;
MoveJ p3, v500, fine, tool1\Wobj:=wobj1;
图示:
p3
p1
10mm
200mm/s
50
10
0m
0m
p2
说明:
机器人的TCP 从当前位置向p1 点以线性运动方式前进,速度是200mm/s,转弯区数据是10mm,距离
p1 点还有10mm 的时候开始转弯,使用的工具数据是tool1,工件坐标数据是wobj1。
机器人的TCP 从p1 向p2 点以线性运动方式前进,速度是100mm/s,转弯区数据是fine,机器人在p2
点稍作停顿,使用的工具数据是tool1,工件坐标数据是wobj1。
机器人的TCP 从p2 向p3 点以关节运动方式前进,速度是500mm/s,转弯区数据是fine,机器人在p3
点停止,使用的工具数据是tool1,工件坐标数据是wobj1。提
示:
*关于速度:速度一般最高为50000mm/s,在手动限速状态下,所有的运动速度被限速在250mm/s
*关于转弯区:fine 指机器人TCP 达到目标点,在目标点速度降为零。机器人动作有所停顿然后再向下运动,如果是一段路径的最后一个点,一定要为fine。转弯区数值越大,机器人的动作路径就越圆滑与流畅。
3.I/O 控制指令
I/O 控制指令用于控制I/O 信号,以达到与机器人周边设备进行通信的目的。
(1)Set 数字信号置位指令
Set 数字信号置位指令用于将数字输出(Digital Output)置位为“1”。
Set do1;
(2)Reset 数字信号复位指令
Reset 数字信号复位指令用于将数字输出(Digital Output)置位为“0”。
Reset do1;
*提示:如果在Set、Reset 指令前有运动指令MoveJ、MoveL、MoveC、MoveAbsJ 的转弯区数据,必须使用fine 才可以准确地输出I/O 信号状态的变化。
(3)WaitDI 数字输入信号判断指令
WaitDI 数字输入信号判断指令用于判断数字输入信号的值是否与目标一致。
WaitDI di1, 1;
在例子中,程序执行此指令时,等待di1 的值为1。如果di1 为1,则程序继续往下执行;如果到达最大等待时间300s(此时间可根据实际进行设定)以后,di1 的值还不为1,则机器人报警或进入出错处理程序。
(4)WaitDO 数字输出信号判断指令
WaitDO 数字输出信号判断指令用于判断数字输出信号的值是否与目标一致。
WaitDO do1, 1;
参数以及说明同WaitDi 指令。
(5)WaitUntil 信号判断指令
WaitUntil 信号判断指令可用于布尔量、数字量和I/O 信号值的判断,如果条件到达指令中的设定值,程序继
续往下执行,否则就一直等待,除非设定了最大等待时间。
WaitUntil di1 = 1;
WaitUntil do1 = 0;
WaitUntil flag = TRUE;
WaitUntil num1 = 4;
4.条件逻辑判断指令
条件逻辑判断指令用于对条件进行判断后,执行相应的操作,是RAPID 中重要的组成部分。
(1)Compact IF 紧凑型条件判断指令
Compact IF 紧凑型条件判断指令用于当一个条件满足了以后,就执行一句指令。
IF flag1 = TRUE Set do1;
如果flag1 的状态为TRUE,则do1 被置位为1。
(2)IF 条件判断指令
IF 条件判断指令,就是根据不同的条件去执行不同的指令。指
令解析:
IF num1=1 THEN
flag:=TRUE;
ELSEIF num1=2 THEN
f la g1:=FALSE;
ELSE
Set do1;
ENDIF
如果num1 为1,则flag1 会赋值为TRUE。如果num1 为2,则flag1 会赋值为FALSE。除了以上两种条件之外,则执行do1 置位为1.
*条件判定的条件数量可以根据实际情况进行增加与减少。
(3)FOR 重复执行判断指令
FOR 重复执行判断指令,是用于一个或多个指令需要重复执行次数的情况
FOR i FROM 1 TO 10 DO
Routine1;
ENDFOR
例行程序Routine1,重复执行10 次。
(4)WHILE 条件判断指令
WHILE 条件判断指令,用于在给定条件满足的情况下,一直重复执行对应的指令。
WHILE num1>num2 DO
num1:=num1-1;
ENDWHILE
当num1>num2 的条件满足的情况下,就一直执行num1:=num1-1 的操作。
5.其他的常用指令
(1)ProcCall 调用例行程序指令通过使用此指令在
指定的位置调用例行程序。
(2)RETURN 返回例行程序指令 4. 调用例行程序指令执行
的结果。
RETURN 返回例行程序指令,当此指令被执行时,则马上结束本例行程序的执行,返回程序指针到调用
此例行程序的位置。
当di1=1 时,执行RETURN 指令,程序指针返回到调用Routine2 的位置并继续向下执行Set do1 这个指令。
(3)WaitTime 时间等待指令
WaitTime 时间等待指令,用于程序在等待一个指定的时间以后,再继续向下执行
WaitTime 4;
Reset do1;
等待4s 以后,程序向下执行Reset do1 指令。
6.4.2 常用RAPID 指令的使用方法
1.用户输入两个数字,按钮选择一个运算符,屏幕输出运算结果(使用TPReadNum、TPReadFK、TPWrite 和
IF 指令)
2.用户输入一个0-100 的分数值,程序输出A(90-100)、B(80-89)、C(60-79)、D(0-60)四个评级。(IF ELSEIF
语句的使用)
3.使用WHILE 或FOR 循环,计算1+2+3+……+99+100 的结果。
4.RAPID 编程中的功能(FUNCTION)的使用介绍
使用自定义功能,自己实现Offs 功能和Abs 功能(需掌握带参数的功能、功能返回值以及复杂数据的赋值
,需要教师指导)。
方法,随堂联系practise10-1,
功能Abs:
功能Offs:
5.掌握中断程序的使用
(1)使用di 信号触发中断程序,每次触发,均使系统用户变量reg1 进行+1 的操作,当reg1>10 时,将reg1
重置为1。
(2)使用ITimer 指令进行定时间隔为1s 的中断触发,每次触发使系统用户变量reg2 进行+1 的操作,当
reg2>10 时,将reg2 重置为1。
6.4.3 建立一个可运行的基本RAPID 程序
在之前的章节中,已大概了解RAPID 程序编程的相关操作及基本的指令。现在就通过一个实例来体验一下ABB 机器人便捷的程序编辑。
编制一个程序的基本流程是这样的:
1)确定需要多少个程序模块。多少个程序模块是由应用的复杂性所决定的,比如可以将位置计算、程序数据、逻辑控制等分配到不同的程序模块,方便管理。
2)确定各个程序模块中要建立的例行程序,不同的功能就放到不同的程序模块中去,如夹具打开、夹具关闭这样的功能就可以分别建立成例行程序,方便调用与管理。
1.建立RAPID 程序实例(事前准备建立board10 和di1)
1. 确定工作要求:
机器人空闲时,在
位置点pHome 等
待。如果外部信号
di1 输入为1 时,机
器人沿着物体的一
条边从p10 到p20
走一条直线,结束
以后回到pHome
点。
简单,所以只需建一个程序模块就足