張寶強(qiáng)
(佛山市順德區(qū)胡寶星職業(yè)技術(shù)學(xué)校 廣東 佛山 528325)
首先,輸送帶將獲取托盤(pán)或貨物運(yùn)送到指定位置并能準(zhǔn)確定位,以便于機(jī)器人能準(zhǔn)確抓取。其次,機(jī)器人檢測(cè)到物料準(zhǔn)確到位后,機(jī)器人通過(guò)專(zhuān)用夾具抓取貨物。最后,機(jī)器人經(jīng)過(guò)指定路徑將貨物按一定規(guī)律擺放的碼盤(pán)上。機(jī)器人碼垛過(guò)程是一個(gè)貨物抓取點(diǎn),經(jīng)過(guò)中間路徑過(guò)渡點(diǎn),有規(guī)律的多個(gè)貨物放置點(diǎn)。
(1)for循環(huán)指令
指令格式:for i=1 to n
;程序內(nèi)容。
endfor
指令含義:如果n=5,for循環(huán)內(nèi)的指令循環(huán)執(zhí)行5次。該指令中不需要對(duì)循環(huán)變量i進(jìn)行操作,系統(tǒng)會(huì)自動(dòng)遞增或遞減處理。
(2)while循環(huán)指令
指令格式:while <條件>
;程序內(nèi)容。
e
ndwhile
指令含義:當(dāng)條件為真實(shí),即滿(mǎn)足條件是執(zhí)行while循環(huán)內(nèi)程序。如果條件為i<5,只要i的值小于5就執(zhí)行while內(nèi)程序,執(zhí)行到endwhile再次判斷條件是否成立,成立繼續(xù)執(zhí)行while內(nèi)程序,條件不成了跳出循環(huán)。
kuka機(jī)器人有獨(dú)立的編程語(yǔ)言KRL(Kuka Roboter Language),與我們熟悉的C語(yǔ)言、C++語(yǔ)言等不同,這就加大了kuka機(jī)器人編程的難度。只有對(duì)kuka機(jī)器人進(jìn)行編程和控制,才能使kuka機(jī)器人按照設(shè)計(jì)、生產(chǎn)工藝要求進(jìn)行工作、運(yùn)行。如果機(jī)器人的編程和控制設(shè)置不好,將影響生產(chǎn),甚至不能生產(chǎn),可見(jiàn)機(jī)器人編程的重要性。
(1)kuka機(jī)器人碼垛路徑
機(jī)器人從生產(chǎn)線固定位置抓取物品,經(jīng)過(guò)中間一個(gè)或多個(gè)安全過(guò)渡點(diǎn),到達(dá)放置點(diǎn)正上方,下落到放置點(diǎn)。整個(gè)過(guò)程只有放置點(diǎn)及正上方點(diǎn)有變化,其他路徑相同。
(2)kuka機(jī)器人碼垛編程
以簡(jiǎn)單重疊式2×2×2碼垛為例用,物料尺寸為200×150×100,單層擺放見(jiàn)圖1所示,物料間隙為5mm。用while指令編程。
xfangzhi = xpos_md;xpos_md碼垛基準(zhǔn)點(diǎn)變量名,即1號(hào)位置點(diǎn)
xfangzhi10 = xpos_md10;xpos_md碼垛基準(zhǔn)點(diǎn)上方10mm點(diǎn)變量名
xfangzhi100 = xpos_md100;xpos_md碼垛基準(zhǔn)點(diǎn)上方100mm點(diǎn)變量名
i = 0
while(i<2);z軸方向擺放
j = 0
while(j<2);y軸方向擺放
k = 0
while(k<2); x軸方向擺放
PTP起點(diǎn) vel=100% PDAT1;工作起點(diǎn)
wait for in 1;檢測(cè)物料是否到位
PTP P1 vel=100% PDAT2;抓取點(diǎn)正上方100mm處
LIN P2 vel=0.2m/s CPDAT1;抓取點(diǎn)正上方10mm處
LIN zhuaqu vel=0.05m/s CPDAT2;抓取點(diǎn)
wait time= 0.2 sec;等待
out 1 state=true;夾具加緊抓取物品
wait time= 0.2 sec;等待
LIN P2 vel=0.2m/s CPDAT3;抓取點(diǎn)正上方100mm處
PTP guodu vel=100% PDAT3;安全過(guò)渡點(diǎn)
xfangzhi.x=xfangzhi.x + k*205;x軸方向偏移
xfangzhi.y=xfangzhi.y + j*155;y軸方向偏移
xfangzhi.z=xfangzhi.z +i*102 ;z軸方向偏移
xfangzhi10.x=xfangzhi10.x + k*205
xfangzhi10.y=xfangzhi10.y + j*155
xfangzhi10.z=xfangzhi10.z +i*102
xfangzhi100.x=xfangzhi100.x + k*205
xfangzhi100.y=xfangzhi100.y + j*155
xfangzhi100.z=xfangzhi100.z +i*102
PTP fangzhi100 vel=100% PDAT4;放置點(diǎn)正上方100mm處
LIN fangzhi10 vel=0.2m/s CPDAT4; 放置點(diǎn)正上方10mm處
LIN fangzhi vel=0.05m/s CPDAT5;放置點(diǎn)
wait time= 0.2 sec;等待
out 1 state=false;夾具加緊抓取物品
wait time= 0.2 sec;等待
LIN fangzhi100 vel=0.2m/s CPDAT6; 放置點(diǎn)正上方100mm處
PTP qidian vel=100% PDAT5;工作起點(diǎn)
k = k + 1
endwhile
j = j + 1
endwhile
i = i + 1
endwhile
(3)注意事項(xiàng)
①變量i、j、k程序名和ini之間用decl int i,j,k語(yǔ)句定義,使用前要進(jìn)行初始化。
②程序中指令后顯示的點(diǎn)名和點(diǎn)的變量名不同,程序中指令后顯示的點(diǎn)名前加x為該點(diǎn)變量名,如顯示點(diǎn)名為p1,點(diǎn)的變量名為xp1。
③pos_md, pos_md10, pos_md100三個(gè)點(diǎn)通過(guò)指令示教后刪除指令。
④fangzhi,fangzhi10,fangzhi100三個(gè)點(diǎn)的定義有兩種方法。
一是在date文件中定義,該方法不會(huì)定義過(guò)多不用的變量,但要熟悉KRL語(yǔ)言,較難掌握。定義語(yǔ)句為:
decl pos xfanghzi
decl pos xfanghzi10
decl pos xfanghzi100
二是通過(guò)創(chuàng)建運(yùn)動(dòng)指令定義。創(chuàng)建運(yùn)動(dòng)指令將點(diǎn)名稱(chēng)修改為需要的點(diǎn)名,如fangzhi等,創(chuàng)建完刪除或注釋掉該運(yùn)動(dòng)語(yǔ)句,使其不能運(yùn)行。該方法簡(jiǎn)單易懂,但會(huì)在date文件中增加其他變量。
本文首先介紹了碼垛基本原理及方式,使讀者對(duì)碼垛過(guò)程有一定的了解。然后以簡(jiǎn)單的重疊式碼垛為例,分析了機(jī)器人碼垛路徑特點(diǎn),講解了kuka機(jī)器人編程,闡述了變量定義方法及點(diǎn)變量引用方法和編程的難點(diǎn)及注意事項(xiàng),給出了kuka機(jī)器人while循環(huán)指令碼垛編程程序。
[1]宰守香,王蕾,申俊.基于VC++與Open Inventor的工業(yè)機(jī)器人切割仿真系統(tǒng)設(shè)計(jì)[J].制造技術(shù)與機(jī)床.2017(10).
[2]機(jī)器人編程1,庫(kù)卡系統(tǒng)軟件8.2,KUKA Roboter GmbH(庫(kù)卡機(jī)器人有限公司)培訓(xùn)資料,2011.11.10.