劉一凡
(肇慶學院 電子信息與機電工程學院,廣東 肇慶 526061)
自動售貨機被稱為24 小時營業的微型超市,遍布于各大中城市人口密集的場所,隨著城市建設的發展,其市場潛力無限.售貨機常置于室內外便于行人取用的地方,所以它應具有環境適應能力強、可靠性高、抗干擾性強等特點.PLC是為應對惡劣工業環境設計的控制器,因此自動售貨機大多以PLC為控制核心部件.由于自動售貨機具有貨幣傳動、貨幣識別、金額計算、貨物傳動、退幣等功能,是一個綜合性較強的控制系統,因此,在PLC教學中教師常以售貨機為實例,加深學生對PLC知識的理解和對實際應用的認識,這也可為學生在該行業就業打下良好的基礎.為了解決教學中PLC無控制對象問題,使抽象的PLC程序控制能夠達到所見即所得,筆者應用組態王軟件開發了PLC控制的虛擬自動售貨機仿真交易系統.
在虛擬自動售貨機仿真系統中PLC控制的是計算機顯示屏上的仿真自動售貨機,控制的是虛擬對象,其端口沒有外接任何電器部件.其幣值識別系統、貨幣和商品的傳動機構等功能通過仿真來實現,貨幣識別通過單擊畫面中某個貨幣圓形按鈕,輸出一個脈沖信號直接給PLC發布命令;而傳動系統由計算機直接模擬,這并不會影響該系統在實際現場的應用,需要時只要將仿真貨幣改為實際貨幣即可[1].售貨機的功能要求如下:一是對投入的幣值進行運算,并根據幣值判斷是否能購買某種商品,并做出相應的反應;二是為便于分析,假定限售8種商品,可識別和退出的貨幣有10元、5元、1元紙幣和5角、1角的硬幣;三是完成一次交易過程有初始、投幣、選購、取貨和退幣、取幣各種狀態;四是可仿真缺貨商品的補充;五是對商品的銷量情況進行統計.
下位機控制核心部件PLC選用歐姆龍CPM2A-60CDR-A型,仿真售貨機工作控制流程如圖1 所示.自動售貨機PLC 梯形圖劃分為運行初期價格的內部傳遞過程、投幣過程、價格比較過程、選擇商品過程、商品銷售記錄過程、退幣過程、補充商品和商品銷量統計8個部分,PLC程序執行過程需要進行加減、比較等算術和邏輯運算.因篇幅所限,PLC梯形圖在此省略.

圖1 仿真自動售貨機工作控制流程圖
按照系統功能要求設計的組態仿真畫面主要包括“自動售貨機仿真交易畫面”、“缺貨商品補充畫面”及“商品銷量報表畫面”.后2 個畫面內容與第1個畫面內容相關聯,各畫面可通過轉換按鈕相互跳轉.畫面中的圖素采用組態王中的工具箱、圖庫和粘貼位圖的方式實現,其中動態圖素需要與數據庫中的系統變量、自定義I/O變量或內存變量建立對應關系,才可按動畫連接的要求進行改變.
畫面中動態圖素的變化是隨組態王數據庫中變量變化而變化的,其中自定義的I/O變量與PLC寄存器的地址相對應,如表1所示.此外,由于仿真的需要,還需定義與PLC無關的內存變量,如“投幣”.

