王智芳,周孟特,劉 寧,葉玉堂,羅 穎
(電子科技大學 光電信息學院,四川 成都610054)
煙草交售是煙草產業鏈的一個重要環節,開發先進的煙草交售系統,不但能夠提高煙草交售的工作效率,而且可以減少煙農的搬運負擔。現有的煙草交售系統將所有的終端設備直接掛載到控制中心,由于圍繞控制中心的收購點比較多,終端設備數量巨大,給控制中心的通信帶來了沉重的負擔,使整個煙草交售系統的穩定性不能夠得到有效保證。在現有的煙草交售系統的基礎上,本文提出一種新的通信結構設計方案。應用嵌入式技術設計出一種基于ARM芯片和Win CE操作系統的網絡節點設備,用于管理每個收購點處的所有終端設備。通過網絡節點的管理,可以有效減少直接與控制中心相連的設備的數量,減輕了控制中心的通信負擔。從終端設備處采集到的煙農煙草的數據信息,可以在網絡節點處完成數據打包傳送,這樣可以大大提高數據傳送的安全性,從而提高了煙草交售系統的穩定性。網絡節點收集了收購點處所有終端設備采集到的數據信息,煙農可以方便的查看所交煙草的信息,所以網絡節點可以作為煙農交售煙草的最后一步,可以提供刷卡確認和票據打印功能。嵌入式技術有其獨特的優點,它的操作以及維護都非常的簡單,這樣可以降低使用難度,其可擴展性也很強,為后期的持續開發提供了條件。
完整的煙草交售系統主要包括控制中心、數據中心、排號系統、網絡節點和終端設備等組成部分,終端設備主要是指交煙刷卡設備、定級終端設備和磅碼終端設備。完整煙草交售的系統結構如圖1所示。
從功能上描述,控制中心通過網絡節點管理收購點處的終端設備,并且在網絡節點處實現刷卡確認和票據打印的功能。

圖1 煙草交售系統結構
網絡節點采用ARM920T架構的S3C2410作為主控芯片,S3C2410是采用0.18um制造工藝的32位微控制器,最高工作頻率為203MHz。S3C2410采用272-FBGA封裝,引腳間距為0.8mm,使用8/16mil的通孔,5mil的線寬/線間距,就可以完成整個主控芯片的PCB布局走線[1]。國內的印制電路板生產廠家都可以達到這樣的技術標準,避免了采用埋孔、盲孔等特殊工藝技術,降低了成本。
網絡節點的硬件結構如圖2所示,其中NAND flash采用一塊容量為64MB的K9F1208U0C芯片,現在市場流通的大部分NAND flash芯片都存在壞塊的問題,所以在讀寫flash芯片時一定要作壞塊檢測,以便避開壞塊,保持數據的完整性。內存采用了兩塊32MB的SDRAM芯片K4S561632C,共有64MB內存提供給系統使用。當操作系統啟動時,由Bootloader將操作系統和應用程序載入內存,并在內存中引導運行操作系統[2]。外部存儲擴展了SD卡模塊,用于臨時存儲數據,也可以用作斷電后的數據保護。

