楊曉華, 楊 旭
(成都工貿(mào)職業(yè)技術(shù)學(xué)院, 四川 成都 611731)
科學(xué)技術(shù)的發(fā)展可謂日新月異,各種信息技術(shù)的不斷發(fā)展進(jìn)步,推動(dòng)著社會(huì)生產(chǎn)的各個(gè)領(lǐng)域的進(jìn)步,尤其是自動(dòng)化技術(shù)的應(yīng)用。在物流倉庫中貨車卸貨搬運(yùn)及貨物碼垛入庫,運(yùn)用伸縮系統(tǒng)進(jìn)入貨車內(nèi)部,解決貨車內(nèi)部卸貨難題[1]。機(jī)器人的應(yīng)用能夠替代人工作業(yè)適應(yīng)各種惡劣環(huán)境,并且其操作精準(zhǔn)性高,保證了生產(chǎn)的質(zhì)量[2]。智能工程抓取的總體設(shè)計(jì)思路做成了一系列成本低、性價(jià)比高、實(shí)用性高的工業(yè)機(jī)器人[3]。隨著工業(yè)自動(dòng)化技術(shù)水平的不斷提高,機(jī)器人具有高柔性、高效率與高精準(zhǔn)性,使得機(jī)器人在不同的生產(chǎn)領(lǐng)域都得到了廣泛的應(yīng)用[4]。碼垛搬運(yùn)機(jī)器人由于它工作范圍大、動(dòng)作靈活、結(jié)構(gòu)緊湊、能抓取靠近機(jī)座的物體等特點(diǎn),所以在醫(yī)藥、石化等領(lǐng)域的物料的碼垛、搬運(yùn)當(dāng)中廣泛應(yīng)用[5]。在自動(dòng)化物流生產(chǎn)線上,碼垛搬運(yùn)機(jī)器人的出現(xiàn)大大節(jié)省了人力、物力,加快了生產(chǎn)速度,成為企業(yè)普遍引進(jìn)的對象。大部分研究者只是對其結(jié)構(gòu)、運(yùn)動(dòng)方案進(jìn)行優(yōu)化設(shè)計(jì),而對機(jī)器人編程研究得較少。本文主要針對工業(yè)機(jī)器人編程進(jìn)行分析探討。
工業(yè)機(jī)器人碼垛搬運(yùn)貨物時(shí),使用示教的方法編寫程序,占用機(jī)器人的時(shí)間較長,勞動(dòng)強(qiáng)度較大并且通用性較差,一旦貨物的擺放位置和形狀改變就需要重新示教。通過在教學(xué)過程中的經(jīng)驗(yàn)總結(jié),可以利用高級編程循環(huán)指令進(jìn)行程序優(yōu)化?,F(xiàn)在以搬運(yùn)工作站,從庫里面把方塊抓出來,按照要求進(jìn)行擺放來探討For循環(huán)指令的應(yīng)用,如圖1所示。
圖1 搬運(yùn)工作站
計(jì)數(shù)循環(huán)(For)的定義:For循環(huán)是一種可以通過規(guī)定重復(fù)次數(shù)執(zhí)行一個(gè)或多個(gè)指令的控制結(jié)構(gòu)。
DECL INT counter; 定義counter變量為整數(shù)型
.......; 可以編寫相應(yīng)的指令
For counter = 1 TO 3 Step 1; Step 1表示遞增計(jì)數(shù)(循環(huán)一次,計(jì)數(shù)增加1)
......; 循環(huán)內(nèi)容
ENDFOR; 循環(huán)結(jié)束
(1)循環(huán)計(jì)數(shù)器的起始值要進(jìn)行初始化:counter=1
(2)循環(huán)計(jì)數(shù)器在ENDFOR時(shí)會(huì)以步幅STEP遞增計(jì)數(shù)(當(dāng)遞增為1時(shí),可以省略不寫)。
(3)檢查進(jìn)入循環(huán)的條件:計(jì)數(shù)變量小于等于指定的終值,循環(huán)又從FOR行開始循環(huán)計(jì)數(shù),變量大于指定的終值結(jié)束循環(huán),繼續(xù)運(yùn)行ENDFOR行后面的程序。
本文主要以教學(xué)用的搬運(yùn)工作站,擺放4行4列方塊,兩方塊中心在X、Y方向距離為80 mm來探討For循環(huán)指令的應(yīng)用,如圖2所示。
圖2 4×4擺放方塊
擺放的方塊從庫里面抓取的位置始終是不變的,可以把抓取方塊的路徑編寫在一個(gè)程序里面,作為子程序調(diào)用,本文程序編寫都基于工具坐標(biāo)系Tool[10]:pick和基坐標(biāo)系(工件坐標(biāo)系)Base[10]:block,基坐標(biāo)系定義沿工作臺(tái)橫向?yàn)閅(右正、左負(fù))縱向?yàn)閄(前正、后負(fù)),上下為Z(向上為正、向下為負(fù)),方塊在庫中位置,如圖1所示。
DEF pick ( );程序名稱
N1:SPTP HOME Vel=100% DEFAULT;機(jī)器人HOME點(diǎn)
N2:SPTP P1 Vel=100% PDAT1 Tool[10]pick Base[10]:block;避讓點(diǎn)(避讓點(diǎn)的多
少根據(jù)外圍設(shè)備情況進(jìn)行示教取點(diǎn),這里只取了一個(gè)避讓點(diǎn))
N3:SPTP P2 Vel=0.2 m PDAT2 Tool[10]pick Base[10]:block;預(yù)抓取點(diǎn)
N4:SLIN P3 Vel=0.2 m CPDAT3 Tool[10]pick Base[10]:block;抓取點(diǎn)
N5:wait time=1; 等待1秒,確保抓取點(diǎn)的準(zhǔn)確性
N6:PULSE 208 'jia' State=TRUE Time=1 sec;抓取動(dòng)作信號(hào)
N7:SLIN P2 Vel=0.2 m CPDAT2 Tool[10]pick Base[10]: block; 返回預(yù)抓取點(diǎn)
N8:SPTP P1 Vel=100% PDAT1 Tool[10]pick Base[10]: block;避讓點(diǎn)
N9:SPTP HOME Vel=100% DEFAULT;機(jī)器人HOME點(diǎn)
示教編程指由人工引導(dǎo)機(jī)器人末端執(zhí)行器(安裝于機(jī)器人關(guān)節(jié)結(jié)構(gòu)末端的夾持器、工具、焊槍、噴槍等),或用示教盒(與控制系統(tǒng)相連接的一種手持裝置,用以對機(jī)器人進(jìn)行編程或使之運(yùn)動(dòng))完成程序的編制來使機(jī)器人完成預(yù)期的動(dòng)作。下面采用示教編程完成4×4擺放方塊的程序編寫,由于程序過長,只列舉了第1個(gè)、第2個(gè)和第16個(gè)方塊的示教程序。
DEF displaying( ); 程序名稱
方塊一 N1:pick ( ); 調(diào)用抓取方塊程序
N2:SPTP P1 Vel=100% PDAT1 Tool[10] Base[10]; 避讓點(diǎn)
N3:SPTP P2 Vel=100% PDAT2 Tool[10] Base[10]; 預(yù)釋放點(diǎn)
N4:SLIN P3 Vel=0.2 m CPDAT3 Tool[10] Base[10];釋放點(diǎn)
N5:wait time=1; 等待1秒,確保釋放點(diǎn)的準(zhǔn)確性
N6:PULSE 209 'fang' State=TRUE Time=1 sec; 釋放動(dòng)作信號(hào)
N7:SLIN P2 Vel=0.2 m CPDAT2 Tool[10] Base[10]; 返回預(yù)釋放點(diǎn)
N8:SPTP P1 Vel=100% PDAT1 Tool[10] Base[10]; 避讓點(diǎn)
方塊二 N9:pick ( ) ; 調(diào)用抓取方塊程序
N10:SPTP P4 Vel=100% PDAT4 Tool[10] Base[10]; 避讓點(diǎn)
N11:SPTP P5 Vel=100% PDAT5 Tool[10] Base[10]; 預(yù)釋放點(diǎn)
N12:SLIN P6 Vel=0.2 m CPDAT6 Tool[10] Base[10];釋放點(diǎn)
N13:wait time=1; 等待1秒,確保釋放點(diǎn)的準(zhǔn)確性
N14:PULSE 209 'fang' State=TRUE Time=1 sec; 釋放動(dòng)作信號(hào)
N15:SLIN P5 Vel=0.2 m CPDAT5 Tool[10] Base[10]; 返回預(yù)釋放點(diǎn)
N16:SPTP P4 Vel=100% PDAT4 Tool[10] Base[10]; 避讓點(diǎn)
……
……
……
方塊16: NN: pick ( ) ;調(diào)用抓取方塊程序
NN:SPTP PX1Vel=100% PDATX1Tool[10] Base[10]; 避讓點(diǎn)
NN:SPTP PX2Vel=100% PDATX2Tool[10] Base[10]; 預(yù)釋放點(diǎn)
NN:SLIN PX3Vel=0.2 m CPDATX3Tool[10] Base[10];釋放點(diǎn)
NN:wait time=1; 等待1秒,確保釋放點(diǎn)的準(zhǔn)確性
NN:PULSE 209 'fang' State=TRUE Time=1 sec;釋放動(dòng)作信號(hào)
NN:SLIN PX2Vel=0.2 m CPDATX2Tool[10] Base[10]; 返回預(yù)釋放點(diǎn)
NN:SPTP PX1Vel=100% PDATX1Tool[10] Base[10]; 避讓點(diǎn)
從示教的程序來看需要搬運(yùn)的貨物越多程序就越復(fù)雜,并且示教編程所花的時(shí)間也比較長,當(dāng)貨物之間的位置、數(shù)量改變后又需要重新編程,程序通用性較差。
DEF displaying(); 程序名稱
N1:decl e6pos a[4,4]; 聲明數(shù)組變量用于存儲(chǔ)擺放方塊的位置
N2:decl int b,c; 聲明整數(shù)變量
N3:INI; 初始化
N4:b=0; 給變量賦值
N5:c=0; 給變量賦值
N6:for b=1 to 4; 從1開始循環(huán)到4終止(擺放的行數(shù)循環(huán))
N7:for c=1 to 4; 從1開始循環(huán)到4終止(擺放的列數(shù)循環(huán))
N8:a[b,c]=xp1; 把示教xp1的位置賦給a[b,c]數(shù)組,示教位置,如圖2所示
N9:a[b,c].x=a[b,c].x+80×(b-1); 80表示兩個(gè)方塊中心在X方向的距離。
N10:a[b,c].y=a[b,c].y+80×(c-1); 80表示兩個(gè)方塊中心在Y方向的距離。
N11:a[b,c].z=a[b,c].z+100; 數(shù)組a[b,c]位置坐標(biāo)在z方向位置加100 mm
N12:endfor;結(jié)束y方向循環(huán)
N13:endfor;結(jié)束x方向循環(huán)
注釋:以上的For循環(huán)進(jìn)行擺放位置計(jì)算并保存在數(shù)組中
N14:for b=1 to 4;從1開始循環(huán)到4終止(擺放的行數(shù)循環(huán))
N15:for c=1 to 4;從1開始循環(huán)到4終止(擺放的列數(shù)循環(huán))
N16: pick ( );調(diào)用抓取子程序。
N17: sptp a[b,c]; 預(yù)釋放點(diǎn)(位置存儲(chǔ)在數(shù)組a[b,c]里面)
N18: slin_rel{z-100}; 釋放點(diǎn)(在數(shù)組a[b,c]位置上向z的負(fù)方向偏移100 mm)
N19: wait time=1;等待1秒,確保釋放點(diǎn)的準(zhǔn)確性
N20: PULSE 209 'fang' State=TRUE Time=1 sec; 釋放動(dòng)作信號(hào)
N21: slin_rel{z+100};返回預(yù)釋放點(diǎn)(在數(shù)組a[b,c]位置上向z的正方向偏移100 mm)
N22:endfor; 結(jié)束y方向循環(huán)
N23:endfor; 結(jié)束x方向循環(huán)
N24:End
注釋:以上的For循環(huán)完成方塊的擺放
此研究以KUKA工業(yè)機(jī)器人碼垛搬運(yùn)作業(yè)為對象,應(yīng)用For循環(huán)指令進(jìn)行程序優(yōu)化。通過對碼垛貨物程序中For循環(huán)次數(shù)和X、Y方向之間的距離進(jìn)行修改,可實(shí)現(xiàn)不同行數(shù)列數(shù)貨物的碼垛搬運(yùn)作業(yè),減少示教編程占用機(jī)器人的大量時(shí)間,提高生產(chǎn)效率。應(yīng)用For循環(huán)優(yōu)化過的碼垛搬運(yùn)程序具有模塊化、易懂、清楚明了、可讀性、通用性、良好的經(jīng)濟(jì)效益等特點(diǎn)。該程序還可以延伸,增加一個(gè)For循環(huán)實(shí)現(xiàn)不同層數(shù)貨物的碼垛功能。