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