物聯(lián)傳媒 旗下網(wǎng)站
登錄 注冊

使用Agents和XML消息的RFID中間件實現(xiàn)

作者:孫志強 趙衛(wèi)東
來源:RFID世界網(wǎng)
日期:2008-03-24 18:39:55
摘要:本文提出了一套基于Agents和XML消息的RFID系統(tǒng)框架,給出了使用Agent來封裝隱藏底層設(shè)備編程接口差異的方法,使用XML消息來統(tǒng)一設(shè)備間、設(shè)備與軟件組件間的通信機制,實現(xiàn)了一套使用Agents和XML消息的RFID中間件來構(gòu)建的倉庫管理系統(tǒng)。
關(guān)鍵詞:RFID中間件

引言

射頻識別是一種非接觸式的自動識別技術(shù)?,F(xiàn)在RFID技術(shù)應(yīng)用的范圍遍及制造、物流、醫(yī)療、運輸、零售、國防等.也成了廣大企業(yè)考慮引入的重大策略技術(shù)之一,然而企業(yè)在選用RFID系統(tǒng)的時候.不同廠商生產(chǎn)的RFID產(chǎn)品具有不同的編程接口.現(xiàn)有的軟件組件如何同RnD系統(tǒng)相結(jié)合.成為企業(yè)成功應(yīng)用RFID系統(tǒng)的瓶頸和障礙。而中間件(Middleware)可以隱藏底層不同廠商生成的讀寫器提供的不同的內(nèi)部API.提供統(tǒng)一編程接口.使各種系統(tǒng)之間可以互操作.從而加速關(guān)鍵應(yīng)用的問世.可稱為是RFID運作的中樞。本文主要針對如何封裝底層設(shè)備不同的編程接口問題 使用Agents作為設(shè)備代理 提供統(tǒng)一編程界面.設(shè)備之間通過XML消息進行交互 使得設(shè)備或軟件彼此之問可以相互操作.從而設(shè)計實現(xiàn)了一套使用代理和XML消息的RnD中間件。

1.關(guān)鍵技術(shù)

1.1 Agent
在開發(fā)RnD應(yīng)用中.涉及到不同廠商的RFID讀寫器、標(biāo)簽打印機等產(chǎn)品.還要考慮到與其他系統(tǒng)的結(jié)合.例如與視頻監(jiān)控系統(tǒng)、現(xiàn)有企業(yè)ERP、SCM 系統(tǒng)的結(jié)合:要圍繞數(shù)據(jù)庫來保存和讀取信息.還要提供可視化圖形界面給用戶。如何對RFID應(yīng)用中涉及到的這些產(chǎn)品、實體與系統(tǒng)進行建模.成為RnD中間件設(shè)計的重要問題。在本文中對這些概念進行統(tǒng)一建模.每種產(chǎn)品、實體與系統(tǒng)都作為一個Agent[1】,每個Agent負責(zé)自己所負責(zé)的產(chǎn)品、實體或系統(tǒng)的操作與交互。而對于外部應(yīng)用則提供統(tǒng)一的編程接口.RFID應(yīng)用開發(fā)基于Agents提供的編程接口進行開發(fā)。使得具體的應(yīng)用邏輯與特定的底層設(shè)備、實體或系統(tǒng)無關(guān)。

圖la為RnD中間件使用的代理類層次圖.各派生子類ReaderAgent、PrinterAgent、BusinessAgent、CameraAgent、DBAgent和GUIAgent分別抽象了讀寫器、標(biāo)簽打印機、應(yīng)用系統(tǒng)、攝像頭、數(shù)據(jù)庫和系統(tǒng)界面。Agent為代理基類.提供了統(tǒng)一的編程接口(如圖lb所示):發(fā)布一種消息類型(Publish)、注冊一種消息類~(Subscribe)、傳送一則消息到指定地址(該操作會返回一則對應(yīng)的消息,對應(yīng)Send)、發(fā)送一則消息到指定地址(該操作不返回消息,對應(yīng)P0st)和處理收到的消息(pro~esssmessage1。代理之間的不同主要體現(xiàn)在每個代理因抽象的實體不同而導(dǎo)致處理的消息種類不同以及對特定消息的處理方式不同.一種代理處理一組特定的消息類型。各派生子類都要針對其所抽象的實體.定義一組與該實體相關(guān)的特定的消息類型,并且在processnlessage函數(shù)中對這些消息進行處理。在Agent內(nèi)部.有一個傳輸類(transport)來提供所有的通信功能.該傳輸類主要提供兩種類型的通信功能:1)點對點方式,主要針對單一通信需求(例如發(fā)送一條命令打開讀寫器);2)多播方式-,主要針對有多個接受方的通信需求(例如一個讀寫器關(guān)閉.所有對讀寫器狀態(tài)敏感的代理都將收到該消息)。在傳輸類在實現(xiàn)時有兩種類型的套接字:l1UDP套接字(UDPSocket),用來處理點對點的單一通信方式;21多播套接字(MCSocket),用來處理多播通信功能.實現(xiàn)時各接收方首先注冊到特定消息組。當(dāng)有代理發(fā)布特定消息時,該多播套接字就將該消息發(fā)布到特定消息組里的各接收代理。無論是點對點方式或是多播方式.當(dāng)代理接收到消息的時候。其內(nèi)部的傳輸類會委托一個XML消息翻譯類(XML Translator)來將收到的XML消息轉(zhuǎn)換為特定的消息對象(parse函數(shù)完成該功能),以備代理處理該消息。