圖2 網絡節點的硬件結構
以太網擁有高速、穩定的數據傳輸能力,所以采用以太網完成網絡節點與控制中心的數據交互。采用DM9000A芯片在S3C2410的AHB總線上外擴以太網模塊。在完成以太網模塊硬件設計時,需要特別關注的有兩點:一是在PCB布線的時候,器件的擺放位置和走線要特別注意,DM9000A的輸出信號是兩對差分信號,濾波電路一定要靠近DM9000A芯片一側,布線也要盡量避免異層布線,避免影響信號質量[3];二是DM9000A芯片對濾波電路的電容和電阻有嚴格的要求,電容、電阻一定要采用相應的規格。如果誤差較大,會大大影響信號傳輸質量,影響傳輸質量,給后期的調試帶來很多困難。
ZigBee技術是一種近距離、使用簡單、低功耗、低速率、低成本的雙向無線通信技術[4]。采用順舟科技生產的SZ02系列無線通訊設備來實現,其有效傳輸距離為100m~2000m,其網絡拓撲節點的最大支持數為65535;其數據接口支持TTL收發,可以直接與S3C2410的UART模塊互連,支持串口波特率范圍為1200~115200bps;它的信號調制方式采用的是直序擴頻,在2.405GHz~2.480GHz范圍內擁有16個無線信道,其中有4個信道可以避免與Wi-Fi(wireless fidelity)信道的沖突。在正常工作時可以將信道選擇設置成自動模式,讓設備自動建立最佳通信通道。網絡節點和收購點終端設備都屬于全功能通信設備,它們相互之間能夠自由完成數據交互[5]。ZigBee模塊占用S3C2410的串口1。在使用之前要進行配置,讓ZigBee模塊和主機的串口設置一致。
為了煙農能夠查看和確認所交煙草的信息,需要在網絡節點處將煙草的各項信息顯示出來。基本上所有的液晶顯示器都支持通用VGA接口,但是S3C2410沒有集成VGA解碼模塊,這一功能需要在LCD顯示模塊基礎上擴展。TI公司生產的VGA解碼芯片TL5632被用于實現這一功能,這是一款低功耗、高速8位3通道D/A轉換芯片,它可以實時、高速的將24BPP(bits per pixel)數字圖像信號轉換為通用VGA信號[6]。VGA信號主要包括RGB(紅綠藍)顏色信號、HSYNC (行同步信號)和VSYNC(場同步信號),其中RGB顏色信號是峰峰值為0.7V的模擬信號,行同步信號和場同步信號為TTL電平,在進行PCB設計時要注意區分,以消除相互之間的影響[7]。
刷卡確認模塊采用高頻RFID技術來實現,采用同欣智能生產的基于13.56MHz頻率的 Mifare卡讀寫模塊TX522B,它可以支持多種非接觸式智能卡,并且擁有高可靠性、多種接口、小體積等優點。根據讀卡器和卡片的質量、天線的大小和使用環境,通常在2~10cm內就可以完成卡片數據的讀取。TX522B的工作電壓為5V,與主機之間通過串口進行通信。通信協議分為兩步,第一步波特率設置,第二步進行數據通信,可以通過串口調試助手來開發。TX522讀卡模塊占用S3C2410的串口0。主機通過串口發送命令,TX522可以設置為自動尋卡,只需要在初始化設備時,執行自動尋卡命令集下的任意一種命令即可[8]。
音頻模塊要在I2S總線上擴展,使用Philips生產的音頻解碼芯片UDA1341實現,音頻模塊用于操作提示,可以使整個交售流程更加規范。
打印機采用北京思普瑞特科技生產的微型熱敏打印機,它的電源要求為5V/3A,使用串口實現信息傳輸與控制,占用S3C2410的串口2,打印機可以通過重啟或者控制碼進行初始化,廠家提供了專用的設置軟件,可以修改打印機的各項參數。
從系統文件的組成來看,WinCE操作系統主要由Bootloader和NK.bin兩部分組成。
Bootloader是系統啟動后的第一段執行代碼。S3C2410芯片支持將Bootloader存儲在NAND Flash中。為了實現這一功能,S3C2410芯片配備了一個名為 “Steppingstone”的內部SRAM。在啟動時,NAND Flash中第一個4KB的內容將被加載到Steppingstone中并執行[9]。這個工作由MCU主動完成,只需將NAND Flash配置為Auto Boot模式即可。
完整的Bootloader肯定是大于4KB的,所以采用兩段方式啟動。第一個過程是Nboot(NandFlash Bootloader),第二個過程是Eboot(Ethernet Bootloader)。NBoot位于NandFlash的Block 0的前4KB空間,上電后會被自動加載到RAM中運行,Nboot在執行完之后,會判斷是進入Eboot調試還是引導進入系統鏡像。Eboot位于NandFlash的Block 2的開始處,可以有256KB,Eboot主要用于加載鏡像和執行調試命令[10]。
WinCE操作系統體系結構基本上可以分為四層,如圖3所示。從下往上依次是硬件層、OEM層、操作系統層和應用層。硬件層主要指CPU等硬件設備;OEM層和操作系統層構成完整的操作系統;而應用層的內容用于完成具體的系統功能,滿足客戶需求[11]。
在完成WinCE操作系統定制時,主要的工作在于修改WinCE操作系統,使它能夠管理所有的底層硬件設備。WinCE操作系統必須通過OEM層來實現對硬件設備的管理,具體來說與硬件功能直接相關的是OEM層的驅動模塊,所以WinCE操作系統定制的主要工作是對OEM層驅動的修改,所以OEM層的驅動程序對于嵌入式操作系統非常重要,它主要是對實體硬件功能方面的描述,在需要的時候可以通過它來調用硬件設備[12]。正是因為OEM層才可以實現廣泛的硬件支持。

