5.1.2建立RAPID程序5.2基本RAPID程序指令ABB工业机器人提供了多种编程指令可以完成工业机器人在焊接、码垛、搬运等各种应用。下面将从最常用的指令开始学习RAPID编程。5.2.1赋值指令赋值指令是用于对编程时的程序数据进行赋值,符号“:=”,赋值对象是常量或数学表达式。常量赋值:reg1:=17;数学表达式赋值:reg2:=reg1+8;添加常量赋值指令的操作如下(2)添加带数学表达式的赋值指令的操作5.2.2工业机器人常用运动指令工业机器人在空间中常用运动指令主要有关节运动(MoveJ)、线性运动(MoveL)、圆弧运动(MoveC)和绝对位置运动MoveAbsJ)四种方式。1.绝对位置运动指令绝对位置运动指令是机器人的运动使用六个轴和外轴的角度值来定义目标位置数据。操作步骤如下:MoveAbsJjpos10\NoEOffs,v1000,z50,tool1\Wobj:=wobj1;MoveAbsJ指令解析2.关节运动指令关节运动指令是对路径精度要求不高的情况下,工业机器人的工具中心点TCP从一个位置移动到另一个位置,两个位置之间的路径不一定是直线。关节运动MoveJp10,v1000,z50,tool1\Wobj:=wobj1;关节运动适合机器人大范围运动时使用,不容易在运动过程中出现关节轴进入机械死点的问题。目标点位置数据定义机器人TCP点的运动目标,可以在示教器中单击“修改位置”进行修改。运动速度数据定义速度(mm/s),转弯区数据定义转变区的大小mm,工具坐标数据定义当前指令使用的工具,工件坐标数据定义当前指令使用的工件坐标。3.线性运动指令线性运动是机器人的TCP从起点到终点之间的路径始终保持为直线。一般如焊接、涂胶等应用对路径要求高的场合使用此指令。线性运动4.圆弧运动指令圆弧路径是在机器人可到达的控件范围内定义三个位置点,第一个点是圆弧的起点,第二个点用于圆弧的曲率,第三个点是圆弧的终点MoveLp10,v1000,fine,tool1\Wobj:=wobj1;MoveCp30,p40,v1000,z1,tool1\Wobj:=wobj1;MoveC指令解析5.2.3运动指令的使用示例运动速度一般最高为50000mm/s,在手动限速状态下,所有的运动速度被限速在250mm/s。fine指机器人TCP达到目标点,在目标点速度降为零。工业机器人动作有所停顿然后再向下运动,如果是一段路径的最后一个点,一定要为fine。转弯区数值越大,机器人的动作路径就越圆滑与流畅。5.2.4I/O控制指令I/O控制指令用于控制I/O信号,以达到与机器人周边设备进行通信的目的。1.Set数字信号置位指令Set数字信号置位指令用于将数字输出(DigitalOutput)置位为“1”,do1数字输出信号。Setdo1;2.Reset数字信号复位指令Reset数字信号复位指令用于将数字输出(DigitalOutput)置位为“0”。如果在Set、Reset指令前有运动指令MoveJ、MoveL、MoveC、MoveAbsJ的转弯区数据,必须使用fine才可以准确地输出I/O信号状态的变化。Resetdo1;3.WaitDI数字输入信号判断指令WaitDI数字输入信号判断指令用于判断数字输入信号的值是否与目标一致,di1数字输入信号。WaitDIdi1,1;程序执行此指令时,等待di1的值为1。如果di1为1,则程序继续往下执行;如果到达最大等待时间300s(此时间可根据实际进行设定)以后,di1的值还不为1,则机器人报警或进入出错处理程序。4.WaitDO数字输出信号判断指令WaitDO数字输出信号判断指令用于判断数字输出信号的值是否与目标一致。WaitDOdo1,1;参数以及说明同WaitDi指令。5.WaitUntil信号判断指令WaitUntil信号判断指令可用于布尔量、数字量和I/O信号值的判断,如果条件到达指令中的设定值,程序继续往下执行,否则就一直等待,除非设定了最大等待时间。flag1为布尔量型数据,num1数字型数据。WaitUntildi1=1;WaitUntildo1=0;WaitUntilflag=TRUE;WaitUntilnum1=8;5.2.5条件逻辑判断指令条件逻辑判断指令用于对条件进行判断后,执行相应的操作,是RAPID中重要的组成部分。1.CompactIF紧凑型条件判断指令CompactIF紧凑型条件判断指令用于当一个条件满足了以后,就执行一句指令。IFflag1=TRUESetdo1;如果flag1的状态为TRUE,则do1被置位为1。2.IF条件判断指令IF条件判断指令,就是根据不同的条件去执行不同的指令。指令解析:IFnum1=1THENflag:=TRUE;ELSEIFnum1=2THENflag1:=FALSE;ELSESetdo1;ENDIF如果num1为1,则flag1会赋值为TRUE。如果num1为2,则flag1会赋值为FALSE。除了以上两种条件之外,则执行do1置位为1。条件判定的条件数量可以根据实际情况进行增加与减少。3.FOR重复执行判断指令FOR重复执行判断指令,是用于一个或多个指令需要重复执行次数的情况FORiFROM1TO6DORoutine1;ENDFOR例行程序Routine1,重复执行6次。4.WHILE条件判断指令WHILE条件判断指令,用于在给定条件满足的情况下,一直重复执行对应的指令。WHILEnum1num2DOnum1:=num1-1;ENDWHILE当num1num2的条件满足的情况下,就一直执行num1:=num1-1的操作。5.2.6其他的常用指令1.ProcCall调用例行程序指令通过使用此指令在指定的位置调用例行程序。2.RETURN返回例行程序指令RETURN返回例行程序指令,当此指令被执行时,则马上结束本例行程序的执行,返回程序指针到调用此例行程序的位置。当di1=1时,执行RETURN指令,程序指针返回到调用Routine2的位置并继续向下执行Setdo1这个指令。3.WaitTime时间等待指令WaitTime时间等待指令,用于程序在等待一个指定的时间以后,再继续向下执行WaitTime4;Resetdo1;等待4s以后,程序向下执行Resetdo1指令。5.3建立一个可运行的基本RAPID程序编制基本RAPID程序流程如下:1)确定需要多少个程序模块。多少个程序模块是由应用的复杂性所决定的,比如可以将位置计算、程序数据、逻辑控制等分配到不同的程序模块,方便管理。2)确定各个程序模块中要建立的例行程序,不同的功能就放到不同的程序模块中去,如夹具打开、夹具关闭这样的功能就可以分别建立成例行程序,方便调用与管理。1.建立RAPID程序实例(事前准备建立board10和di1)2.对RAPID程序进行调试——pHome程序编辑后,接下来要对程序进行调试,调试的目的是检查程序的位置点是否正确和检查逻辑控制是否有不完美的地方。程序调试步骤如下:3.对RAPID程序进行调试——rMoveRoutine4.对RAPID程序进行调试——main主程序5.RAPID程序自动运行的操作在手动状态下,完成了调试确认运动与逻辑控制正确之后,就可以将机器人系统投入自动运行状态,以下就RAPID程序自动运行的操作:6.RAPID程序模块的保存5.4RAPID编程详解5.4.1自定义功能ABB工业机器人编程中的功能与指令相似,在执行完功能指令后返回一个数值。使用功能可以有效地提高编程以及程序执行效率。下面主要介绍功能指令Abs、Offs的操作方法。Abs操作步骤如下:功能Offs的作用是基于目标点在XYZ方向的偏移。如:“P40:=OFFS(P30,150,230,300)”是指p40相对于p30点在X方向偏移150mm,Y方向偏移230mm,Z方向偏移300mm。Offs操作步骤如下:5.4.2中断程序在工业机器人工作过程中,常会有一些紧急需要处理,这时要求工业机器人会中断当前的执行,程序指针PP马上跳转到专门的程序中对紧急的情况进行相应的处理,处理结束后程序指针PP返回到原来被中断的地方,继续往下执行程序。这种专门用来处理紧急情况的专门程序,称作中断程序(TRAP)。中断程序经常会用于出错处理、外部信号的响应这种实时响应要求高的场合。现以传感器的信号进行实时监控为例编写一个中断程序:1、在正常情况下,di1的信号为0.2、如果di1的信号从0变成1,就对reg1数据进行加1的操作。操作步骤如下:程序举例程序开始运行时,机器人末端工具以500mm/s的速度移至phome点位置待机;待机状态下,当信号di1由0变为1时,机器人开始运动,末端工具运动速度为1000mm/s,运动轨迹为画一个以p10点为圆形,半径为200mm的圆,运动完成后,机器人末端工具以500mm/s的速度返回phome点位置待机。PROCmain()rIniAll;WHILETRUEDOMoveJphome,v500,z50,tool1\WObj:=wobj1;ENDWHILEENDPROCPROCrIniAll()MoveJphome,v500,z50,tool1\WObj:=wobj1;IDeleteintno1;CONNECTintno1WITHtMonitorDI1;ISignalDIdi1,1,intno1;ENDPROCTRAPtMonitorDI1MoveJOffs(p10,200,0,0),v1000,fine,tool1\WObj:=wobj1;MoveCOffs(p10,0,200,0),Offs(p10,-200,0,0),v1000,z10,tool1\WObj:=wobj1;MoveCOffs(p10,0,-200,0),Offs(p10,200,0,0),v1000,fine,tool1\WObj:=wobj1;ENDTRAPENDMODULE