表1 I/O變量及其對應的PLC寄存器地址
根據售貨機控制要求和交易過程設計的虛擬自動售貨機組態仿真交易畫面如圖2所示.畫面劃分為投幣區、金額結算區、商品選購區、取貨區及退幣區,畫面中動態圖素的動畫屬性如表2所示.仿真系統完成1次交易過程為依次單擊畫面中的投幣、選擇、取貨、退幣和取幣等按鈕來實現,與實際現場售貨機交易過程一致.初始運行畫面狀態如下:金額結算區各數值格式為3位整數和1位小數,此時顯示為0;各商品“剩余”數量為10,“價格”顯示格式為1 位整數2 位小數;10 元等貨幣圖形、“缺貨”報警指示燈、“選擇”按鈕、取貨口商品圖形均隱藏,此時不能購買任何商品.交易過程如下:當單擊“投幣”按鈕時,投幣區“10元”、“5 元”等貨幣圖形即刻顯示;當單擊某個貨幣圖形時,相當于購買人向售貨機投入幣值,經貨幣識別系統識別后傳送機構動作,向PLC 對應幣值的輸入端傳送一個投幣信號,PLC執行程序,并將投幣金額、余額數值和可選商品信號上傳到上位機供畫面顯示,此時金額結算區中的投入和余額所對應數值顯示為所投幣的累加值.在購買商品和投幣過程中,PLC 程序中存儲余額與商品價格的2 個數據寄存器實時比較,以判定余額值是否滿足商品的價格,當余額對應值等于或大于某些商品的價格而這些商品剩余又不為0時,其下方對應的“選擇”按鈕顯示可供選購;單擊某個“選擇”按鈕,其對應的商品即刻出現于取貨口處,相當于商品傳動機構動作,此時消費數值增加,余額數值減少.1 次交易可選購多個商品,這些商品依照先購先出的原則依次疊加于取貨口處,當單擊此處商品時隨即隱藏,相當于商品被取走;當購買結束時,若金額顯示區仍有余額顯示,可單擊“退幣”按鈕,PLC程序執行退幣運算,使待退的貨幣圖形及對應的個數數值顯示于退幣取幣區,相當于退幣傳送機構動作,將貨幣傳送到取幣口.當單擊“取幣”按鈕時,退幣取幣區所有貨幣圖形及其對應個數的數值隱藏,金額結算區所有數值顯示為0,同時“投幣區”各貨幣隱藏,購買區的“選擇”按鈕消失.退幣的個數由PLC程序運算后獲得,按照幣值大小順序退幣.例如:剩余10個1元,退幣時只退1個10元,而不退10個1元;若剩余10個10元,就退10個10元,幣值個數用兩位數顯示[2].系統運行時具有記憶功能,當系統掉電或重啟時,畫面中所有的數值、“選擇”按鈕、貨幣圖形的狀態均保持不變.只有按下“復位”按鈕時(圖中未有給出),PLC程序中所有寄存器的狀態和數據才清零.為此,在PLC程序中應選用具有掉電保持功能的保持繼電器或數據寄存器存放這些數據和狀態.

圖2 自動售貨機組態住址交易畫面

表2 動態圖素動畫連接屬性表
缺貨商品補充畫面如圖3所示,它模擬缺貨商品的報警和補充.當圖2中某商品“剩余”的對應數值顯示為0時,圖3中該商品對應的報警指示燈顯示并閃爍,提示該商品已經銷售完畢,處于缺貨狀態,需要補充.若單擊該報警燈旁對應的按鈕(如“01商品補充”按鈕),則向PLC輸入端發送一個ON信號,PLC程序執行結果使得存放01商品購買次數的數據寄存器清零,即01商品銷量為0,而圖2畫面中購買商品區對應的“剩余”數量顯示變為10,同時該商品缺貨報警指示燈隱藏,由此實現了商品的補充.

圖3 缺貨商品補充畫面
商品銷量統計報表如圖4所示,它調用組態王內嵌式報表系統創建,利用報表函數實時記錄各種商品銷量和全部商品的銷售總量,以便掌握商品銷售情況.報表中顯示的銷售數量在關閉組態王軟件重啟后仍保持原狀態,只在單擊“記錄清零”按鈕時,才使PLC 中相應的寄存器內容清零,畫面中報表的“數值”列各數值復位為0.

圖4 商品銷量統計報表畫面
畫面中動態圖素的動畫連接所需的表達式或命令語言有時需考慮PLC程序的設計.如組態畫面各商品“剩余”對應數值范圍為10~0,它隨著單擊“選擇”按鈕次數的增加(即商品銷量的增加)而遞減,而此時PLC程序執行的是加1運算,因此,組態王動畫連接“模擬值輸出”表達式應設為“10-01商品銷量”(以01商品為例).又如,畫面中金額結算區的金額值均是以元為單位的真實值來顯示,而在PLC程序設計中,為了計算時盡量將存儲于HR0001~HR0003通道的3個金額值作為整數計算,對它們的值都以真實值的10倍來設置,即1角等價于10等,因此畫面中3個金額對應文本“####”的動畫連接“模擬值輸出”表達式,應分別設置為“金額/10”、“消費/10”和“余額/10”.
該仿真系統經調試、運行成功,現已應用于PLC教學中并取得了良好的教學效果,達到了預期教學目的.該仿真系統的交易過程與實際自動售貨機的交易過程相符,并在經營、管理雙重理念上,實現了一個功能更完善的自動售貨機仿真系統[3],具有一定的實用價值.
[1]趙玉華.基于組態技術的PLC虛擬仿真系統設計[J].應用科技,2005(12):48-50.
[2]周美蘭,周封,王岳宇.PLC電氣控制與組態設計[M].北京:科學出版社,2003:197.
[3]方園.自動售貨機仿真系統的設計與實現[J].計算機光盤軟件與應用,2012(11):211-212.