圖3 Windows CE操作系統體系結構[11]
注冊表對于WinCE操作系統也是非常重要的,它包含了操作系統內部的配置、設置和使用參數。它對操作系統的啟動過程、設備驅動程序以及應用程序的加載過程都非常重要[13-14]。
WinCE的應用程序開發環境使用VS2005IDE環境來開發托管代碼和原生代碼應用程序,具體是使用Visual C++來開發原生代碼應用程序,用C#來開發托管代碼應用程序,它與桌面Windows的應用程序開發環境非常類似[15]。網絡節點的軟件系統主要有兩個工作狀態,初始化狀態和交售狀態。
網絡節點終端的初始化主要發生在兩種情況下:一是開機時;二是在更改設備配置后軟件請求初始化。
網絡節點初始化軟件流程如圖4所示。控制中心在接收到初始化請求后,將發送設備配置表到目標網絡節點,然后網絡節點對照設備配置表進行設備檢測,完畢后提交設備狀態表給控制中心。控制中心在接收到設備狀態表后,判斷設備是否異常,如果設備正常,進入 “等待交售”狀態;如果設備異常,用戶可對設備檢查后在網絡節點啟動重新初始化或在控制中心再次發送初始化指令,最終進入“等待交售”狀態。
在網絡節點初始化完成后,就可以進入交售狀態。正常的煙草交售流程如圖5所示,包括排號、交煙刷卡、定級、磅碼、確認刷卡、打印票據等5個步驟。其中交煙刷卡、定級、磅碼、確認刷卡和打印票據都要通過網絡節點完成。

圖4 網絡節點初始化流程

圖5 煙草交售流程
4.2.1 交煙刷卡
當網絡節點成功初始化后,網絡節點和終端設備進入“等待交售”狀態。煙農在交煙刷卡設備上刷卡開始交煙,讀卡設備接收到卡片信息后向網絡節點發送交煙申請,網絡節點將判斷交售點是否空閑。如果交售點繁忙,則返回“不允許交煙”;如果交售點空閑,則向控制中心提出交煙申請。控制中心將根據排號、合同等信息判斷是否允許交煙,如果發現錯誤不允許交煙,則通過網絡節點向交煙刷卡設備返回 “不允許交煙”信息;如果判斷允許交煙,則在交煙隊列中插入該煙農,然后激活定級鍵盤和磅碼設備,可以開始定級和稱重。網絡節點在交煙刷卡過程中的軟件工作流程如圖6所示。

圖6 網絡節點在交煙刷卡過程中的軟件流程
4.2.2 定級與磅碼
定級人員在定級鍵盤處輸入煙農的煙草等級,每一框輸入一次等級,如果輸入的等級信息沒有錯誤,定級終端設備將申請向網絡節點發送等級信息。線結點將等級信息加入到該煙農的煙草交售表,此交售表的等級信息是沒有添加確認標志的。軟件系統暫時只允許同時有一人在線交售,所以必須等待前一位煙農交售完畢后,才能夠進行煙草交售。如果該煙農是隊列首煙農,則對他的煙草交售表添加等級確認標志,之后網絡節點鎖定定級鍵盤,進入“正在磅碼”狀態。磅碼員按定級時的煙框順序,依次輸入眼眶的重量。當確認發送磅碼信息后,網絡節點將接收到磅碼終端發送的重量信息,該重量信息加入到隊列首煙農的煙草交售表,然后啟動確認刷卡設備。網絡節點在定級、磅碼過程中的軟件工作流程如圖7所示。

