一款新型煙草稱重讀卡定級器的設計與實現(xiàn)
摘要:長期以來煙草稱重定級系統(tǒng)自動化程度不高引起了相當多的關(guān)注,因此設計了一款新型的煙草稱重讀卡定級器來解決這一問題。該煙草稱重讀卡定級器采用ARM最新一代Cortex-M3內(nèi)核的STM32F103VC為主控制器,并將嵌入式實時多任務操作系統(tǒng)μC/OS-II引入系統(tǒng)軟件設計部分。本設計極大提高了煙草定級系統(tǒng)的自動化程度,同時又增強了系統(tǒng)的實時性與可靠性。目前,本煙草稱重讀卡定級器已成功運用于某煙草定級系統(tǒng)中。
關(guān)鍵詞:STM32F103VC:μC/OS-Ⅱ;任務調(diào)度
0 引言
在傳統(tǒng)的煙草收購系統(tǒng)中,煙葉分揀、稱重、定級都是依靠人工完成的,由于人工操作效率低下以及人力成本的逐年提高,近年來國內(nèi)的煙草收購站陸續(xù)引入了自動化設備。例如煙農(nóng)信息由IC卡感應器獲取,煙葉的稱重與打包由原煙打包機完成,定級由專門的定級器完成,煙葉數(shù)據(jù)的存儲與處理由獨立的電腦管理。但這些自動化設備往往是離散的,在完成稱重、定級等基本功能的同時也給管理帶來巨大困難。如何將稱重、定級、分揀自動化設備的功能整合在一起,如何真正實現(xiàn)煙草稱重定級統(tǒng)的智能化控制,已經(jīng)成為煙草行業(yè)所要面臨的重要問題。
本文提出了一種全新的煙草稱重定級智能控制的解決方案,此方案采用嵌入式系統(tǒng)的設計思想,硬件部分采用ARM最新一代Cortex-M3內(nèi)核的STM32F103VC為主控制器,配合外圍電路工作,軟件部分引入實時多任務操作系統(tǒng)μC/OS-II,實現(xiàn)多任務的并行運行,不僅實現(xiàn)了煙草稱重、讀卡、定級功能的三合為一,又進一步提高了系統(tǒng)的可靠性。
1 系統(tǒng)結(jié)構(gòu)及功能概述
煙草稱重讀卡定級系統(tǒng)總體結(jié)構(gòu)如圖1所示,系統(tǒng)由RFID讀卡模塊、煙草稱重讀卡定級器以及機械傳動部分組成。煙草稱重讀卡定級器具有讀卡控制、煙草定級、重量鎖定、電子標簽讀寫、記錄保存查詢等一系列功能。若干臺煙草稱重讀卡定級器可通過RS485總線連接組成網(wǎng)絡,與上位機進行數(shù)據(jù)通訊。
系統(tǒng)啟動后,貼有電子標簽的煙葉筐通過傳送帶送到指定位置,傳動帶停止,煙草稱重讀卡定級器顯示當前煙葉重量,并控制讀卡模塊中的RFID讀卡器發(fā)出一特定頻率的無線電波,煙葉筐上的電子標簽接收電波,將標簽內(nèi)的初始數(shù)據(jù)(煙農(nóng)信息、煙葉產(chǎn)地、采摘時間等)發(fā)送給讀卡器,此時,煙草稱重讀卡定級器將獲取的重量信息、煙葉信息傳送至上位機進行存儲。定級員根據(jù)煙草的各項指標確定煙葉等級,選擇煙草稱重讀卡定級器上相應的等級按鈕,將等級信息傳至上位機中,完成煙葉的定級等功能。同時通過電子大顯示屏與喇叭播報此筐煙葉的等級和總量等信息,向煙農(nóng)展示煙葉收購信息。
2 硬件設計方案
煙草稱重讀卡定級器以微控制器STM32F103VC為核心,并在其周圍擴展外設構(gòu)成系統(tǒng)。微控制器STM32F103VC使用高性能的ARM Cortex-M3 32位的RISC內(nèi)核,內(nèi)置高速存儲器(高達128k字節(jié)的閃存和20k字節(jié)的SRAM),具有豐富的硬件接口資源,以其為中心構(gòu)建的煙草稱重讀卡定級器硬件框圖如圖2所示。
2.1 A/D轉(zhuǎn)換部分
煙葉筐放置到秤臺上后,秤臺上的電阻應變式傳感器將重量信號轉(zhuǎn)變?yōu)殡妷盒盘?,該電壓信號傳送給CS5532完成A/D轉(zhuǎn)換。CS5532芯片是美國Cirrus Logic公司推出的一種具有極低噪音的、多通道△-∑型ADC,可達到24位分辨率的輸出結(jié)果,精度高、動態(tài)特性寬。轉(zhuǎn)換后的數(shù)據(jù)從CS5532的同步串行接口輸出至微控制器STM32F103VC,同時可在240×64點陣式液晶顯示器上顯示當前煙草的重量。
2.2 讀卡處理部分
系統(tǒng)采用FNUHFD2180讀卡器進行RFID數(shù)據(jù)采集,該讀卡器可對符合ISO18000-6C協(xié)議的電子標簽進行讀寫。讀卡器通過UART2與煙草稱重讀卡定級器通訊,煙草稱重讀卡定級器控制讀卡器發(fā)射一特定頻率的無線電波能量給煙葉框上的電子標簽,用以驅(qū)動標簽電路將內(nèi)部的數(shù)據(jù)送出,讀卡器依序接收解讀數(shù)據(jù),送至煙草稱重讀卡定級器進行相關(guān)處理。
2.3 串行通訊部分
STM32F103VC利用串行口與外圍設備進行數(shù)據(jù)通訊,其中與上位計算機通訊使用UART1,串行數(shù)據(jù)通訊格式采用波特率9600b/s;1位起始位8位數(shù)據(jù)位,無校驗,1位停止位。根據(jù)程序里預先定義好的協(xié)議,上位計算機與控制器進行數(shù)據(jù)通訊??刂破髋c讀卡器通訊使用UART2,與LCD顯示屏通訊使用UART3。
2.4 存儲部分
存儲部分采用鐵電存儲器M31256,該存儲芯片具有非易失性、讀卡速度快以及讀寫功耗極低等諸多優(yōu)點,提供256kb的存儲空間。FM31 256采用I2C總線形式與STM32F103VC通信,芯片上的時鐘線SCL、數(shù)據(jù)線SDA與STM32F103VC上的I2C接口相連,嚴格按照I2C總線協(xié)議進行命令寫入與數(shù)據(jù)交換。
3 管理軟件設計
煙草稱重讀卡定級器的軟件設計引入嵌入式實時操作系統(tǒng)μC/OS-II,μC/OS-II是一種基于優(yōu)先級的搶占式多任務實時操作系統(tǒng),包含了實時內(nèi)核、任務管理、時間管理、任務間通信同步(信號量、郵箱、消息隊列)和內(nèi)存管理等功能。操作系統(tǒng)內(nèi)核的主要工作是對任務(ta sk)進行管理和調(diào)度。操作系統(tǒng)將整個應用系統(tǒng)程序分解為多個小任務,系統(tǒng)并發(fā)運行多個任務,從而提高處理器的利用率,加快程序的執(zhí)行速度,提高系統(tǒng)的實時響應。
3.1 任務劃分與設計
根據(jù)煙草稱重讀卡定級系統(tǒng)所要實現(xiàn)的功能,考慮系統(tǒng)實時性、可靠性的要求,進行任務的劃分并創(chuàng)建任務,按其優(yōu)先級從高到低分別是初始化任務、鍵盤掃描任務、ADC任務、主串口通訊任務、讀卡串口任務、空閑任務。每個任務在4種不同的狀態(tài)中轉(zhuǎn)換:休眠態(tài)、就緒態(tài)、掛起態(tài)和運行態(tài)。在運行狀態(tài)下,還可能由于發(fā)生中斷而轉(zhuǎn)向中斷服務子程序。任務管理函數(shù)的調(diào)用將引起各任務狀態(tài)間的轉(zhuǎn)換,系統(tǒng)軟件流程圖如圖3所示。
系統(tǒng)上電復位后,首先進行嵌入式處理器與外設的初始化,完成系統(tǒng)時鐘、GPIO口以及中斷相關(guān)參數(shù)的配置。系統(tǒng)使用外部中斷2讀取A/D轉(zhuǎn)換結(jié)束信號,定時器中斷2為μC/OS-II系統(tǒng)提供時鐘節(jié)拍,串行口中斷1用于上位機通訊,串行口中斷2用于讀卡器通訊。然后是初始化μC/OS-II操作系統(tǒng),同時液晶顯示開始畫面。接著創(chuàng)建初始化任務,完成應用任務(包括鍵盤掃描任務、ADC任務、主串口通訊任務、讀卡串口任務)以及空閑任務的創(chuàng)建,信號量與互斥量的創(chuàng)建,郵箱消息的建立,窗口看門狗初始化。最后啟動多任務,此時,任務交由操作系統(tǒng)管理與調(diào)度。
程序代碼大體如下所示:
3.2 任務調(diào)度與實現(xiàn)
嵌入式實時操作系統(tǒng)μC/OS-II任務的調(diào)度由任務調(diào)度器控制,任務調(diào)度器的主要工作有兩項:一是在任務就緒表中查找具有最高優(yōu)先級的就緒任務;二是實現(xiàn)任務的切換。
本系統(tǒng)啟動多任務后,所有應用任務都處于就緒狀態(tài),并在任務就緒表中登記。任務調(diào)度器選擇當前優(yōu)先級最高的任務開始執(zhí)行。以鍵盤掃描任務為例,鍵盤被設定為150ms掃描一次,若有鍵盤按下,進行鍵處理,若無鍵按下,繼續(xù)掃描。在150ms延時的過程中,鍵盤掃描任務交出CPU使用權(quán),由調(diào)度器查詢剩下就緒狀態(tài)任務的優(yōu)先級,選擇當前優(yōu)先級最高的任務開始執(zhí)行。150ms延時結(jié)束,若無更高級的任務就緒,程序?qū)⒒氐芥I盤掃描任務繼續(xù)執(zhí)行。CPU在不同任務之間輪換,保證近似每時每刻讓優(yōu)先級最高的就緒任務處于運行狀態(tài)。
在μC/OS-II操作系統(tǒng)中,某些任務需要特定的信號量,任務只有取得相應的信號量才能繼續(xù)執(zhí)行下去。例如,ADC任務必須等待A/D轉(zhuǎn)換完成信號量ADCSem就緒方能執(zhí)行,因此,當ADC任務得到CPU使用權(quán)時,若該信號量未能就緒,則該任務掛起,并交出CPU控制權(quán)。若該信號量就緒,則執(zhí)行任務。
在任何時刻,若有中斷發(fā)生,系統(tǒng)將當前任務掛起,轉(zhuǎn)而執(zhí)行中斷服務子程序(ISR)。以串口中斷1(上位機通訊)為例,當串口中斷發(fā)生時,意味著上位機有命令要發(fā)送給控制器,系統(tǒng)將中斷當前正在執(zhí)行的任務,轉(zhuǎn)入串口中斷1服務程序執(zhí)行。在中斷程序中,系統(tǒng)先判斷是發(fā)送中斷還是接收中斷,然后進行相應的處理。
程序代碼大體如下所示:
上位機通訊中斷程序執(zhí)行完畢后,調(diào)度器查詢當前就緒任務,若無更高級的任務就緒,程序?qū)⒒氐綌帱c處繼續(xù)執(zhí)行原先被中斷的任務。若有更高級的任務就緒,系統(tǒng)轉(zhuǎn)而執(zhí)行優(yōu)先級高的任務。
4 結(jié)語
本系統(tǒng)將煙葉收購過程中煙農(nóng)信息采集、煙葉自動過磅、煙葉等級設置、煙葉數(shù)據(jù)處理整合在一起,真正實現(xiàn)了煙草收購的智能化管理,在保證收購質(zhì)量的同時極大地提高了收購速度,縮短了收購周期,降低了收購成本。本文介紹的煙草稱重讀卡定級器先后在各地的基層煙站進行推廣實施,實踐證明,本煙草稱重讀卡定級器精度高、實時性好、運行穩(wěn)定、可靠性高、抗干擾能力強,可以在同類行業(yè)中推廣應用。