摘 要:從總體上介紹了自動售貨機主控制系統的組成和功能,討論了自動售貨機工作原理,詳細闡述了主控制系統FPGA的軟、硬件設計及其主要控制模塊的仿真實現,并編寫了系統程序總框圖。實踐驗證,系統能夠在各種條件下持續、平穩、可靠地工作。
關鍵詞:FPGA;自動售貨機;硬件設計;軟件仿真
隨著科技的發展及人們生活水平的提高,自動售貨機市場的發展呈現出多元化及個性化的需求,通過自動售貨機進行自助購物正逐漸成為市民的一種新的消費時尚和追求高品質生活的需要。傳統的自動售貨機控制系統采用單片機作為控制核心,不僅需要在輸入輸出接口上做大量的工作,而且系統的抗干擾性也比較差。FPGA具有可靠性高、編程簡單、維護方便等優點,已在工業控制領域得到廣泛應用。本文詳細介紹了一種用FPGA實現的自動售貨機主控制系統的硬件設計和軟件設計,并進行了軟件仿真和硬件設計實驗,實驗表明該控制系統是可行的。
1 自動售貨機系統總體結構
自動售貨機作為一種完全獨立的售貨設備,集接收貨幣、顧客自選商品、售出商品和找零等功能于一體[1]。具體的說,一個完整的售貨機控制系統[2]一般應包含如圖1所示的設備和模塊。
(1)人機交互設備:通過顯示設備和輸入設備實現,顧客通過使用鍵盤輸入需要購買的商品編號,根據液晶顯示器LCD給出的提示信息進行投幣、取商品、接受找零等操作;系統管理人員可以使用鍵盤在顯示器所提供的可視化界面下對售貨機的各種運行參數進行設置;
(2)MDB(Multi-Drop Bus / Internal Communication Protocol)通信接口[3]:MDB/ICP協議是歐洲售貨機制造者協會制定的一套用于協調自動售貨機的主控制器(VMC)與多個外設之間的通信協議,用于協調自動售貨機的主控制器(VMC)與多個外設之間的通信,所有外圍設備與主控制器之間的通信方式都一致。由于其簡潔明了、功能強大、可擴展性強,并且對外設數目沒有限制,成為理想的自動售貨系統內部總線協議;
(3)主控制器:主要包括對各種外設獲取的信息加以處理,對于售貨機的整個銷售流程進行控制,運行執行機構正常工作所需的各種算法等;
(4)信息采集模塊:主控制器所需采集的信息主要包括自動售貨機箱體內的溫度,售出的貨物是否正常掉落到顧客取貨區,電機運行有無異常狀態。
(5)貨道電機驅動模塊:主要指商品通道的驅動電機陣列。根據輸入的所選商品的通道號,主控板驅動相應的小型直流電機轉動,將貨物推送至顧客取貨區。作為自動售貨機的最終執行機構,電機驅動控制部分的性能以及可靠穩定性直接影響商品銷售,是自動售貨機控制器設計中非常重要的一部分。
2 自動售貨機系統工作原理
根據系統控制要求,編寫了控制系統的程序總框圖,如圖2所示。
從投幣口送入貨幣,然后經過傳感器采集數據、識別器判別人民幣的真偽并判別面值。識別器把信息數據傳給通信模塊。通信模塊與售貨機的主控系統通信,主控系統顯示面值,啟動售貨機的面板鍵,顯示出哪個貨道有貨,哪個貨道已售完,并等待顧客按鍵選擇商品。顧客選擇商品后,售貨機自動把商品送出,等待顧客取走。顯示余額,如果金額足夠多,顧客可以選擇找幣或繼續買商品;如果款額不足,售貨機經過延時予以退幣。退幣分2種情況:一種是由紙幣識別器完成退紙幣,另一種是由硬幣的通信模塊完成退硬幣。系統復零,完成售貨。
3 主控制系統FPGA[4]的軟件設計及仿真
3.1 軟件結構
根據控制系統的工作原理及硬件設計,該系統的軟件采用模塊化的設計方法,其主要由初始化、投幣過程、價格比較過程、商品選擇、顯示、退幣和報警等模塊組成,其中一些主要模塊的功能如下:
(1)投幣模塊:在投幣過程中,每投下一枚硬幣,經錢幣識別傳感器把信號傳遞給PLC,該模塊將完成辨別硬幣的真偽和判定具體的幣值,可以進行錢幣的疊加,并顯示出相應的幣值,余額也增加同樣的幣值;
(2)價格比較模塊:投幣完成后,系統對余額中錢幣數據和可以購買的飲料價格進行區間比較:若大于或等于商品的價格,則可以購買該商品,指示燈亮;
(3)商品選擇模塊:此模塊可以實現用戶對商品的選擇購買;
(4)退幣模塊:系統可在顧客購買完商品后退回余幣。在退幣過程中,最主要的是要完成退幣的運算過程,運算結果放在數據寄存器,根據結果起動退幣電動機工作,輸出相應的錢幣,退幣結束時還要給程序中使用到的某些寄存器重新賦零。
3.2 主要模塊功能仿真
3.2.1 投幣模塊功能仿真
系統可以接受4種錢幣的投入,RESET可以復位,系統內部的計數器將對投入的錢幣總數,進行自加計數,仿真波形如圖3所示。
3.2.2 商品選擇模塊功能仿真
系統允許顧客對4種物品進行選擇。同時系統內部計數器將進行自減計數,內部變量還會自動記錄顧客購買的各種物品數目并由LTEM_OUT端口輸出顧客購買物品的種類仿真波形如圖4所示。
3.2.3 退幣模塊功能仿真
系統可以找出2種錢幣。當顧客鍵入END_BY后,系統開始找錢,原則為從大往小找,在找錢的同時,不允許顧客投入錢幣。系統內部的計數器將進行自減計數,直至到零為止。同時,系統將記錄找出各種錢幣的數目并輸出找出錢幣面值。
3.2.4 價格比較模塊功能仿真
投幣完成后,系統會將在余額中錢幣數據和可以購買的飲料價格進行區間比較:若大于或等于商品的價格,則可以購買該商品,指示燈亮。
本文介紹了一種基于FPGA的自動售貨機主控制器的整體設計方案和工作原理,詳細闡述了主控制模塊FPGA的軟件設計與實現及主要功能模塊仿真,在以FPGA為核心的自動售貨機控制系統中,當需要增加可選擇的商品數量時,該控制系統的硬件只需要增加相應的輸入信號,其硬件的原有接線不需要改變,軟件則可以根據不同的控制要求進行修改,具有較強的適應性,因此在自動售貨機行業中得到廣泛的應用。經實踐,整個系統工作穩定可靠。
參考文獻
[1] 裴進靈.一種新型自動售貨機的研制[ J].科技情報開發與經濟,2002,13(12):141-142.
[2] 朱軍.自動售貨機的結構[ J].信息與電腦,1995(10):12-13.
[3] Multi-Drop Bus / Internal Communication Protocol NAMA vending technology standards committee.
[4] 周美蘭.FPGA電氣控制與組態設計[M].北京:科學出版社,2003.