1.2 XML消息

RnD應(yīng)用中涉及到的產(chǎn)品、實體與系統(tǒng)之間需要通信交互,以完成命令控制和數(shù)據(jù)交互,而不同的產(chǎn)品、系統(tǒng)有著不同的數(shù)據(jù)格式要求,而且通信機制和通信協(xié)議也不盡相同。統(tǒng)一各產(chǎn)品、實體或系統(tǒng)之問的交互數(shù)據(jù)格式和通信機制,對于R兀D
應(yīng)用的快速開發(fā)具有重要的意義。文本使用XML消息[HI21來統(tǒng)一數(shù)據(jù)格式,在基于UDP/IP的網(wǎng)絡(luò)環(huán)境中進行通信。有效地解決了數(shù)據(jù)格式和通信協(xié)議不一致的問題圖2a為與讀寫器代理相關(guān)的一組消息.每種消息都包括消息頭和消息體兩部分,消息頭消息包含在Message類里面,相應(yīng)的消息體信息則包含在MessageBody類里面。每種特定的消息都有對應(yīng)的MessageBody派生子類與之對應(yīng)。Message類和MessageBody類都包含一個toXML0方法(如圖2b所示)。用于將該消息轉(zhuǎn)換為對應(yīng)的XML字符串.轉(zhuǎn)換后的XML字符串在網(wǎng)絡(luò)中進行傳輸,在接收代理接收該XML字符串后,該代理使用
內(nèi)部的XML翻譯類來將該XML字符串轉(zhuǎn)換為相應(yīng)的消息類對象。為了使XML翻譯類能夠?qū)⒏鞣N消息對應(yīng)的XML字符串轉(zhuǎn)換為對應(yīng)的消息類對象.各MessageBody派生子類須滿足以下規(guī)定:1)在其構(gòu)造器中設(shè)置”MessageType”字段以標(biāo)示該特定消息的種類;2)為其每個屬性XYZ都實現(xiàn)一個相應(yīng)的setXYZO方法,該方法接收一個代表該屬性值的字符串為參數(shù).將該屬性設(shè)置為相應(yīng)的值。

以讀寫器為例說明代理之間如何通過XML消息進行交互首先要使用讀寫器的代理A構(gòu)造一個DiscoveryRequest消息.調(diào)用該消息的toXML0方法,將該消息轉(zhuǎn)換為XML字符串.之后通過多播方式將該XML字符串發(fā)送出去.讀寫器代理在收到該
消息文本之后,調(diào)用XML翻譯類的parseO方法將該文本轉(zhuǎn)換為相應(yīng)的DiscoveryRequest消息.知道有代理在查詢自己是否存在,于是構(gòu)造一個AgentConneeted消息。經(jīng)過同樣的轉(zhuǎn)換和傳送過程將該消息傳送至代理A.代理A于是想要知道該讀寫器的狀態(tài)(開啟或禁用),于是構(gòu)造一個ReaderStatUSRequest消息傳送到該讀寫器,讀寫器根據(jù)自己的狀態(tài)構(gòu)造相應(yīng)的Reader()n和ReaderOf消息返回給代理A。

2.系統(tǒng)設(shè)計

圖3表示了我中心正在開發(fā)實現(xiàn)的倉庫管理系統(tǒng)的系統(tǒng)架構(gòu)。其中,虛線部分顯示了使用Agents和XML消息的RFID中間件的組成 通過使用讀寫器代理. 隱藏了SymbolXR400和OmmnV740讀寫器兩者之問的編程接rj的差別。應(yīng)用程序?qū)ψx寫器的操作與具體廠商的讀寫器編程接口無關(guān).使得繼續(xù)添加其他廠商的讀寫器變得簡單:標(biāo)簽打印機代理也是如此:通過應(yīng)用代理,使得RnD技術(shù)與現(xiàn)有的應(yīng)用系統(tǒng)(如ERP、SCM 系統(tǒng))實現(xiàn)無縫連接『31,應(yīng)用代理為各應(yīng)用系統(tǒng)提供所需的數(shù)據(jù)信息;數(shù)據(jù)庫代理屏了各種不同的數(shù)據(jù)庫管理系統(tǒng)的差別.提供統(tǒng)一的數(shù)據(jù)庫操作接口.該倉儲管理系統(tǒng)使用的是Microsoft SQL Server數(shù)據(jù)庫管理系統(tǒng):通過界面代理.實現(xiàn)了可視化界面對各種設(shè)備和應(yīng)用組件的操作和通信:攝像頭代理實現(xiàn)了視頻圖像的采集與攝像頭操作.為倉儲管理系統(tǒng)提供圖像資料數(shù)據(jù)。各種設(shè)備與軟件之間通過基于UDP/IP網(wǎng)絡(luò)上傳輸?shù)腦ML消息進行通信。

