报名人数298782
资讯中心 > 课程相关资讯 > 机器人培训 > 机器人培训 > 东莞工业机器人培训专家为你讲解功能程序的编程应用示例

东莞工业机器人培训专家为你讲解功能程序的编程应用示例

时间:2021-06-16 16:50 来源:

功能程序编程应用示例

为了巩固大家对功能程序的理解,下面工业机器人培训专家给出一些功能程序的编程应用示例。期望大家能够通过这些示例,熟练掌握系统内置功能程序和自定义功能程序的编程应用。
 

例1:现有如图10-20所示的轨迹,请编写程序,使得程序运行时TCP沿该轨迹运动,要求只能示教一个目标点。
    
                        图10-20                                                         图10-21



解:经过对图10-20中的图形进行简单的分析,可发现,如果对图10-21中的P1~P15这15个目标点进行示教,即可以用MOVEJ、MOVEC等指令再现轨迹。因为题目中要求只允许示教1个目标点,所以我们还需要通过一个点搭配对应的偏移值,将其余各点表示出来。经过观察,我们发现P1点搭配对应的偏移值,能够很方便的将其他点表示出来。因此我们可以用下面给出的程序(已省略程序数据声明语句),完成例1的编程任务。
   
PROC main()
P2:=offs(p1,0,50,0);
P3:=offs(p1,50,0,0);
P4:=offs(p1,50,50,0);
P5:=offs(p1,50,0,0);
P6:=offs(p1,25,25,0);
P7:=offs(p1,-25,-25,0);
P8:=offs(p1,0,50,0);
P9:=offs(p1,0,50,0);
P10:=offs(p1,0,50,0);
P11:=offs(p1,0,50,0);
P12:=offs(p1,0,50,0);
P13:=offs(p1,0,50,0);
P14:=offs(p1,0,50,0);
P15:=offs(p1,0,50,0);
MoveJ offs(p2,0,0,20),v400,fine,mytoolWObj:=wobj1;
Movej p2,v400,fine,mytoolWObj:=wobj1;
MoveC p3,p4,v400,fine,mytoolWObj:=wobj1;
MoveC p5,p2,v400,fine,mytoolWObj:=wobj1;
MoveC p6,p1,v400,fine,mytoolWObj:=wobj1;
MoveC p7,p4,v400,fine,mytoolWObj:=wobj1;
MoveJ offs(p8,0,0,20),v400,fine,mytoolWObj:=wobj1;
MoveJ p8,v400,fine,mytoolWObj:=wobj1;
MoveC p9,p10,v400,fine,mytoolWObj:=wobj1;
MoveC p11,p8,v400,fine,mytoolWObj:=wobj1;
MoveJ offs(p12,0,0,20),v400,fine,mytoolWObj:=wobj1;
MoveJ p12,v400,fine,mytoolWObj:=wobj1;
MoveC p13,p14,v400,fine,mytoolWObj:=wobj1;
MoveC p15,p12,v400,fine,mytoolWObj:=wobj1;
MoveJ offs(p12,0,0,20),v400,fine,mytoolWObj:=wobj1;
ENDPROC
 
例2:如图10-22所示,P1~P4是圆的象限点,圆的半径R=50mm,请阅读下面一段程序(已省略声明语句中数据的初值),然后判断程序执行后完后,TCP经过的轨迹是怎样的。

                         图10-22 

