基于ALE標準的嵌入式RFID中間件設計
1 引言
在RFID技術迅速發(fā)展并得到越來越廣泛的應該的同時,也伴隨著出現(xiàn)了兩個問題:第一,在一個如此大的市場里,存在著眾多協(xié)議,還存在著各種使用和操作不同的形形色色的閱讀器,這嚴重阻礙了RFID技術的大規(guī)模應用;第二,如何整合、過濾和傳輸這些數(shù)據(jù)使企業(yè)不會被大量的數(shù)據(jù)淹沒而得不到RFID技術帶來的好處是另一個急待解決的重要問題。
在這種情況下,RFID中間件運因而生,并得到了快速的發(fā)展,RFID中間件可以屏蔽各種不同規(guī)格型號的閱讀器和各種不同協(xié)議標準的標簽,讓上層應用軟件得到統(tǒng)一、不變的接口;另外,它還負責整合和過濾數(shù)據(jù),產(chǎn)生報表,使海量數(shù)據(jù)的傳輸和應用成為可能。
目前,國內(nèi)外的RFID中間件體積大,所設計只適用于PC機,不能直接移植到嵌入式閱讀器中,本文實現(xiàn)了一種可移植,可直接運行于嵌入式閱讀器設備上,基于ALE標準的嵌入式RFID中間件。
2 EPCglobal ALE標準
EPC[1] 是 Electronic Product Code (產(chǎn)品電子代碼)的縮寫,是美國麻省理工學院的自動識別中心(Auto-ID 中心)提出的,其主要思想是為每一個參加物聯(lián)網(wǎng)的產(chǎn)品分配一個電子標簽,該標簽存儲了一個世界唯一的EPC碼,當產(chǎn)品通過閱讀器時,由RFID技術來讀取數(shù)據(jù),得到對應的EPC碼,最后通過與互聯(lián)網(wǎng)相連的服務器來完成相應的EPC碼的解析。
EPC系統(tǒng)主要由EPC編碼, EPC 標簽,EPC 讀寫器, EPC 中間件, PML (物理標記語言) 服務器,ONS (對象名解析服務) 服務器等組成。系統(tǒng)協(xié)議主要由RFID通信協(xié)議,應用事件管理(ALE)協(xié)議等組成。
EPC ALE[2] 協(xié)議是EPC 中間件與閱讀器模塊和客戶應用程序之間的接口協(xié)議. 該協(xié)議定義了客戶可以如何過慮和整合來自多個閱讀器的EPC標簽,并面向不同的企業(yè)應用程序和閱讀器定義了統(tǒng)一的接口,這樣即使后端應用程序增加或改由其他軟件取代,或者RFID讀寫器的種類有所改變、增加等情況發(fā)生時,其它部件不需要做修改。ALE所包含的處理過程有: 接收來自一個或多個數(shù)據(jù)源的EPC 標簽碼; 根據(jù)客戶端(企業(yè)應用程序)要求以一定的時間間隔整合數(shù)據(jù), 過濾重復和不感興趣的EPC 碼;根據(jù)客戶端要求以不同的形式打包發(fā)送報告。ALE協(xié)議是基于事件的,工作方式可為同步模式或異步模式,對實時性有較高的要求,而對接收到的EPC數(shù)據(jù)的存儲時間不要求很長,當收到的EPC數(shù)據(jù)已經(jīng)被相關所有事件處理且發(fā)送后,該數(shù)據(jù)將可以被刪除。發(fā)送數(shù)據(jù)包的文件格式是XML格式,所有要發(fā)送給客戶或者其他閱讀器的數(shù)據(jù)封裝成為XML文件,客戶端將收到的數(shù)據(jù)文件后根據(jù)對應規(guī)定的XML格式解析出相應的數(shù)據(jù)信息。ALE在EPCglobal中的位置如圖1,位于原始EPC檢測事件層(RFID標簽閱讀層)和應用商業(yè)邏輯層之間。
圖1 ALE在EPCglobal網(wǎng)絡結(jié)構中的位置
3 基于EPCglobal ALE標準的嵌入式RFID中間件實現(xiàn)方案
3.1 本文設計的RFID中間件主要實現(xiàn)特點
該中間件構架于嵌入式系統(tǒng)中,它有別于運行在一般計算機上的中間件,在嵌入式系統(tǒng)上實現(xiàn)RFID中間件功能,使中間件可以集成在閱讀器上。這樣一方面增強了閱讀器的性能,使傳統(tǒng)"啞"閱讀器成為名副其實的"聰明"閱讀器,另一方面,使RFID中間件和閱讀器形成一個整體,體現(xiàn)了"All in a box"思想,這樣既方便了RFID系統(tǒng)的安裝,又降低了成本。該中間件同時支持EPCglobal ALE標準,該標準應用廣泛,可以應用于不同規(guī)格型號的閱讀器,支持多種標簽標準,為上層應用提供統(tǒng)一不變的標準接口,具有很強的通用性和兼容性。該中間件還具有網(wǎng)絡功能,具有普通的web服務器和數(shù)據(jù)庫功能,這實現(xiàn)了閱讀器與閱讀器,閱讀器與客戶端的網(wǎng)絡通信和數(shù)據(jù)緩沖,且網(wǎng)絡之間的數(shù)據(jù)都是封裝成為標準的XML格式傳輸。
3.2 嵌入式RFID閱讀器硬件系統(tǒng)平臺
該嵌入式RFID閱讀器有三個基本的硬件模塊:天線和射頻模塊,DSP基帶板模塊,主控系統(tǒng)模塊。天線和射頻模塊負責射頻信號的發(fā)射和接收,DSP基帶模塊負責對射頻模塊接收到的信號轉(zhuǎn)換為數(shù)字信號,進行CRC校驗,并把數(shù)據(jù)通過HPI接口傳給主控系統(tǒng)模塊,同時也負責對主控系統(tǒng)模塊發(fā)出的控制命令進行解析和實現(xiàn)。主控系統(tǒng)模塊主要負責整個系統(tǒng)的控制和標簽的處理,和客戶服務響應。
主控系統(tǒng)模塊主要由ARM(AT91RM9200)和周邊器件組成,操作系統(tǒng)為arm-linux2.4.19。中間件將運行于該模塊中。
3.3 嵌入式RFID中間件軟件體系結(jié)構
本系統(tǒng)采用分層的軟件體系結(jié)構,低層是Linux操作系統(tǒng)和各外設接口的驅(qū)動模塊,包括DSP驅(qū)動、網(wǎng)口驅(qū)動和串口驅(qū)動。中間層是GoAhead Web服務器和嵌入式數(shù)據(jù)庫SQLite,上層是閱讀器管理,ReadProtocol和ALE層,如圖2所示。
圖2 軟件體系結(jié)構
操作系統(tǒng)是中間件的基礎,采用嵌入式Linux作為本嵌入式RFID中間件的操作系統(tǒng),Linux支持TCP/IP,HTTP等多種協(xié)議,省去了協(xié)議移植等復雜工作,降低了中間件的開發(fā)難度,縮短了開發(fā)周期。DSP驅(qū)動、網(wǎng)口驅(qū)動、串口驅(qū)動,是為RFID閱讀器開發(fā)的驅(qū)動模塊,只需在linux的支持上作些修改。Linux 移植技術已經(jīng)成熟, 本文不作詳細的闡述。
GoAhead Web 服務器是一款主要面向嵌入式系統(tǒng)的 Web 服務器,主要功能模塊有安全模塊,GoForm模塊,CGI模塊,SSL(Secure Sockets Layer)模塊。其中安全模塊中又包含內(nèi)存數(shù)據(jù)庫模塊,主要負責存儲用戶信息,以及提供保密安全機制。GoForm模塊主要負責處理客戶提交的表單數(shù)據(jù),并以web頁面的形式返回相應的處理結(jié)果。CGI模塊主要處理客戶的CGI請求。SSL模塊在GoAhead中實現(xiàn)了SSL協(xié)議。它是本文設計嵌入式中間件的基本軟件架構,系統(tǒng)的所有網(wǎng)絡開發(fā)都是在這個架構上進行,GoAhead web服務器作為中間件的一個數(shù)據(jù)轉(zhuǎn)發(fā)平臺和模塊承載平臺,閱讀器與客戶端之間,閱讀器與閱讀器之間的數(shù)據(jù)通信都是由GoAhead Web服務器來完成,ALE協(xié)議實現(xiàn)模塊(ALE模塊),數(shù)據(jù)庫管理模塊,閱讀器管理模塊,ReaderProtocol Server模塊等的開發(fā)也是建立在GoAhead的基礎上的。
數(shù)據(jù)庫采用SQLite,SQLite是一種小巧、免費、開源的嵌入式數(shù)據(jù)庫應用軟件,它提供了標準SQL語言,并且由于其工作速度較快,滿足了數(shù)據(jù)的實時要求。它可以集成在應用軟件中,也可以獨立運行,本系統(tǒng)選用它主要是對原始數(shù)據(jù)進行平滑、過濾以及根據(jù)客戶端的命令篩選出數(shù)據(jù)。
Reader Management是閱讀器管理模塊,負責設置本閱讀器的工作狀態(tài)和工作模式。
Reader Protocol是閱讀器協(xié)議服務器,它負責管理所有與該中間件閱讀器相連的閱讀器,是Reader Protocol協(xié)議在中間件上的實現(xiàn)。
ALE Server是ALE協(xié)議服務器,它是該系統(tǒng)的核心,負責向上層應用程序提供標準的ALE接口,實現(xiàn)各個ALE接口。
3.4 ALE標準在該嵌入式中間件系統(tǒng)中的實現(xiàn)
如何在RFID中間件的軟件系統(tǒng)中實現(xiàn)EPCglobal ALE規(guī)范,是本系統(tǒng)開發(fā)的核心。在系統(tǒng)中,我們開發(fā)了ALE模塊用以實現(xiàn)了EPCglobal ALE標準,由于中間件采用的基本軟件架構是GoAhead Web服務器,它作了一個模塊承載平臺,在上面可以很好地嵌入ALE模塊。ALE模塊在GoAhead中的位置以及ALE模塊的處理流程如圖3所示。
圖3 ALE模塊在GoAhead中位置以及其處理流程
客戶端用http協(xié)議發(fā)送一個ALE命令的XML文件給服務器端,服務器端在GoAhead進程中接收該xml文件,然后將該文件封裝成消息,根據(jù)不同的接口函數(shù)填充上具體消息類型,然后用命令消息隊列傳給ALE進程,在ALE進程中從命令消息隊列把消息取出,根據(jù)消息的類型把XML文件交給相應的函數(shù)去解析和做相應的操作。
在ALE模塊中,對于每個用戶定義的ECSpec[2](它是一個復雜的數(shù)據(jù)結(jié)構類型,規(guī)定了如何處理和完成一個事件周期),系統(tǒng)實現(xiàn)了四個狀態(tài):Undefine,Unrequested,Requested,Active。Undefine表示該ECSpec現(xiàn)在已不能再使用,即將被釋放;Unrequested表示該ECSpec現(xiàn)在處于沒有用戶訂閱狀態(tài);Requested 表示該ECSpec現(xiàn)在處于有用戶訂閱狀態(tài);Active表示該ECSpec現(xiàn)在正要觸發(fā)線程來制作和發(fā)送報表的狀態(tài)。每個不處于Undefine的ECSpec將對應一專有的子線程(在ALE進程中創(chuàng)建),該子線程處理該ECSpec所規(guī)定的具體數(shù)據(jù)提取,報表制作和發(fā)送。各個ECSpec對應的子線程將互不干擾,子線程只跟主線程(ALE進程原線程)有聯(lián)系,通過條件變量機制實現(xiàn)主線程對子線程的觸發(fā)和控制。
系統(tǒng)在根據(jù)對應的ECSpec要求進行數(shù)據(jù)提取、過濾、整合時,將與數(shù)據(jù)庫系統(tǒng)模塊相互結(jié)合。數(shù)據(jù)庫系統(tǒng)模塊首先把從閱讀器讀到的原始數(shù)據(jù)進行濾除重復多余的EPC碼,并屏蔽各種不同閱讀器數(shù)據(jù)格式的差異,統(tǒng)一數(shù)據(jù)格式后將數(shù)據(jù)送入到數(shù)據(jù)庫SQLite中,成為數(shù)據(jù)庫操作的數(shù)據(jù)源。系統(tǒng)的數(shù)據(jù)提取等操作就是在該數(shù)據(jù)源中進行的,這些操作是通過應用SQLite自身標準SQL語言來實現(xiàn)的。在相應的數(shù)據(jù)操作完成后,必須把數(shù)據(jù)源中的過期數(shù)據(jù)進行刪除。
在完成了數(shù)據(jù)的提取和整合后,系統(tǒng)將把數(shù)據(jù)根據(jù)對應ECSpec的具體要求封裝成為XML格式,并以TCP方式發(fā)送給所訂閱的用戶。
4 結(jié)束語
本文作者研究的創(chuàng)新點是在基于EPCglobal ALE標準,如何設計構架于嵌入式系統(tǒng)中的RFID中間件方面上,提出了比較清晰的思路,并按照該思路實現(xiàn)了基于EPCglobal ALE標準的嵌入式RFID中間件,經(jīng)編譯運行測試,該系統(tǒng)體積小、穩(wěn)定可靠、實時性好、并行處理速度高,可廣泛應用于嵌入式RFID閱讀器系統(tǒng)中。
參考文獻:
[1] AUTO-ID Center, The EPCglobal Architecture Framework, [EB/OL].
http://www.epcglobalinc.org/standards_technology/ Final-epcglobal-arch-20050701 pdf
[2] AUTO-ID Center,The Application Level Events (ALE) Specification Version 1.0 [EB/OL].
EPCglobal_Application_Level_Events(ALE)_Specification_v1">EPCglobal_Application_Level_Events(ALE)_Specification_v1.pdf">http://www.epcglobalinc.org/standards_technology/EPCglobal_Application_Level_Events(ALE)_Specification_v1.pdf
[3] 王學龍.嵌入式 Linux 系統(tǒng)設計與應用.清華大學出版社,2001
[4] Klaus Finkenzeller著,陳大才編譯.射頻識別(RFID)技術 北京:電子工業(yè)出版社,2001
[5] 蘆東昕,李強,柳長安. 基于ARM的RFID閱讀器設計[J].微計算機信息,2006,10-2:286-288