3.系統(tǒng)實現(xiàn)

圖4是在基于代理和XML消息的RFID中問件的基礎(chǔ)上開發(fā)實現(xiàn)的RHD倉儲管理系統(tǒng)。該系統(tǒng)主要是針對企業(yè)生產(chǎn)實踐中的產(chǎn)品出入庫管理設(shè)計.用標(biāo)簽來標(biāo)示各種實體。包括貨架、叉車和操作員,在倉庫門上布置了讀寫器,當(dāng)操作員駕駛裝載有貨架的叉車通過倉庫大門時.通過讀寫器讀取到與操作員、叉車和貨架相關(guān)的標(biāo)簽信息.之后查詢數(shù)據(jù)庫得到相應(yīng)的實體信息.記錄該次出入庫操作,并輔助有攝像頭作監(jiān)控,記錄出入庫時的視頻信息。出入庫記錄可用于之后與企業(yè)其他應(yīng)用系統(tǒng)(ERP系統(tǒng)、scM系統(tǒng)等)結(jié)合,并產(chǎn)生出入庫統(tǒng)計,與企業(yè)生產(chǎn)管理相結(jié)合。圖4中的RFID倉儲管理系統(tǒng),可以用總控制臺來控制各種設(shè)備.包括打開和關(guān)閉倉庫大門上的讀寫器(可以是SymbolXR400或者OmronV740讀寫器)。添加和刪除讀寫器;添加和刪除標(biāo)簽打印機,控制標(biāo)簽打印機打印標(biāo)簽信息:連接和斷開數(shù)據(jù)庫,執(zhí)行數(shù)據(jù)庫奮詢;開肩和關(guān)閉攝像頭, 采集視頻數(shù)據(jù)數(shù)據(jù)庫面板中的具體數(shù)據(jù)庫管理系統(tǒng)來管理相應(yīng)的數(shù)據(jù)庫. 本系統(tǒng)采用的Microsoft SQL Server數(shù)據(jù)庫管理系統(tǒng) 讀寫器面板中包含現(xiàn)在已經(jīng)啟動的讀寫器列表,點擊相應(yīng)的瀆寫器. 可以設(shè)置該讀寫器的相應(yīng)屆性,包括記錄標(biāo)簽的事件類型、記錄標(biāo)簽的種類和讀寫器的讀寫周期,設(shè)置對讀寫器采集的標(biāo)簽數(shù)據(jù)是否過濾。標(biāo)簽打印機面板包括系統(tǒng)中已經(jīng)啟用的標(biāo)簽打印機.通過相應(yīng)的控制面板可以完成相應(yīng)的打印機操作。圖4中沒有攝像頭面板,因為系統(tǒng)沒有開啟攝像頭。該系統(tǒng)在已開發(fā)好的RHD中問件的基礎(chǔ)上,開發(fā)實現(xiàn)只用了短短的一個星期。通過該系統(tǒng)實現(xiàn),可以看到使用基于代理和XML消息的RHD 中間件可以快速的進行RFID應(yīng)用系統(tǒng)的開發(fā),節(jié)省了系統(tǒng)開發(fā)時間,降低了系統(tǒng)開發(fā)難度。

4 結(jié)語

本文通過使用Agents.很好地解決了不同的RF1D底層設(shè)備具有不同的編程接門對RFID應(yīng)用系統(tǒng)開發(fā)難度的影響問題,使用設(shè)備代理,提供了統(tǒng)一編程界面。使用XML消息進行交互,使得不同設(shè)備具有不同的數(shù)據(jù)格式和通信協(xié)議、不同的軟件組件要求不 形式的數(shù)據(jù)問題得到了有效的解決.使得設(shè)備或軟件彼此之間可以相互操作。這套使用代理和XML消息的
RFID中問件.可以用于快速開發(fā)RnD應(yīng)用系統(tǒng).實現(xiàn)與現(xiàn)有系統(tǒng)的無縫連接,具有靈活性、可擴展性和容錯性的特點。