圖7 網絡節點在定級磅碼過程中的軟件流程
4.2.3 刷卡確認和打印票據
網絡節點在啟動確認刷卡之后,通過音頻模塊提示煙農刷卡確認。煙農在網絡節點處查看所交煙草的等級、重量信息,如果無誤,就可以在網絡節點處刷卡確認。這時只有交煙隊列首的煙農才能完成刷卡確認,避免了一些可能發生的錯誤操作。如果完成刷卡確認,則將該煙農的煙草交售表設為 “已確認”狀態。網絡節點將已確認的煙草交售信息發送到數據中心保存。數據中心將根據是否完成數據保存,將給網路節點發送返回值。如果保存成功,則將煙草交售表置成 “完成”狀態,并保存到網絡節點本地,然后通過打印機打印煙農交售表信息。打印之后,從交煙隊列中刪除該煙農,如果此時,交煙隊列空,則初始化所有終端設備,進入 “等待交售”狀態,如果不為空,則初始化定級、磅碼終端,然后解鎖定級、磅碼終端,準備隊列中下一個煙農提交煙草。網絡節點在確認刷卡和打印票據過程中的軟件流程如圖8所示。
用戶界面采用QT這種多平臺的C++圖形用戶界面應用程序框架來完成。QT是完全面向對象的,易擴展,允許組件編程。它的一個顯著特點是跨平臺,用QT API開發出來的應用程序,可以在不同的操作系統和視窗系統上執行。
正常交售狀態的網絡節點處的顯示界面如圖9所示。此時,隊列首的煙農 “張廣祿”已經完成煙草定級與磅碼,正在等待刷卡確認。通過控制中心排號,此節點煙草交售隊列中還有15人,此節點已完成交售4人。為避免混亂,同一時刻在網絡節點處只能有一個煙農交售煙草。
考慮到網絡節點設備的實際使用環境比較惡劣,很可能會發生高溫工作環境,所以在完成機械結構的時候,加入了一些散熱設計,實際測試效果相對良好。設備在40度高溫下工作3小時,未見明顯異常。
本文所設計的網絡節點設備達到了設計目的,有效解決了煙草交售系統控制中心通信負擔過重的問題,提高了系統的穩定性。網絡節點提供的刷卡確認與票據打印功能更為煙農帶來方便,避免了很多人為操作錯誤的產生,減輕了煙農的負擔。為了追求煙草交售系統的穩定性與安全性,設計的網絡節點設備的軟件系統還存在一些問題。在同一時刻,在一個收購點處只能有一位煙農進行煙草交售,這無疑會大大影響煙草交售的速度,下一步的改進方案將著重于實現多人同時在線完成煙草交售。

圖8 網絡節點在確認刷卡和打印票據過程中的軟件流程

