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