引言
在一個典型的倉庫里,卡車回到塢門卸下托盤上的貨物,該托盤或者集裝箱都有無線射頻識別(Radio Frequency Identification,RFID)標簽(目前,低價商品還不能擁有自己的標簽)。倉庫內被劃分為具有相應識別電子碼的不同貨位,RFID閱讀器可安裝在倉庫的出入門和倉庫內部。整個倉庫內及各出入門附近都由網絡(無線或有線)覆蓋,以實現信息共享。
一個典型的RFID系統由射頻電子標簽(RFID Tag)、讀寫器(RFID Reader)及應用支撐軟件組成。電子標簽由芯片與天線組成,每個芯片都有唯一的標識碼。標簽可附著在被標識的物品上,當帶有電子標簽的被識別物品經過讀寫器的可識讀范圍內時,讀寫器自動識別該標簽并將信息發送給后端軟件,從而實現自動識別物品或自動收集物品標志信息的功能。
介于前端RFID讀寫器硬件模塊和后端數據庫與應用軟件之間的中介,稱為RFID 中間件(RFID Middhware)。應用程序端使用中間件所提供的一組通用的應用程序接口(API),即能連接到RFID讀寫器,讀取RFID標簽數據。中間件實現對底層設備的精確控制,實時采集原始數據,對數據進行過濾,并在其中封裝典型的應用邏輯,使系統接口簡單透明,從而達到系統的協調工作。
1 模擬倉庫環境
開發中間件,首先要模擬倉庫環境。由于標簽的價格原因,我們不可能在每個貨物上都貼上標簽,只能通過標示托盤來追蹤貨物。如圖1所示,在每個托盤、叉車和出入庫人員上安裝和佩戴射頻標簽卡,并在車間和倉庫出入口安裝讀寫器,通過讀寫器獲取RFID標簽經過出入口的情況,從而將托盤上所屬倉庫的信息與射頻卡捆綁輸入數據庫,同時記錄叉車和人員的出入庫情況。在出入I:1安裝攝像頭,判斷通過出入口的貨物數量。

圖1 倉庫環境
系統通過RFID標簽的類別來區別出人庫對象,通過倉庫管理人員及工作人員共同遵守的規則,在讀取RFID標簽時,判斷出人庫情況,并通過視頻圖像判斷托盤的狀態(空或滿及裝載貨物數量),從而計算產品出人庫數量。定期進行統計分析,為管理人員提供決策支持,并在異常情況發生時進行報警。
2 RFID中間件設計
RFID中間件位于企業應用程序與底層設備之間,提供統一的應用邏輯接口與設備接口,在實際應用中起到讀寫器的管理和數據的處理、傳遞功能。它的最終目的是數據為上層系統所用。如圖2所示,功能上可分為原始數據采集層和事件處理層。

圖2 中間件架構
2.1 原始數據采集層
為屏蔽各類設備之間的差異,實現應用對設備的透明操作。中間件將每個設備(RFID閱讀器,打印機,傳感器等)用統一的代理來模擬,由代理和設備直接交互。不同的設備,代理處理的消息類型、處理的方法也不同。代理之間通過UDP/IP上的XML消息來交流信息。使用XML的優點是它的異構性、可擴展性、靈活性,適用于松耦合特性的分布式系統。
2.1.1 代理
中間件為設備和應用層提供了雙向接口,我們用代理來模擬設備接口。閱讀器代理負責控制閱讀器驅動、狀態查詢、接收標簽數據列表等工作,把設備傳進來的數據轉換成標準化格式。用戶可以根據傳感器類型的不同而擴展它,這樣能更好地適應客戶需要。打印機代理負責控制打印機,用戶可根據需要添加其他類型 。
2.1.2 消息機制
RFID中間件是消息中間件的一種,它的消息傳遞模式支持點對點模式和發布/訂閱模式。代理和設備之間多用點對點模式,例如啟動或關閉一個閱讀器時,使用UDP套接字來處理點對點操作;若閱讀器被成功啟動,它也會廣播一個閱讀器狀態更新信息。
在事件處理層,應用系統通過發布/訂閱機制獲得感興趣的信息,中間件為完成這一功能設置了訂閱解析器,提取定義文件的參數和方法,傳送到事件處理機制,對RFID數據進行處理。
2.1.3 緩沖機制
RFID閱讀器每秒鐘會閱讀到成千上萬的標簽,為防止溢出,采用線程來加速包的卸載,并將數據保存在即時隊列中。這里線程和數據隊列構成了一個緩沖機制,以滿足計算機的實時處理要求,它可以平滑從閱讀器接收到的大量簡單重復無序數據,按要求進行處理。每個閱讀周期 (讀周期是和讀寫器交互的最小單位)線程接收一組EPCs(標簽EPC,閱讀器ID,時間戳)組合,將其發送到消息隊列,對其進行事件有效性驗證,檢查是否出現讀寫錯誤或漏讀,實現對數據的初步過濾。
2.2 事件處理層
事件處理層位于原始數據采集層和業務邏輯之間。它根據上層系統發送的定義文件和回發地址,生成報告文件,按發布/訂閱機制將報告反饋給系統 J。原始數據采集層提供了硬件的統一接口,事件處理層則定義了應用系統對RFID中間件的標準訪問方式。它對原始RFID數據進一步處理,使數據轉化為上層系統需要的形式。圖3為RFID數據處理流程。

圖3 數據處理流程
數據流經過緩沖機制后,還存在著大量的冗余信息,需要對其進行過濾、聚合,提取出有意義的事件。我們按解析機制發來的事件周期T對數據流進行操作,按上層定義的業務規則判斷事件類型,并存儲在相應的表格中。
2.2.1 過濾機制
經過緩沖機制后的數據流還存在著大量的重復,即閱讀器重復和標簽重復。標簽位于一個閱讀器識讀范圍內時,閱讀器就會不斷地讀取標簽數據,直到標簽離開為止,稱為標簽重復;另外,當標簽同時處于多個閱讀器的識讀范圍內時,它的數據也會被不同的閱讀器重復讀取。圖4為閱讀器重復。
為解決上述問題,對標簽重復,我們只記錄標簽第一次出現和最后一次出現的時間;對閱讀器重復,一是在布置閱讀器位置時考慮到交疊情況,盡量用最少的閱讀器數量覆蓋全部區域。但為了提高識讀率,往往不能避免交疊。這里采取的是虛擬閱讀器的方法,同一地區的多個閱讀器組成一個虛擬閱讀器。如圖4的R1,R2,R3,R4共同組成一個虛擬閱讀器V0。過濾后的數據存放在表2中,T—Start為V~Reader初次閱讀某標簽的時間,以后再讀到該標簽則更新T—End和Count值(Coum為標簽讀取次數,有時為簡便起見,可略去)。