梁 晶,程志剛,王慶磊
(國核自儀系統(tǒng)工程有限公司,上海 201108)
隨著工業(yè)技術(shù)的發(fā)展,出現(xiàn)各種各樣清洗設(shè)備,超聲波清洗機(jī)是工業(yè)中較常見的一種。利用超聲波[1]在液體中傳播,使液體與清洗槽在超聲波頻率下一起振動(dòng),液體與清洗槽振動(dòng)時(shí)有自己的固有頻率,這種振動(dòng)頻率是聲波頻率,所以人們就聽到嗡嗡聲。超聲波清洗機(jī)的傳送方式通常有轉(zhuǎn)盤式、鏈條通過式、移栽槽式等。然而,超聲波槽式清洗機(jī)的控制需要多個(gè)槽來回往復(fù)式地清洗,不同的產(chǎn)品,清洗的槽位可能還不一樣,這就導(dǎo)致了程序復(fù)雜度較高,槽位越多,程序就越復(fù)雜,修改也越麻煩。如果使用隊(duì)列,就能滿足客戶不同產(chǎn)品隨意組合槽位、增加清洗位號(hào)的需要,并且接口可以根據(jù)需要適當(dāng)開放出來,讓客戶自己根據(jù)產(chǎn)品工藝需求調(diào)整清洗順序。
隊(duì)列(queue)[2]是一種線性表,它的特性是先進(jìn)先出,插入在一端,刪除在另一端。就像排隊(duì)一樣,剛來的人入隊(duì)(push)要排在隊(duì)尾(rear),每次出隊(duì)(pop)的都是隊(duì)首(front)的人。隊(duì)列的操作主要有元素入隊(duì)列和元素出隊(duì)列。建立順序隊(duì)列結(jié)構(gòu)[3]必須為其靜態(tài)分配或動(dòng)態(tài)申請(qǐng)一片連續(xù)的存儲(chǔ)空間,并設(shè)置兩個(gè)指針進(jìn)行管理。一個(gè)是隊(duì)頭指針front,它指向隊(duì)頭元素;另一個(gè)是隊(duì)尾指針rear,它指向下一個(gè)入隊(duì)元素的存儲(chǔ)位置,如圖1所示。
圖1 順序隊(duì)列操作示意圖
每次在隊(duì)尾插入一個(gè)元素時(shí),rear 增1;每次在隊(duì)頭刪除一個(gè)元素時(shí),front 增1。隨著插入和刪除操作的進(jìn)行,隊(duì)列元素的個(gè)數(shù)不斷變化,隊(duì)列所占的存儲(chǔ)空間也在為隊(duì)列結(jié)構(gòu)所分配的連續(xù)空間中移動(dòng)。當(dāng)front=rear 時(shí)[4-5],隊(duì)列中沒有任何元素,稱為空隊(duì)列。當(dāng)rear 增加到指向分配的連續(xù)空間之外時(shí),隊(duì)列無法再插入新元素,但這時(shí)往往還有大量可用空間未被占用,這些空間是已經(jīng)出隊(duì)的隊(duì)列元素曾經(jīng)占用過的存儲(chǔ)單元。
系統(tǒng)機(jī)構(gòu)圖,如圖2所示。
圖2 系統(tǒng)機(jī)構(gòu)圖
1)從圖2 中可以看出,系統(tǒng)由進(jìn)料部、機(jī)械臂、清洗槽和出料部等組成。進(jìn)料部和出料部的機(jī)構(gòu)由其他部件組成,和本文隊(duì)列思想無關(guān),不進(jìn)行具體描述。主要介紹機(jī)械臂和超聲波清洗槽這兩大部分。機(jī)械臂由橫移伺服、升降伺服和機(jī)械掛鉤組成。超聲波清洗槽共由A 槽、B 槽、C 槽、D 槽、E 槽、F 槽六個(gè)槽位組成。各槽功能介紹如下:A 槽功能是超聲波預(yù)清洗;B 槽功能是超聲波清洗;C 槽功能是超聲波拋動(dòng)清洗;D 槽功能是超聲波溢流漂洗;E 槽功能是超聲波溢流拋動(dòng)漂洗;F 槽功能是超聲波溢流再次拋動(dòng)漂洗。
2)機(jī)械臂在各個(gè)清洗槽移動(dòng)的工作原理。機(jī)械臂到上料位取料,然后把料放入到A 槽,清洗一定時(shí)間后,機(jī)械臂把料從A 槽放到B 槽,然后機(jī)械臂再去上料位取一個(gè)新料放入A 槽清洗,同樣清洗一定時(shí)間后,機(jī)械臂把料從B 槽放入C 槽,同時(shí)把新料從A 槽放入B 槽,再去上料位取一個(gè)新料放入A 槽。依此下去,最后的邏輯是機(jī)械臂從F 槽取料然后去下料位放料,然后E 槽取料到F 槽放料,D 槽取料到E 槽放料,C 槽取料到D 槽放料,B 槽取料到C 槽放料,A 槽取料到B 槽放料,然后上料位取料到A 槽放料,按照此流程往復(fù)循環(huán)工作。
根據(jù)清洗工作原理,一般的程序設(shè)計(jì)思想是按機(jī)械臂的移動(dòng)流程一步步設(shè)計(jì)程序,但是這樣的話程序開發(fā)工作量非常大,并且一旦客戶要稍微改下清洗的順序,又需要大量改動(dòng)程序流程,這時(shí)使用隊(duì)列的思想就可以完美解決以上兩個(gè)難點(diǎn)。
首先給上料位、A 槽、B 槽、C 槽、D 槽、E 槽、F槽、下料位等分別做一個(gè)位置編號(hào),相對(duì)應(yīng)為1、2、3、4、5、6、7、8 共八個(gè)位置號(hào)。那么機(jī)械臂的移動(dòng)流程就是7-8-6-7-5-6-4-5-3-4-2-3-1-2-結(jié)束,然后下一個(gè)循環(huán)。如圖3所示。
圖3 機(jī)械臂隊(duì)列流程
從圖3 隊(duì)列流程可以看出,隊(duì)列頭部的數(shù)據(jù)是機(jī)械臂即將要走的位置,例如先移動(dòng)到7 號(hào)位置取料,7號(hào)位置走完,對(duì)隊(duì)列元素進(jìn)行出隊(duì)操作,并且隊(duì)尾填充數(shù)字0 操作。這一步操作完成,排在頭部位置是數(shù)據(jù)8。如圖4所示。
圖4 機(jī)械臂隊(duì)列流程移動(dòng)后
程序依此順序操作,每移動(dòng)一步,隊(duì)列左移一個(gè)數(shù)據(jù),隊(duì)尾就填充數(shù)據(jù)0,當(dāng)程序檢索數(shù)據(jù)為0 時(shí),就認(rèn)為機(jī)械臂移動(dòng)流程都已完成,此時(shí)對(duì)隊(duì)列重新填充數(shù)據(jù)7-8-6-7-5-6-4-5-3-4-2-3-1-2,這樣程序就形成了循環(huán)取料、放料的動(dòng)作流程。
如上描述,當(dāng)客戶更改清洗工藝或者換型時(shí),只需要修改、增加或者刪減隊(duì)列中的元素即可完成工藝的變更或型號(hào)切換,操作簡(jiǎn)單方便,也可以把這個(gè)動(dòng)作流程順序接口做到觸摸屏界面上,開放給客戶輸入,并設(shè)置安全權(quán)限,提高設(shè)備的靈活性、操作的便捷性。
根據(jù)流程設(shè)計(jì)描述,進(jìn)行清洗設(shè)備這一部分的程序開發(fā),首先要定義機(jī)械臂的位置號(hào),本文中機(jī)械臂共有8 個(gè)位置[2],因此,要對(duì)橫移伺服設(shè)定8 個(gè)絕對(duì)位置,程序要進(jìn)行哪一個(gè)位置移動(dòng)時(shí),就隨時(shí)調(diào)用橫移伺服的絕對(duì)位置啟動(dòng)信號(hào)。定義橫移伺服的絕對(duì)位置程序編寫如圖5所示。
圖5 橫移伺服1#絕對(duì)位置程序段
定義好橫移伺服的絕對(duì)位置后,需要把橫移伺服的隊(duì)列元素轉(zhuǎn)換為程序語言,每一個(gè)位置號(hào)[3]用4個(gè)Bit 位表示,4 個(gè)Bit 位最大可表示為二進(jìn)制1111 即十進(jìn)制數(shù)據(jù)15。本程序中最大位置號(hào)是8,因此足夠用。把本文隊(duì)列流程7-8-6-7-5-6-4-5-3-4-2-3-1-2 賦值給三菱PLC 的數(shù)據(jù)寄存器D1350/D1351/D1352/D1353(一個(gè)數(shù)據(jù)寄存器D 是由16 個(gè)Bit 位組成,要完成本文的流程步號(hào),需要4 個(gè)寄存器D,寄存器編號(hào)1350—1353),程序編寫如圖6所示。
圖6 隊(duì)列流程轉(zhuǎn)為程序語言
因?yàn)槭? 個(gè)Bit 位表示一個(gè)位置序列號(hào),所以需要把寄存器D 再分解成軟元件位S,編號(hào)從S130 開始,總共4 個(gè)寄存器D,共占用64 個(gè)Bit,然后通過三菱PLC 左移指令SFTLP 進(jìn)行4 個(gè)Bit 一起左移,即可得出想要移動(dòng)的位置號(hào)。具體程序編寫如圖7所示。
圖7 左移位號(hào)并調(diào)用絕對(duì)定位
隊(duì)列常用于高級(jí)語言程序開發(fā)[9-10],在PLC 實(shí)際運(yùn)用中較少使用,隨著目前社會(huì)工業(yè)自動(dòng)化程度的提高,客戶需求復(fù)雜多變,結(jié)合實(shí)際情況,熟練運(yùn)用隊(duì)列思想能夠使程序開發(fā)工作化繁為簡(jiǎn),游刃有余。本文將隊(duì)列這一思想簡(jiǎn)單融入超聲波清洗設(shè)備的移栽程序段中,完美地克服了原有程序呆板且繁雜的缺點(diǎn)[11-12],大大提高了程序開發(fā)效率,思路簡(jiǎn)單清晰,保證了程序運(yùn)行的穩(wěn)定性,也為后續(xù)的設(shè)備維護(hù)提供了保障。
舉一反三,類似于這種多位置多組合反復(fù)調(diào)用的情況,如小車的多位置往返移動(dòng)、多層貨梯、呼叫器等,都可以靈活運(yùn)用隊(duì)列,并結(jié)合其他指令,使隊(duì)列元素能夠進(jìn)行左移、右移、刪除、插入等各種操作,提高實(shí)際應(yīng)用價(jià)值。