圖9 交售狀態網絡節點顯示界面
[1]John Catsoulis.Designing embedded hardware [M].Beijing:China Electric Power Press,2007 (in Chinese).[John Catsoulis.嵌入式硬件設計 [M].北京:中國電力出版社,2007.]
[2]WANG Yagang.Analysis and transplant of embedded Bootloader mechanism [J].Computer Engineering,2010,36 (6):267-269(in Chinese).[王亞剛.嵌入式Bootloader機制的分析與移植 [J].計算機工程,2010,36 (6):267-269.]
[3]SU Yaofeng,WANG Degang,WEI Jibo.Principle and application of DM9000Ain baseband signal processing platform [J].International Electronic Elements,2007,12 (6):53-56 (in Chinese).[蘇耀峰,王德剛,魏急波.DM9000A原理及其與基帶信號處理平臺的結合應用 [J].國外電子元器件,2007,12 (6):53-56.]
[4]GENG Meng,YU Hongyi,ZHANG Xiaoyi.Analysis and performance evaluation of ZigBee routing [J].Computer Engineering and Applications,2007,43 (26):116-120 (in Chinese).[耿萌,于宏毅,張效義.ZigBee路由協議分析與性能評估 [J].計算機工程與應用,2007,43 (26):116-120.]
[5]LI Yudong,HUANG Hongguang,XIANG Xixi.Improved ZigBee routing algorithm based on energy balance [J].Computer Engineering and Design,2011,32 (2):397-400 (in Chinese).[李予東,黃宏光,向西西.基于能量均衡的ZigBee路由算法優化 [J].計算機工程與設計,2011,32 (2):397-400.]
[6]XIE Xiaoli,JIANG Tao,LIU Liang,et al.Design and research of VGA Interface based on ARM embedded system [J].Chinese Journal of Liquid Crystals and Displays,2007,27(6):761-764 (in Chinese).[謝昭莉,蔣濤,劉亮,等.基于ARM嵌入式系統的VGA接口的研究與設計 [J].液晶與顯示,2007,27 (6):761-764.]
[7]LIU Zhengyao.Efficient multi-channel switching VGA signal distribution module design [J].Computer Engineering and Design,2010,31 (21):4583-4586 (in Chinese).[劉正堯.基于高效切換的多路VGA信號分配模塊設計 [J].計算機工程與設計,2010,31 (21):4583-4586.]
[8]LI Zhenxiang,LI Guo,LI Dexing.Design and implementation of intelligent security management system of RFID based on ARM [J].Computer Engineering and Design,2010,31(12):2744-2748 (in Chinese). [李珍香,李國,李德興.基于ARM的RFID智能安全管理系統設計與實現 [J].計算機工程與設計,2010,31 (12):2744-2748.]
[9]LIU Yuhua,ZHANG Zhe,ZHANG Meng.Design and optimization of Bootloader based on “steppingstone”[J].Modern Electronics Technique,2008,31 (16):98-102 (in Chinese).[劉裕華,張哲,張萌.基于 “steppingstone”的Bootloader的設計與優化 [J].現代電子技術,2008,31 (16):98-102.]
[10]ZHANG Zhi,JIANG Zhinong.Implementation of boot logo in Bootloader based on Windows CE and S3C2410 [J].Electronic Measurement Technology,2010,33 (2):87-90 (in Chinese).[張智,江志農.基于S3C2410和Windows CE的Bootloader啟動圖片的實現 [J].電子測量技術,2010,33 (2):87-90.]
[11]ZHOU Yulin.Windows CE.net kernel customization and application development [M].Beijing:Publishing House of Electronic Industry,2005 (in Chinese). [周毓林.Windows CE.net內核定制及應用開發 [M].北京:電子工業出版社,2005.]
[12]WANG Liming,CHEN Shuangqiao,YAN Xiaoling.Development and practice of ARM9embedded system [M].Beijing:Beihang University Press,2008(in Chinese). [王黎明,陳雙橋,閆曉玲,等.ARM9嵌入式系統開發與實踐 [M].北京:北京航空航天大學出版社,2008.]
[13]Samuel Phung.Professional Windows embedded CE 6.0 [M].ZHANG Dongsong,CHENG Fangyuan,transl.Beijing:Tsinghua University Press,2009 (in Chinese). [Samuel Phung.Windows CE 6.0嵌入式高級編程 [M].張冬松,陳芳園,譯.北京:清華大學出版社,2009.]
[14]LUO Jianfei,WU Zhongcheng,SHEN Chunshan,et al.Design and implementation of device interface driver based on ARM and WinCE [J].Automation and Instrumentation,2009,27 (3):1-3 (in Chinese). [羅健飛,吳仲城,沈春山,等.基于ARM和WinCE下的設備接口驅動設計與實現[J].自動化與儀表,2009,27 (3):1-3.]
[15]Christian Nagel,Bill Evjen,Jay Glynn.Professional C#2008[M].LI Ming,transl.6th ed.Beijing:Tsinghua University Press,2008 (in Chinese). [Christian Nagel,Bill Evjen,Jay Glynn.C#高級編程 [M].李銘,譯.6版.北京:清華大學出版社,2008.]