楊永生
(陜西省行政學院 計算機系,西安 710068)
射頻識別技術(Radio Frequency Identification,RFID)的應用能夠大大提高企業(yè)工作效率、降低運營成本、提高企業(yè)的自動化程度、增強企業(yè)競爭力,因此RFID技術在物流管理中的應用得以蓬勃發(fā)展[1],尤其當世界頭號零售商沃爾瑪公司宣布大范圍使用RFID以及美國軍方宣布軍需物品需使用RFID進行跟蹤、識別后,RFID的研究與應用得到了極大的推動[2]。中國的RFID技術和市場起步較晚,應用前景卻異常巨大。因此,國內學者對RFID的發(fā)展及其應用進行了大量的研究[3-4]。但由于其成本的原因,基于RFID技術的倉儲管理系統(tǒng)還處于初期階段。據世界著名的咨詢機構The Standish Group在一份研究報告顯示,由于采用了中間件技術,應用系統(tǒng)的總建設費用可以減少50%左右[5]。中間件帶給應用系統(tǒng)的不只是開發(fā)的簡單、開發(fā)周期的縮短,也減少了系統(tǒng)維護、運行和管理的工作量,還減少了硬件設備總體費用的投入。因此中間件的研究得到廣泛的關注,目前國外比較知名的中間件廠商有IBM、Oracle、Microsoft、Sun等企業(yè)。國內方面,在物聯(lián)網中間件和公共服務方面已進行了一些工作,如中科院自動化研究所開發(fā)了RFID公共服務體系基礎架構軟件和血液、食品、藥品可追溯管理中間件;華中科技大學開發(fā)了支持多通信平臺的物聯(lián)網中間件產品Smarti;上海交通大學開發(fā)了面向商業(yè)物流的數(shù)據管理與集成中間件平臺等[6]。
上述中間件設計方案大多是基于自己目前所研發(fā)的核心產品或技術的應用,或者針對某一行業(yè)的特點而開發(fā),有太大的依賴性和較小的擴展性等問題。本文針對物流倉儲管理系統(tǒng)的特點,設計了較為簡單實用的中間件系統(tǒng),為物流倉儲系統(tǒng)中間件的設計和進一步的應用提供參考。
中間件(Middleware)作為RFID技術的核心部分,是連接RFID硬件與企業(yè)應用的軟件,是在RFID部署中收集數(shù)據的重要工具[8],已經成為構建RFID網絡分布式異構信息系統(tǒng)不可缺少的關鍵技術。RFID中間件是一種面向消息的中間件,信息是以消息的形式、以異步的方式,從一個程序傳送到一個或多個應用。應用程序端使用中間件所提供的一組應用程序接口(API),能與RFID閱讀器相連,從而讀取RFID標簽數(shù)據。其功能不僅是傳遞信息,還必須考慮數(shù)據解譯、數(shù)據安全性、數(shù)據分發(fā)、錯誤恢復等問題。
圖1 RFID中間件的基本功能與架構示意
RFID中間件扮演了RFID標簽、閱讀器同應用程序之間的中介角色,是RFID系統(tǒng)動作的中樞,可以加速RFID關鍵應用的開發(fā)與實施。它的作用是為處于自己上層的應用軟件提供運行與開發(fā)的環(huán)境,幫助用戶靈活、高效地開發(fā)和集成復雜的應用軟件。其基本功能結構包含了與RFID前端硬件模塊(從RFID標簽到RFID讀寫器的數(shù)據資料自動搜集)以及與后端數(shù)據庫與應用軟件(如ERP、CRM、WMS、EPC和MIS等)之間的中間應用軟件環(huán)境,它提供了業(yè)務過程管理、實時數(shù)據資料的過濾與匯集、事件管理、安全管理、數(shù)據的路由與集成以及讀寫器的協(xié)同管理等多種功能與機制?;赗FID中間件的應用模式架構以及RFID中間件的基本結構與功能如圖1所示。
從圖1可以發(fā)現(xiàn)RFID中間件最主要的功能是:1)操縱控制RFID讀寫設備按照預定的方式工作,保證不同讀寫設備之間很好地配合協(xié)調。2)按照一定的規(guī)則篩選過濾數(shù)據,篩除大部分冗余數(shù)據,將真正有效的數(shù)據通過合適的網絡傳送給后臺的應用信息系統(tǒng)。3)能夠支持上層高端用戶的異構應用系統(tǒng)之間對RFID數(shù)據、事件的共享以及彼此業(yè)務流程之間的應用協(xié)同。
采用RFID中間件可以有效地屏蔽RFID設備的多樣性和復雜性,消除不同來源的RFID標簽同讀寫器硬件設備與通信協(xié)議之間的特性以及其他的差別,能夠為后臺業(yè)務系統(tǒng)提供強大的支持,驅動更廣泛和更豐富的RFID應用。
RFID中間件不僅可以為應用程序提供集成的功能,還要提供數(shù)據過濾功能以減少從讀寫器到應用程序的數(shù)據量,同時它還要保證系統(tǒng)通信的穩(wěn)定性和及時性。筆者設計的中間件主要包括3大功能模塊:通信管理、數(shù)據管理和應用程序接口。
2.1.1 模塊功能與結構
數(shù)據通信模塊負責完成中間件與讀寫器和數(shù)據庫之間信息的傳遞,而上層軟件不需要考慮具體的信息交換問題,只關心如何實現(xiàn)自己的功能即可,使得程序的模塊化易于編寫、調試和維護。通信管理模塊的結構如圖2所示。
圖2 通信管理模塊結構
通信管理模塊的主要功能是連接各種不同類型的RFID讀寫器并從中讀取電子標簽信息。由于不同的廠商提供的RFID讀寫標準不盡相同,因此該模塊的設計要具備有通用的讀寫器接口來適配各種RFID閱讀器。筆者設計的通信管理模塊與讀寫器的通信主要處理網口和串口2種方式,并支持其他自定義的通信方式。通信管理模塊連接到需要進行讀取的RFID讀寫器,并將從讀寫器獲得的RFID標簽信息傳送給中間件的數(shù)據管理模塊。建立數(shù)據連接之后要針對不同的RFID讀寫器的底層通信協(xié)議建立相應的類,并實現(xiàn)其中的命令函數(shù)。用類的方式實現(xiàn),方便以后系統(tǒng)的升級,當加入一種新的連接方式時,只需再加入一個實現(xiàn)該接口方式的通信類就可以了,不需要重新開發(fā)整個模塊,提高了系統(tǒng)的可擴展性。
2.1.2 主要接口函數(shù)
通信管理模塊的主要接口函數(shù)如下所示:
1)打開一個與通訊連接
Bool OpenConnect(int nComType,char*Param)
函數(shù)說明:打開一個類型為 nComType的連接,參數(shù)為Param。若成功則返回True,否則返回False。
2)關閉一個通訊連接
Bool CloseConnect(long hHandle)
函數(shù)說明:關閉句柄為hHandle的連接,若成功則返回True,否則返回False。
3)從通訊連接發(fā)送數(shù)據
WriteConnect(long hHandle,BYTE*byBuffer,int nSize,const char*strToIp=NULL,int nToPort=0,BOOL isBroadcast=FALSE)
函數(shù)說明:將byBuffer中的nSize個數(shù)據,發(fā)送到句柄為hHandle的連接中,返回發(fā)送的數(shù)據個數(shù)。
4)從通訊連接接收數(shù)據
ReadConnect(long hHandle,BYTE*byBuffer,int nSize,char*stripFrom=NULL,int*nPortFrom=NULL)
函數(shù)說明:從句柄為hHandle的連接中讀取nSize個數(shù)據到byBuffer中。
5)讀標簽數(shù)據
ReadTag(long hConnect,BYTE byAddr,BYTE byMode,char*chUID,BYTE byBeginBlock,BYTE byBlocks,BYTE &byDB_N,BYTE &byDB_Size,char*chData,BYTE byDataFormat)
函數(shù)說明:提供中間讀取讀寫器中標簽數(shù)據的接口,按byMode方式根據byAddr地址,從byBeginBlock開始讀取chUID的標簽數(shù)據,根據byDataFormat的格式,將讀取到的數(shù)據存儲到相應的數(shù)據庫中。
6)寫標簽數(shù)據
WriteTag(long hConnect,BYTE byAddr,BYTE byMode,char*chUID,BYTE byBeginBlock,char*chWriteData,BYTE byDataFormat)
函數(shù)說明:實現(xiàn)中間向標簽中寫數(shù)據的接口,按照byAddr的地址,以byMode模式根據byDataFormat的格式向chUID的標簽中寫入chWriteData中的數(shù)據。
7)數(shù)據庫連接
Connection2DB(object sender,EventArgs e)
函數(shù)說明:該函數(shù)實現(xiàn)對后臺數(shù)據庫的連接操作。
2.2.1 模塊結構和功能
本模塊將設備和從讀寫器采集的標簽信息都當作數(shù)據來對待,RFID中間件的信息管理模塊的主要功能是對從RFID硬件接口模塊傳遞過來的電子標簽信息進行處理,包括對電子標簽信息進行過濾、篩選和存儲。由于在讀寫器的可讀范圍內,電子標簽在某個時期內會被閱讀器多次讀到,這會造成信息重復,因此數(shù)據管理模塊必須能夠對重復讀到的信息進行“清理”,以防止同一信息被多次存儲。
另一方面數(shù)據管理模塊還負責對RFID系統(tǒng)中讀寫器信息的維護,以確保每個設備都正常工作。該模塊通過調用通信管理模塊中的相關函數(shù)可以進行設備狀態(tài)和相關參數(shù)的讀寫。數(shù)據管理模塊的結構見圖3。
2.2.2 主要接口函數(shù)
數(shù)據管理模塊的主要接口函數(shù)如下所示:
1)設置讀取頻率
圖3 數(shù)據管理模塊結構
SetReadFrequency(DataTime Interval)
函數(shù)說明:定義一個Interval的時間間隔,在此間隔內同一讀寫器讀到的標簽信息表示是相同的讀標簽事件。
2)數(shù)據過濾
DataFilter(BYTE*SourceBuffer,BYTE*TargetBuffer,char*FilterMethod)
函數(shù)說明:利用FilterMethod算法,將SourceBuffer中的數(shù)據進行過濾,結果存儲到TargetBuffer中。
3)數(shù)據存儲
SaveData2DB(struKey& key,BYTE*dataBuffer,short*nNum=NULL,BOOL Result=FALSE)
函數(shù)說明:根據key,向數(shù)據庫中寫入dataBuffer中數(shù)據,根據Result確定操作的結果是否成功。
4)設備狀態(tài)監(jiān)控
GetDeviceStatus(char*devMacAddr,char*devIp,char*devStatus)
函數(shù)說明:函數(shù)實現(xiàn)發(fā)送命令到指定地址的設備,返回設備的運行狀態(tài)。
5)設備參數(shù)讀取
GetDevicePara(char*devMacAddr,char*devIp,char*dev_Tye,Struct Dev_Para devicePara)
函數(shù)說明:從指定的地址,按設備的類型讀取相應的參數(shù)。
6)設備參數(shù)設定
SetDevicePara(char*devMacAddr,char*devIp,char*dev_Tye,Struct Dev_Para devicePara)
函數(shù)說明:根據指定的地址,按設備的類型設置相應的參數(shù)。
應用程序接口模塊主要處理RFID中間件與其他企業(yè)應用系統(tǒng)之間的集成問題。通過相關的接口,能夠將數(shù)據信息從RFID中間件傳遞到其他的應用系統(tǒng)中,從而最終實現(xiàn)企業(yè)信息的集成。企業(yè)應用系統(tǒng)接口起的作用就是將RFID中間件的信息格式與企業(yè)應用系統(tǒng)的信息格式統(tǒng)一起來。通過對企業(yè)的指令信息進行翻譯,再將它傳遞給應用程序管理模塊。將從應用程序管理模塊得到的標簽信息編碼為企業(yè)應用系統(tǒng)可以接收的格式。
應用程序接口要達到如下要求:
1)跨系統(tǒng)、平臺,無論應用系統(tǒng)是在何種系統(tǒng)上運行的,可以對接收到的標簽數(shù)據進行解析;
2)跨語言,無論應用系統(tǒng)將要用何種語言開發(fā),可以對中間件提供的應用程序接口進行訪問。
使用中間件有助于減輕企業(yè)二次開發(fā)時的負擔,使企業(yè)方便升級現(xiàn)有軟件系統(tǒng),同時能保證軟件系統(tǒng)的相對穩(wěn)定,及對軟件系統(tǒng)的功能擴展,簡化了開發(fā)的復雜性。本模塊設計要實現(xiàn)的Web訪問接口、其他應用系統(tǒng)開發(fā)接口和Web Service服務接口。
RFID中間件是RFID技術的核心,在倉儲管理系統(tǒng)中起到了承上啟下的作用,可直接對讀寫器采集數(shù)據信息,并提供多通信平臺數(shù)據訪問接口。本文針對中間件在倉儲管理系統(tǒng)中的3個主要作用:實現(xiàn)對閱讀器的管理、對所采集的數(shù)據進行過濾和倉儲并提供上層應用程序接口,對中間件進行了設計開發(fā),以求實現(xiàn)中間件的簡單適應性,為基于RFID技術的倉儲管理系統(tǒng)的設計便捷開發(fā)提供參考。
[1]王麗亞.物流信息系統(tǒng)與應用案例[M].北京:科學出版社,2007:20-36.
[2]游戰(zhàn)清,李蘇劍.無線射頻識別技術(RFID)原理與應用[M].北京:電子工業(yè)出版社,2004:8-21.
[3]李波,劉有源.基于RFID的貨場物流自動調配系統(tǒng)的研究[J].物流技術,2003(3):76-78.
[4]龐娟.RFID與倉儲管理系統(tǒng)的應用結合[J].中國儲運,2004(5):47-48.
[5]蕭榮興,蘇偉仁,許育嘉.RFID技術動作的神經中樞:RFID中間件[J].信息與電腦,2005(9):35-37.
[6]寧煥生,張彥.RFID與物聯(lián)網:射頻、中間件、解析與服務[M].北京:電子工業(yè)出版社,2008:76-89.
[7]劉發(fā)貴,蔣瑞林,胡耀民.RFID中間件及其倉儲管理的應用[J].計算機工程,2006,32(13):272-276.
[8]CHOW H K H,CHOY K L,LEE W B,et al.Design of a RFID case-based resource management system for warehouse operations[J].Expert Systems with Applications,2006,30(4):561-576.