PERS robtarget p3:=[......];
PERS robtarget p4:= [......];
PERS robtarget p1:=[ [......];
PERS robtarget p2:= [......];
PROC main()
FOR engle FROM 0 TO 180 STEP 9 DO
  MoveJ p3,v400,fine,MyTool;
MoveC Offs(p4,0,50*(1-Cos(engle)),50*sin(engle)),p1,v400,fine,MyTool;
  MoveC Offs(p2,0,-50*(1-Cos(engle)),-50*Sin(engle)),p3,v400,fine,MyTool;
ENDFOR
ENDPROC
 
解:main程序内只有一个for循环体,循环体内的三条运动指令可以再现一个圆形。点P1、P2、P3、P4所在的圆半径R=50,因此第一条圆弧指令中的P4点的Y方向偏移量(1-cos(engle))可以视作,圆沿直径P1P3旋转一定度数后,P4点旋转前后的Y坐标数据的差值。sin(engle)可视作,P4点旋转前后的Z轴坐标数据差值。而第二条圆弧运动指令中的-50*(1-cos(engle)))和-50*Sin(engle)则是P2点旋转前后在Y轴、Z轴方向的坐标数据差值,示意图见图10-23。θ角以9度为增量,由0度增加到180度,因此上述程序执行效果,相当于圆P1P2P3P4绕直径P1P3旋转9*N度,程序运行结束后机器人TCP经过的轨迹为图10-24所示的球体。
 
图10-23   
 
图10-24



例3:假设机器人当前处于静止状态,请编写一个RAPID程序,用以判断机器人tool0的TCP当前位置的在基坐标系下的Z轴坐标值是否大于500,如果TCP当前位置高度大于500,由当前位置线性运动到P1点,然后由P1点线性运动到Phome点。如果TCP当前位置高度不大于500,则由当前位置直接关节运动至Phome点。P1、Phome是已声明并正确示教的robtarget位置数据。
 
解:程序如下:
PROC main()
p_tcp := CRobT();
IF p_tcp.trans.z > 500 THEN
MoveL p1, v1000, fine, tool0;
MoveL Phome, v1000, fine, tool0;
ELSEIF p_tcp.trans.z <= 500 THEN
MoveJ Phome, v1000, fine, tool0;
ENDIF
ENDPROC

例4:九宫格工件搬运编程练习,如图10-25所示 ,工件会在A位置处源源不断产生,请编写程序将A位置处的工件拾取放置到B处的料盘内,直到将料盘的九个位置放满。要求所编写的程序最多示教两个robtarget位置点。料盘格子的间隔尺寸如图10-26所示。
           
图10-25     
 
                                                                                         
图10-26


解:题目要求只能示教两个点位,料盘的尺寸间隔又是有规可寻的,因此可以考虑使用offs功能程序进行编程。
(1)以料盘的右上角端点为原点,以长边为X轴,以短边为Y轴,定义工件坐标系wobj1;
(2)示教拾取A位置工件的点为p_pick,将夹起的工件正确放置到料盘右上角格子的位置示教为p_place;
(3)配置do信号DO_1Gripper用于控制夹爪;
(4)编写如下程序用以完成编程任务:
PROC main()
PulseDOPLength:=0.2,DO_1Gripper;
WHILE reg_H*reg_L<6 DO
Incr CNT;
IF reg_L<3 THEN
IF reg_H<3 THEN
MoveJ Offs(p_take,0,0,100),v1000,z20,tool0WObj:=wobj1;
MoveL p_take,v200,fine,tool0WObj:=wobj1;
Set DO_1Gripper;
WaitTime 0.2;
MoveL Offs(p_take,0,0,100),v1000,z20,tool0WObj:=wobj1;
MoveJ Offs(p_put,reg_H*100,reg_L*70,100),v1000,z20,tool0WObj:=wobj1;
MoveL Offs(p_put,reg_H*100,reg_L*70,0),v200,fine,tool0WObj:=wobj1;
Reset DO_1Gripper;
WaitTime 0.5;
MoveL Offs(p_put,reg_H*100,reg_L*70,100),v1000,z20,tool0WObj:=wobj1;
reg_H:=reg_H+1;
ELSE
reg_H:=0;
reg_L:=reg_L+1;
ENDIF
ELSE
reg_H:=0;
reg_L:=0;
ENDIF
ENDWHILE
ENDPROC
 

本例题有配套的虚拟工作站打包文件,请在提供的虚拟工作站,完成本例题的编程任务。本例还可以利用其它指令和循环结构体来完成,工业机器人培训专家请大家举一反三,尝试利用多种方法来完成本例题的编程任务,然后比较哪一种方法最简洁。