1、六关节机器人示教编程,华中数控-培训部石义淮,2015/7/13,机器人的编程指令包括以下七种:,(1)机器人运动指令 (2)机器人I/O指令 (3)等待指令 (4)流程控制指令 (5)寄存器指令 (6)条件指令 (7)坐标系指令,一、机器人运动指令,运动指令实现以指定速度、特定路线模式等将工具从一个位置移动到另一个指定位置。在使用运动指令时需指定以下几项内容:,(1) 动作类型:指定采用什么运动方式来控制到达指定位置的运动路径。(2) 位置数据:指定运动的目标位置。(3) 进给速度:指定机器人运动的进给速度。(4) 定位路径:指定相邻轨迹的过渡形式。(5) 附加运动指令:指定机器人在运动过程
2、中的附加执行指令。,运动指令格式如下所示:,(一)动作类型,动作类型,即指定到达指定位置的运动路径,机器人运动的类型有三种:关节定位(J)、直线运动(L)、圆弧运动(C)。,1.关节定位(J),关节定位是移动机器人各关节到达指定位置的基本动作模式。独立控制各个关节同时运动到目标位置,即机器人以指定进给速度,沿着(或围绕)所有轴的方向,同时加速、减速或停止。工具的运动路径通常是非线性的,在两个指定的点之间任意运动。以最大进给速度的百分数作为关节定位的进给速度,其最大速度由参数设定,程序指令中只给出实际运动的倍率。,P1点以100%速度采用关节定位方式移动至P2点。,2.直线运动(L),直线运动指
3、令控制 TCP(工具中心点)沿直线轨迹运动到目标位置,其速度由程序指令直接指定,单位可为 mm/sec、cm/min、inch/min。通过区别起点和终点时的姿态,来控制被驱动的工具的姿态。,P1点以100mm/sec的速度采用直线运动方式移动至P2点,3、圆弧运动 (C),圆弧运动指令控制 TCP(工具中心点)沿圆弧轨迹从起始点经过中间点移动到目标位置,中间点和目标点在指令中一并给出。其速度由程序指令直接指定,单位可为mm/sec、cm/min、inch/min。通过区别起点和终点时的姿态,来控制被驱动的工具的姿态。,P1点开始沿着过P2点的圆弧以2000mm/sec的速度运动至P3点,(二
4、)位置数据,位置数据包括位置和机器人的姿态。在进行运动指令的示教时,位置数据也同时被写入程序文件。,位置数据被划分为两种类型。一种是在关节坐标系下的关节坐标(J1、J2、J3、J4、J5、J6),没有姿态信息;另一种类型在直角坐标系下的位置和姿态两种信息(X、Y、Z、A、B、C)。,1.直角坐标系直角坐标系下的位置数据包含四个元素:用户坐标系序号、工具坐标系序号、位置/姿态和配置。,位置(X,Y,Z):代表在直角坐标系下工具中心(TCP,即工具坐标系的原点)的三维坐标; 姿态(A,B,C):代表在直角坐标系下,绕 X 轴、Y 轴、Z 轴的角位移。,配置:指机器人的姿态。包括关节定位和转数两种类
5、型:,关节定位的配置:机械腕俯仰、机械臂的上面或下面、机械臂的前面或后面。,对于关节型六轴机器人,一般有三个奇异形位。以这三个奇异行为作为临界点,可以定义机器人的三个关节属性 cfg1、cfg2、cfg3。,如上图所示,以机器人第一关节的转动轴线与第二关节的轴线平行线两者所构成的平面为参考平面,当机器人手腕中心点位于平面两侧时,分别定义机器人的第一个关节属性为“前”(cfg1=0)和“后”(cfg1=1);以机器人大臂和第三关节的轴线所构成的平面作为参考平面,当手腕中心点处于该参考平面两边时分别定义机器人的第二个关节属性为“上”(cfg2=0)和“下”(cfg2=1);以机器人小臂和第五关节的
6、轴向所构成的平面作为参考平面,当手腕中心点处于该参考平面两边时分别定义机器人的第二个关节属性为“俯”(cfg3=0)和“仰”(cfg3=1)。这三个关节属性恰好可以组合为“前下俯”、“前下仰”、“前上俯”“前上仰”、“后上俯”、“后上仰”、“后下俯”、“后下仰”8种关节属性的组合。,2.关节坐标,关节坐标系下的位置数据用每个关节的角度位置定义,关节坐标系位于每个关节的基准面。,3.位置变量和位置寄存器,在运动指令中,位置数据通过位置变量(Pi)和位置寄存器(PRi)表示。一般情况下,使用位置变量。,(1) 位置变量:是指用于保存位置数据的变量。在示教过程中,位置数据被自动保存到程序文件中,此时
7、的坐标系均为当前所选择的,当复制指令时,位置及相关信息也一同被复制。位置变量的取值范围无限制。(2) 位置寄存器:用于存放位置数据,类似通用寄存器(R 寄存器)一样使用。在菜单树窗口的“寄存器”下的“位置寄存器”中,可以对位置寄存器组号、属性等进行查看、设置和修改。,(三)进给速度,进给速度指机器人运动的速度。在程序执行过程中,进给速度可以通过倍率进行修调。倍率值范围为0%到150%。进给速度的单位取决于动作指令类型。,J P1 50% FINE当动作类型为关节定位时,指定最大进给速度的百分数,范围从1%到100%;L P1 100mm/sec FINE如果指定的动作类型为直线运动或者圆弧运动
8、时,直接指定运动的速度值(mm/sec、cm/min、inch/min),最大值由参数限制。,用寄存器指定进给速度,进给速度可以用寄存器指定。允许用户在寄存器中计算好进给速度后,再为动作指令指定进给速度。由于此时的进给速度取决于指定的寄存器,这就意味着机器人可能以一种出乎意料的速度运动,所以在使用这个功能时,在示教和操作过程中都必须小心谨慎的指定寄存器。,示例:1: J P1 R1% FINE 2: L P 2 R2mm/sec FINE 3: C P 1 P2 R3mm/sec CNT50,(四)定位路径,定位路径指定了相邻轨迹间的过渡形式,有以下两种形式:,(1) FINE:相当于准确停止
9、。,示例: FINE 定位路径: J Pi 50% FINE,当指定 FINE 定位路径时,机器人在向下一个目标点驱动前,停止在当前目标点上。,(2) CNT:相当于圆弧过渡,CNT 后的数值为过渡误差,该数值的取值范围为0到100。CNT0等价于 FINE。,示例: CNT 定位路径: J Pi 50% CNT50 当指定 CNT 定位路径时,机器人逼近一个目标点但是不停留在这个目标点上,而是向下一个目标点移动。其取值为逼近误差。例如 CNT50,表示目标 Pi点到机器人实际运行路径的最短距离为50mm。 (1)示教如等待指令这样的指令时,机器人应停止在目标点上来执行该指令,即使用 FINE
10、 定位路径。 (2) 一些短距离、高速度的动作,使用 CNT 定位路径连续不断的执行可以减速,即使指定的 CNT 值很大时,也可以减速。,(五)附加动作指令,附加动作指令让机器人完成特殊的任务,本系统目前支持的附加指令有: 加速倍率(ACC) 增量指令(INC),1、加速倍率(ACC),该指令指定运动过程中的加速度的倍率。ACC 后紧跟数字,表示加速度的倍率。如ACC80,即80%的加速度。当减小加速倍率时,加速的时间会变长(加速和减速慢慢的完成)。当加速倍率提高时,加速时间就会变短(加速和减速快速的完成)。从起点到目标点,用于执行动作的时间取决于加速倍率。加速倍率值的范围在 1%到 2000
11、%之间变化。在目标位置处添加加速倍率。注:如果加速倍率很大,可能会发生剧烈的颤动,从而引起伺服报警。如果是因为增加了加速倍率指令而导致上述情况的发生,要么减小加速倍率值,要么删除加速倍率指令,2、增量指令(INC),示例:L P1 500mm/sec FINE INC增量指令将运动指令中的位置数据用作当前位置的增量,即增量指令中的位置数据为机器人移动的增量。当位置数据为关节坐标值时,提供了每个轴的增量数据。当位置变量(Pi)作为位置数据时,用户坐标系的基准通过用户坐标系的序号指定,而用户坐标系的序号是在位置数据中指定的。当位置寄存器作为位置数据时,基准坐标系即为当前用户坐标系。在程序示教的过程
12、中,使用菜单树中的“运动指令”即可添加标准的运动指令。,二、寄存器R指令,寄存器指令在寄存器上完成算术运算。寄存器是一个存储数据的变量,本机器人系统提供了200个R 寄存器。,1.指令格式,(1) Ri=(value)Ri=(value)指令把数值(value)赋值给指定的 R寄存器。其中,i 的范围是0到199,(value)可以取常数(constant)、寄存器(R)、位置寄存 器 中的某个轴(PRi,j数字量输入/输出(DIi/DOi) 、模拟量输入/输 出(AIi/AOi)。 示例:1: R1 = DI32: RR4 = AIR1,(2) Ri=(value)+(value) Ri=(
13、value)+(value)指令把两个数值的和赋值给指定的 R 寄存器。(3) Ri=(value)-(value) Ri=(value)- (value)指令把两个数值的差赋值给指定的 R 寄存器。(4) Ri=(value)*(value) Ri=(value)* (value)指令把两个数值的乘积赋值给指定的 R 寄存器。(5) Ri=(value)/(value) Ri=(value)/ (value)指令把两个数值的商赋值给指定的 R 寄存器。(6) Ri=(value)MOD(value) Ri=(value)MOD(value)指令把两个数值的商的余数(小数部分)赋值给指定的 R
14、寄存器。(7) Ri=(value)DIV(value) Ri=(value)DIV(value)指令把两个数值的商(整数部分)赋值给指定的 R 寄存器。,对于运算寄存器可归纳如下:,示例:1:R3 = DI4+PR1,22:RR4 = R1+1,2.位置寄存器(PR)指令,位置寄存器指令在位置寄存器上完成算术操作。位置寄存器指令可以把位置数据、两个数值的和、差赋值给指定的位置寄存器。 位置寄存器是一个存储位置数据(x、y、z、w、p、r)的变量,本系统提供100个位置寄存器。,指令格式:,(1) PRi=(value) PRi=(value)指令把数值(value)赋值给指定的位置寄存器。
15、其中,i 的范围是0到99,(value)可以取位置寄存器(PR)、位置变量(P)、直角坐标系中的当前位置( Lpos)、关节坐标系中的当前位置(Jpos)、用户坐标系(UFRAMEi)、工具坐标系(UTOOLi)。,示例:1:PR1 = Lpos2:PRR4 = UFRAMER13:PR9 = UTOOL1,(2) PRi=(value)+(value)PRi=(value)+ (value) 指令把两个数值的和赋值给指定的位置寄存器。(3) PRi=(value)-(value)PRi=(value)- (value) 指令把两个数值的差赋值给指定的位置寄存器。,3.位置寄存器轴指令,位置
16、寄存器轴指令在位置寄存器上完成计算操作。PRi,j中的元素i代表位置寄存器的序号,j 代表位置寄存器元素序号。位置寄存器轴指令可以将位置数据元素的值,或两个数据的和、差、商、余数等赋值给指定的位置寄存器元素。,PRi, j类型如下:,指令格式:,(1) PRi, j=(value) PRi, j=(value)指令把数值(value)赋值给指定的位置寄存器元素。 其中,i 的范围是0到99,(value)可以取常数(constant)、寄存器(R)、位置寄存器中的某个轴(PRi,j) 位置变量中的某个轴(Pi,j) 数字量输入/输出(DIi/DOi)、模拟量输入/输出(AIi/AOi)。(2)
17、 PRi,j=(value)+(value) PRi,j=(value)+(value)指令把两个数值的和赋值给指定的位置寄存器元素。(3) PRi,j=(value)-(value) PRi,j=(value)- (value)指令把两个数值的差赋值给指定的位置寄存器元素。,(4) PRi,j=(value)*(value) PRi,j=(value)* (value)指令把两个数值的乘积赋值给指定的位置寄存器元素。(5) PRi,j=(value)/(value) PRi,j=(value)/ (value)指令把两个数值的商赋值给指定的R寄存器位置寄存器元素。(6) PRi,j=(val
18、ue)MOD(value) PRi,j=(value)MOD(value)指令把两个数值的商的余数赋值给指定的位置寄存器元素。(7) PRi,j=(value)DIV(value) PRi,j=(value)DIV(value)指令把两个数值的商的整数赋值给指定的位置寄存器元素。,示例:1:PR1=LPOS 2:PR2=PR1 3:PR2,1=PR1,1=100 4:PR3=PR2 5:PR3,2=PR2,2=100 6:PR4=PR1 7:PR4,2=PR1,2=100 8:J PR1 100% FINE 9:J PR2 100% FINE 10:J PR3 100% FINE 11:J P
19、R4 100% FINE 12:J PR1 100% FINE END,三、I/O指令,I/O指令即输入输出指令,用于操作 IO 的状态(读取输入或设置输出),包括一下两种: 数字信号输入/输出指令 模拟信号输入/输出指令,1.数字输入/输出(DI/DO)指令数字输入指令(DI)和数字输出指令(DO)是可以被用户控制的输入输出信号。 指令格式,(一)读操作(1) Ri=DIi Ri=DIi指令把数字输入信号(ON= 1 / OFF=0)赋值给指定的 R 寄存器。 其结构如下 R i = DI i Ri中的i表示寄存器0到199; DIi中的i表示数字输入的端口号,2、写操作(1) DOi=ON
20、/OFFDOi=ON/OFF 指令把 ON= 1 / OFF=0赋值给指定的数字输出信号。指令结构如下: DO i = (value) DOi中的i表示数字输出端口号; (value)-ON: 打开数字输出号OFF:关闭数字输出号,(2) DOi=PLUSE, (value)DOi=PLUSE, (value)指令使 DOi的状态取反,并维持一段指定时间 value。指令结构如下:DO i =PLUSE,(value)DOi中的i表示数字输出端口号;(value):表示状态取反维持时间(sec)示例:1:DO2 = PULSE, 0.2sec2:DOR3 = PULSE, 1.2sec,(3)
21、 DOi=RiDOi=Ri指令根据指定寄存器 R 的值,设置指定的数字输出状态。当指定的R寄存器的值为0时,数字输出 OFF;当为非0,数字输出 ON。指令结构如下:DO i =R i DOi中的i表示数字输出端口号;Ri中的i表示寄存器0到199;,(二)、 模拟输入/输出(AI/AO)指令模拟量输入输出值为连续值,信号的幅值可代表温度、电压或其他数据。指令格式1、读操作(1) Ri=AIiRi=AIi指令将模拟输入信号赋值给指定的 R 寄存器。指令结构如下:R i = AI i Ri中的i表示寄存器0到199;AIi中的i模拟输入端口号,2、写操作(1) AOi=(value)AOi=(v
22、alue)指令将数值(value)作为指定的模拟输出信号的值。指令结构如下:AO i = (value)AOi中的i模拟输出端口号(value)表示模拟信号的值(constant)。示例:1:AO1 = 02:AO R3 = 3276,(2) AOi=RiAOi=Ri指令根据指定寄存器 R 的值,设置指定的模拟输出状态。当指定的R寄存器的值为0时,数字输出 OFF;当为非0,数字输出 ON。指令结构如下:AO i = R i AOi中的i表示模拟输出端口号;Ri中的i表示寄存器0到199示例:1:AO1 = R22:AO R5 = RR1,四、条件指令,条件指令即条件比较指令,当某些条件满足时
23、,在指定的标签或者程序里产生分支。条件比较指令包括寄存器条件比较指令和输入输出条件比较指令。比较运算符包括: : 大于 =: 大于或等于 =: 等于 : 不等于 对于寄存器(R)、模拟量输入/输出比较指令,可使用全部的比较符:、=、=、;但对于数字量输入/输出比较时,只能使用=(等于)和(不等于)两种比较符。,一 寄存器条件比较指令寄存器条件比较指令将存储在寄存器中的值与另一个值比较。当比较条件满足时执行指定的操作。指令格式 IF Ri (运算符) (value) (操作) 指令结构如下:,示例: 1:IF R1 = R2, JMP LBL1 2:IF RR3 = 123, CALL subp
24、rog1,二、输入输出条件比较指令输入输出条件比较指令将输入/输出信号的值与另一个值比较。当满足比较条件时,执行指定的操作。 指令格式 (1) 模拟输入输出条件比较指令 IF (AI/AO) (运算符) (value) (操作),指令结构如下:,示例: 1:IF AO2 = 3000, JMP LBL22:IF AIR3 RR2, CALL subprog2,(2) 数字输入输出条件比较指令IF (DI/DO) (运算符) (value) (操作),指令结构如下:,示例1:IF DO2 OFF, JMP LBL12:IF DIR3 = RR4, CALL subprog2,(三)复合条件的使用
25、在比较条件中,可以使用逻辑与(AND)和逻辑或(OR)来指定复合条件。这样就简化了程序的结构,使得条件的比较更加高效。 1、逻辑与(AND) IF and and , JMP LBL 3 2、逻辑或(OR) IF or , JMP LBL 3 但如果逻辑与(AND)和逻辑或(OR)同时出现在一个指令中,逻辑就会变复杂,从而削弱了程序的可读性和可编辑性。因此,禁止在一个条件指令中同时使用 AND 和OR。 如果在单行上为一个指令指定多个“AND”或“OR”逻辑运算,并且这些逻辑运算中有一个是从“AND”变成“OR”(或是从“OR”变成“AND”),那么其他所有的“AND”(或者“OR”也会相应的
26、改变)每行中最多允许使用5个“AND”(或者“OR”)逻辑运算符。 示例: 1:IF R1234 AND DOR2OFF AND AI3=RR4, JMP LBL1 2:IF DO2OFF OR AOR3=R4, CALL subprog1,五、等待指令,等待指令用于在一个指定的时间段内,或者直到某个条件的满足时的时间段内,结束程序的指令,等待指令包括如下两种: 指定时间的等待指令:等待一个指定的时间后,再执行后续程序。 条件等待指令:等待指定的条件满足后,再执行后续程序。,(一)指定时间的等待指令 指定时间的等待指令,等待一个指定的时间(以秒为单位)后,再执行后续程序。,指令结构如下:,指令
27、格式: WAIT (value) sec,示例1:WAIT 10.5sec2:WAIT R1sec,(二)条件等待指令条件等待指令,等待程序的执行,直到指定的条件满足或者经过了指定的时间段。有以下两种指定暂停程序的方法: 如果没有指定操作(processing),程序将无限期等待,直到满足指定的条件为止。 如果指定了操作(如TIMEOUT LBLi),当指定的条件不满足,且等待超时后,程序将跳转到指定的目标处运行。超时等待时间由系统参数设置。,(1)寄存器条件等待指令,寄存器条件等待指令将 R 寄存器的值与另外一个值进行比较,并等待直到满足比较条件为止。,指令格式,WAIT Ri (比较符)
28、(value) (操作),指令结构如下:,示例:1:WAIT R2 1, TIMEOUT LBL12:WAIT RR1 = R3,(2) 输入/输出条件等待指令输入/输出条件等待指令将输入/输出信号的值与另一个值进行比较,并等待直到满足比较条件为止。,指令格式,1、模拟输入输出条件等待指令,WAIT (AI/AO) (比较符) (value) (操作),指令结构如下:,示例:1:WAIT AI2 1, TIMEOUT LBL12:WAIT AOR1 = R3,2、数字输入输出条件比较指令,WAIT (DI/DO) (比较符) (value) (操作),指令结构如下:,示例:1:WAIT DI2
29、 ON, TIMEOUT LBL12:WAIT DOR1 = R3,六、流程控制指令,流程控制指令用来控制程序的执行顺序,控制程序从当前行跳转到指定行去执行,流程控制指令包括以下几种指令: 标签指令 程序结束指令 无条件跳转指令 子程序调用指令,(一) 标签指令,标签指令用于指定程序执行的分支跳转的目标。 标签一经执行,对于条件指令、等待指令和无条件跳转指令都是适用的。不能把标签序号指定为间接寻址(如 LBLR1),指令格式,LBLi,指令结构如下:,(二) 程序结束指令,程序结束指令标志着一个程序的结束。通过这个指令终止程序的执行。如果该程序是被其他的主程序调用,则控制该子程序返回到主程序中
30、。 程序结束指令在新建程序时,系统已自动添加到程序文件的末尾,无需用户自己添加。,指令格式,END,(三)无条件跳转指令,无条件跳转指令是指在同一个程序中,无条件的从程序的一行跳转到另一行去执行,即将程序控制转移到指定的标签。,指令格式,JMP LBLi,指令结构如下:,(四) 子程序调用指令,子程序调用指令将程序控制转移到另一个程序(子程序)的第一行,并执行子程序。当子程序执行到程序结束指令(END)时,控制会迅速的返回到调用程序(主程序)中的子程序调用指令的下一条指令,继续向后执行。 需要选择子程序名,或直接新建一个子程序,详细操作请参照前面章节的操作说明。,指令格式,CALL (子程序名
31、),指令结构如下:,示例:1:CALL SUB1,七、其他指令,其他指令主要包括一下几条指令 1.坐标系指令 2.用户报警指令 3.倍率指令 4.注释指令 5.信息指令 6.预读指令,(一)坐标系指令 坐标系指令用于改变机器人当前工作所使用的坐标系的设置。有以下两种坐标系指令: 坐标系设置指令- 改变指定的坐标系的定义。 坐标系选择指令- 改变当前选择的坐标系的序号。,(1) 坐标系设置指令工具坐标系设置指令,改变由工具坐标系序号指定的工具坐标系的设置。 工件坐标系设置指令,改变由工件坐标系序号指定的工件坐标系的设置。 指令格式,工具坐标系设置指令,UTOOLi=(value),指令结构如下:
32、,示例:1: UTOOL1 = PR12: UTOOLR2 = PRR3,工件坐标系设置指令,UFRAMEi=(value),指令结构如下:,示例:1: UFRAME1 = PR12: UFRAMER2 = PRR3,(2) 坐标系选择指令工具坐标系选择指令,改变当前工具坐标系的序号。 工件坐标系选择指令,改变当前工件坐标系的序号。,指令格式,工具坐标系选择指令,UTOOL_NUM=(value),指令结构如下:,示例:1:UTOOL_NUM = 1 2: J P1 100% FINE 3: L P2 500mm/sec FINE 4: UTOOL_NUM = R2 5: L P3 500mm
33、/sec FINE 6: L P4 500mm/sec FINE,工件坐标系选择指令,UFRAME_NUM=(value),指令结构如下:,(二)用户报警指令用户报警指令显示报警信息,并中止程序的运行。报警信息在系统信息的用户报警界面中设置。,指令格式,UALMi,指令结构如下:,UALMi- i:报警号(9000 到 9099),(三) 倍率指令,倍率指令改变进给速度倍率。,指令格式,OVERRIDE = (value)%,指令结构如下:,(四) 注释指令注释指令在程序中添加注释。注释不影响程序的执行。在注释指令中指定注释,一条注释最多可以包含32个字符。注释指令在程序选择输入界面中的表现形式是 COMMENT(注释),选中并输入到示教界面后,示教界面显示为“!”。指令格式!(注释内容)-可包含32个字符的注释,(五)信息指令 信息指令即在用户界面上显示指定的信息。一条信息最多可以包含24个字符。指令格式MESSAGE (信息显示内容)-可包含24个字符的注释(六) 预读指令 预读指令即设置开启或关闭预读功能。指令格式LOOKAHEAD=ON/OFF,谢谢!,