東莞工業(yè)機器人培訓專家為你講解功能程序的編程應用示例
時間:2021-06-16 16:50
來源:
功能程序編程應用示例
為了鞏固大家對功能程序的理解,下面工業(yè)機器人培訓專家給出一些功能程序的編程應用示例。期望大家能夠通過這些示例,熟練掌握系統(tǒng)內置功能程序和自定義功能程序的編程應用。例1:現(xiàn)有如圖10-20所示的軌跡,請編寫程序,使得程序運行時TCP沿該軌跡運動,要求只能示教一個目標點。
圖10-20 圖10-21
解:經過對圖10-20中的圖形進行簡單的分析,可發(fā)現(xiàn),如果對圖10-21中的P1~P15這15個目標點進行示教,即可以用MOVEJ、MOVEC等指令再現(xiàn)軌跡。因為題目中要求只允許示教1個目標點,所以我們還需要通過一個點搭配對應的偏移值,將其余各點表示出來。經過觀察,我們發(fā)現(xiàn)P1點搭配對應的偏移值,能夠很方便的將其他點表示出來。因此我們可以用下面給出的程序(已省略程序數(shù)據(jù)聲明語句),完成例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,請閱讀下面一段程序(已省略聲明語句中數(shù)據(jù)的初值),然后判斷程序執(zhí)行后完后,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循環(huán)體,循環(huán)體內的三條運動指令可以再現(xiàn)一個圓形。點P1、P2、P3、P4所在的圓半徑R=50,因此第一條圓弧指令中的P4點的Y方向偏移量(1-cos(engle))可以視作,圓沿直徑P1P3旋轉一定度數(shù)后,P4點旋轉前后的Y坐標數(shù)據(jù)的差值。sin(engle)可視作,P4點旋轉前后的Z軸坐標數(shù)據(jù)差值。而第二條圓弧運動指令中的-50*(1-cos(engle)))和-50*Sin(engle)則是P2點旋轉前后在Y軸、Z軸方向的坐標數(shù)據(jù)差值,示意圖見圖10-23。θ角以9度為增量,由0度增加到180度,因此上述程序執(zhí)行效果,相當于圓P1P2P3P4繞直徑P1P3旋轉9*N度,程序運行結束后機器人TCP經過的軌跡為圖10-24所示的球體。
圖10-23
圖10-24
例3:假設機器人當前處于靜止狀態(tài),請編寫一個RAPID程序,用以判斷機器人tool0的TCP當前位置的在基坐標系下的Z軸坐標值是否大于500,如果TCP當前位置高度大于500,由當前位置線性運動到P1點,然后由P1點線性運動到Phome點。如果TCP當前位置高度不大于500,則由當前位置直接關節(jié)運動至Phome點。P1、Phome是已聲明并正確示教的robtarget位置數(shù)據(jù)。
解:程序如下:
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
解:題目要求只能示教兩個點位,料盤的尺寸間隔又是有規(guī)可尋的,因此可以考慮使用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
本例題有配套的虛擬工作站打包文件,請在提供的虛擬工作站,完成本例題的編程任務。本例還可以利用其它指令和循環(huán)結構體來完成,工業(yè)機器人培訓專家請大家舉一反三,嘗試利用多種方法來完成本例題的編程任務,然后比較哪一種方法最簡潔。