倉儲管理中的RFID中間件設(shè)計
文章出處:http://m.dipdnbxp.cn 作者:狄菲 趙衛(wèi)東 周志平 彭瑞 季軍 人氣: 發(fā)表時間:2011年10月14日
0 引言
在一個典型的倉庫里,卡車回到塢門卸下托盤上的貨物,該托盤或者集裝箱都有無線射頻識別(Radio Frequency Identification,RFID)標(biāo)簽(目前,低價商品還不能擁有自己的標(biāo)簽)。倉庫內(nèi)被劃分為具有相應(yīng)識別電子碼的不同貨位,RFID閱讀器可安裝在倉庫的出入門和倉庫內(nèi)部。整個倉庫內(nèi)及各出入門附近都由網(wǎng)絡(luò)(無線或有線)覆蓋,以實現(xiàn)信息共享。
一個典型的RFID系統(tǒng)由射頻電子標(biāo)簽(RFID Tag)、讀寫器(RFID Reader)及應(yīng)用支撐軟件組成。電子標(biāo)簽由芯片與天線組成,每個芯片都有唯一的標(biāo)識碼。標(biāo)簽可附著在被標(biāo)識的物品上,當(dāng)帶有電子標(biāo)簽的被識別物品經(jīng)過讀寫器的可識讀范圍內(nèi)時,讀寫器自動識別該標(biāo)簽并將信息發(fā)送給后端軟件,從而實現(xiàn)自動識別物品或自動收集物品標(biāo)志信息的功能。
介于前端RFID讀寫器硬件模塊和后端數(shù)據(jù)庫與應(yīng)用軟件之間的中介,稱為RFID 中間件(RFID Middhware)。應(yīng)用程序端使用中間件所提供的一組通用的應(yīng)用程序接口(API),即能連接到RFID讀寫器,讀取RFID標(biāo)簽數(shù)據(jù)。中間件實現(xiàn)對底層設(shè)備的精確控制,實時采集原始數(shù)據(jù),對數(shù)據(jù)進(jìn)行過濾,并在其中封裝典型的應(yīng)用邏輯,使系統(tǒng)接口簡單透明,從而達(dá)到系統(tǒng)的協(xié)調(diào)工作。
1 模擬倉庫環(huán)境
開發(fā)中間件,首先要模擬倉庫環(huán)境。由于標(biāo)簽的價格原因,我們不可能在每個貨物上都貼上標(biāo)簽,只能通過標(biāo)示托盤來追蹤貨物。如圖1所示,在每個托盤、叉車和出入庫人員上安裝和佩戴射頻標(biāo)簽卡,并在車間和倉庫出入口安裝讀寫器,通過讀寫器獲取RFID標(biāo)簽經(jīng)過出入口的情況,從而將托盤上所屬倉庫的信息與射頻卡捆綁輸入數(shù)據(jù)庫,同時記錄叉車和人員的出入庫情況。在出入I:1安裝攝像頭,判斷通過出入口的貨物數(shù)量。
圖1 倉庫環(huán)境
系統(tǒng)通過RFID標(biāo)簽的類別來區(qū)別出人庫對象,通過倉庫管理人員及工作人員共同遵守的規(guī)則,在讀取RFID標(biāo)簽時,判斷出人庫情況,并通過視頻圖像判斷托盤的狀態(tài)(空或滿及裝載貨物數(shù)量),從而計算產(chǎn)品出人庫數(shù)量。定期進(jìn)行統(tǒng)計分析,為管理人員提供決策支持,并在異常情況發(fā)生時進(jìn)行報警。
2 RFID中間件設(shè)計
RFID中間件位于企業(yè)應(yīng)用程序與底層設(shè)備之間,提供統(tǒng)一的應(yīng)用邏輯接口與設(shè)備接口,在實際應(yīng)用中起到讀寫器的管理和數(shù)據(jù)的處理、傳遞功能。它的最終目的是數(shù)據(jù)為上層系統(tǒng)所用。如圖2所示,功能上可分為原始數(shù)據(jù)采集層和事件處理層。
圖2 中間件架構(gòu)
2.1 原始數(shù)據(jù)采集層
為屏蔽各類設(shè)備之間的差異,實現(xiàn)應(yīng)用對設(shè)備的透明操作。中間件將每個設(shè)備(RFID閱讀器,打印機(jī),傳感器等)用統(tǒng)一的代理來模擬,由代理和設(shè)備直接交互。不同的設(shè)備,代理處理的消息類型、處理的方法也不同。代理之間通過UDP/IP上的XML消息來交流信息。使用XML的優(yōu)點(diǎn)是它的異構(gòu)性、可擴(kuò)展性、靈活性,適用于松耦合特性的分布式系統(tǒng)。
2.1.1 代理
中間件為設(shè)備和應(yīng)用層提供了雙向接口,我們用代理來模擬設(shè)備接口。閱讀器代理負(fù)責(zé)控制閱讀器驅(qū)動、狀態(tài)查詢、接收標(biāo)簽數(shù)據(jù)列表等工作,把設(shè)備傳進(jìn)來的數(shù)據(jù)轉(zhuǎn)換成標(biāo)準(zhǔn)化格式。用戶可以根據(jù)傳感器類型的不同而擴(kuò)展它,這樣能更好地適應(yīng)客戶需要。打印機(jī)代理負(fù)責(zé)控制打印機(jī),用戶可根據(jù)需要添加其他類型 。
2.1.2 消息機(jī)制
RFID中間件是消息中間件的一種,它的消息傳遞模式支持點(diǎn)對點(diǎn)模式和發(fā)布/訂閱模式。代理和設(shè)備之間多用點(diǎn)對點(diǎn)模式,例如啟動或關(guān)閉一個閱讀器時,使用UDP套接字來處理點(diǎn)對點(diǎn)操作;若閱讀器被成功啟動,它也會廣播一個閱讀器狀態(tài)更新信息。
在事件處理層,應(yīng)用系統(tǒng)通過發(fā)布/訂閱機(jī)制獲得感興趣的信息,中間件為完成這一功能設(shè)置了訂閱解析器,提取定義文件的參數(shù)和方法,傳送到事件處理機(jī)制,對RFID數(shù)據(jù)進(jìn)行處理。
2.1.3 緩沖機(jī)制
RFID閱讀器每秒鐘會閱讀到成千上萬的標(biāo)簽,為防止溢出,采用線程來加速包的卸載,并將數(shù)據(jù)保存在即時隊列中。這里線程和數(shù)據(jù)隊列構(gòu)成了一個緩沖機(jī)制,以滿足計算機(jī)的實時處理要求,它可以平滑從閱讀器接收到的大量簡單重復(fù)無序數(shù)據(jù),按要求進(jìn)行處理。每個閱讀周期 (讀周期是和讀寫器交互的最小單位)線程接收一組EPCs(標(biāo)簽EPC,閱讀器ID,時間戳)組合,將其發(fā)送到消息隊列,對其進(jìn)行事件有效性驗證,檢查是否出現(xiàn)讀寫錯誤或漏讀,實現(xiàn)對數(shù)據(jù)的初步過濾。正確讀取的數(shù)據(jù)記錄在數(shù)據(jù)庫的Observation表中。
表1 Observation表
2.2 事件處理層
事件處理層位于原始數(shù)據(jù)采集層和業(yè)務(wù)邏輯之間。它根據(jù)上層系統(tǒng)發(fā)送的定義文件和回發(fā)地址,生成報告文件,按發(fā)布/訂閱機(jī)制將報告反饋給系統(tǒng) J。原始數(shù)據(jù)采集層提供了硬件的統(tǒng)一接口,事件處理層則定義了應(yīng)用系統(tǒng)對RFID中間件的標(biāo)準(zhǔn)訪問方式。它對原始RFID數(shù)據(jù)進(jìn)一步處理,使數(shù)據(jù)轉(zhuǎn)化為上層系統(tǒng)需要的形式。圖3為RFID數(shù)據(jù)處理流程。
圖3 數(shù)據(jù)處理流程
數(shù)據(jù)流經(jīng)過緩沖機(jī)制后,還存在著大量的冗余信息,需要對其進(jìn)行過濾、聚合,提取出有意義的事件。我們按解析機(jī)制發(fā)來的事件周期T對數(shù)據(jù)流進(jìn)行操作,按上層定義的業(yè)務(wù)規(guī)則判斷事件類型,并存儲在相應(yīng)的表格中。
2.2.1 過濾機(jī)制
經(jīng)過緩沖機(jī)制后的數(shù)據(jù)流還存在著大量的重復(fù),即閱讀器重復(fù)和標(biāo)簽重復(fù)。標(biāo)簽位于一個閱讀器識讀范圍內(nèi)時,閱讀器就會不斷地讀取標(biāo)簽數(shù)據(jù),直到標(biāo)簽離開為止,稱為標(biāo)簽重復(fù);另外,當(dāng)標(biāo)簽同時處于多個閱讀器的識讀范圍內(nèi)時,它的數(shù)據(jù)也會被不同的閱讀器重復(fù)讀取。圖4為閱讀器重復(fù)。
為解決上述問題,對標(biāo)簽重復(fù),我們只記錄標(biāo)簽第一次出現(xiàn)和最后一次出現(xiàn)的時間;對閱讀器重復(fù),一是在布置閱讀器位置時考慮到交疊情況,盡量用最少的閱讀器數(shù)量覆蓋全部區(qū)域。但為了提高識讀率,往往不能避免交疊。這里采取的是虛擬閱讀器的方法,同一地區(qū)的多個閱讀器組成一個虛擬閱讀器。如圖4的R1,R2,R3,R4共同組成一個虛擬閱讀器V0。過濾后的數(shù)據(jù)存放在表2中,T—Start為V~Reader初次閱讀某標(biāo)簽的時間,以后再讀到該標(biāo)簽則更新T—End和Count值(Coum為標(biāo)簽讀取次數(shù),有時為簡便起見,可略去)。
表2 Filter表
圖4 閱讀器重復(fù)示例
對Filter表加上觸發(fā)器,當(dāng)有插入事件發(fā)生時,則表示有新的標(biāo)簽出現(xiàn);當(dāng)某標(biāo)簽的T End(Count)在規(guī)定的時間內(nèi)都未發(fā)生變化時,則引動觸發(fā)器,認(rèn)為該標(biāo)簽消失。將消失的標(biāo)簽信息送入下一個機(jī)制。這樣只報告標(biāo)簽進(jìn)入和離開的時間,大大減少了數(shù)據(jù)量。
2.2.2 事務(wù)處理機(jī)制
過濾后的數(shù)據(jù)流蘊(yùn)含大量的語義信息。事務(wù)處理機(jī)制根據(jù)訂閱機(jī)制提供的業(yè)務(wù)規(guī)則,對數(shù)據(jù)流進(jìn)行分析,提取出有意義的事件模式。
在本項目的倉儲管理系統(tǒng)中,有三種基本的事件類型:移動事件、警告事件和關(guān)聯(lián)事件。移動事件包括出/入庫事件、移庫事件,是關(guān)于標(biāo)簽位置發(fā)生變化的事件。警告事件人員進(jìn)入禁區(qū)、操作錯誤等。
關(guān)聯(lián)事件為了責(zé)任到戶,系統(tǒng)需要知道某批托盤貨物 是由哪個人員駕駛哪輛叉車運(yùn)載的,即人員一叉車一托盤關(guān)聯(lián)關(guān)系。
下面以出/入庫事件為例,闡述系統(tǒng)的處理流程。對接收的標(biāo)簽查詢其歷史信息,判斷其標(biāo)簽類型(托盤、人員、叉車)。對托盤標(biāo)簽來說,如果查詢歷史信息,該托盤原始位置為車間,且初始默認(rèn)為空托,入庫門閱讀器讀到該標(biāo)簽信息,則為入庫事件,于是將該事件插入到入庫表中。同理,出庫事件、轉(zhuǎn)庫事件和警告事件都會引起相應(yīng)的表格操作。
2.2.3 訂閱/解析器
訂閱/解析器使得系統(tǒng)有著更好的可擴(kuò)展性和可移植性。在原始數(shù)據(jù)采集層,代理兼容了不同的設(shè)備接口,使中間件與設(shè)備無關(guān)。而解析機(jī)制則將上層系統(tǒng)發(fā)來的定義文件轉(zhuǎn)化為中間件可以理解的方式。事件周期T和業(yè)務(wù)規(guī)則都是由上層定義的,中間件只需按要求進(jìn)行處理就可以了。報告文件由事務(wù)處理機(jī)制生成并發(fā)送到指定位置,同時在數(shù)據(jù)庫記錄。
2.2.4 數(shù)據(jù)庫支持
傳統(tǒng)的數(shù)據(jù)庫更新并不頻繁按設(shè)定的時間進(jìn)行。但RFID數(shù)據(jù)庫的更新非常頻繁。閱讀器不斷的讀入原始數(shù)據(jù),進(jìn)行過濾、聚合處理后的數(shù)據(jù)要進(jìn)行存儲,上層應(yīng)用程序又不斷地進(jìn)行查詢,使得RHD數(shù)據(jù)庫的構(gòu)建和傳統(tǒng)數(shù)據(jù)庫不同,需要分層建立。如圖5所示:底層是原始RHD數(shù)據(jù)庫,過濾聚合(清理)后的數(shù)據(jù)庫位于第二層,然后是業(yè)務(wù)邏輯層,為便于查詢,最上層由需要頻繁查詢的數(shù)據(jù)組成。這些層次對應(yīng)著中間件數(shù)據(jù)處理的不同階段。
圖5 數(shù)據(jù)庫層次示例
3 RFID技術(shù)在倉儲管理中的應(yīng)用
廣東某公司的石化倉儲計量控制系統(tǒng)應(yīng)用RFID技術(shù)有較好的效果,它可以實時顯示庫存狀態(tài),對貨物進(jìn)行準(zhǔn)確定位,積極支持上層查詢,對數(shù)據(jù)進(jìn)行有效采集、傳輸和記錄,實現(xiàn)對貨品的動態(tài)管理,提高效率和安全性。
3.1 定位
標(biāo)簽的原始位置,出入庫記錄,轉(zhuǎn)庫記錄都被整合在History表中,顯示每個標(biāo)簽的歷史位置信息。為更精確地獲取貼標(biāo)簽的庫內(nèi)位置,需要在倉庫內(nèi)部布置位置閱讀器,獲取標(biāo)簽信息。這部分的功能有待系統(tǒng)進(jìn)一步擴(kuò)展。
3.2 查詢監(jiān)控
系統(tǒng)要了解出庫物品和入庫物品是否與出庫.單/入庫單一致,需要對貨品進(jìn)行跟蹤監(jiān)控,查詢是否有漏讀或不可靠閱讀;出/入庫貨品種類數(shù)量、人員叉車托盤是否按指定分配等。應(yīng)用程序可以直接查詢數(shù)據(jù)庫,也可以用發(fā)送/訂閱模式從中間件獲得實時信息。當(dāng)發(fā)現(xiàn)庫存量、出/入庫計劃、計劃外出庫或操作不規(guī)范等情況,系統(tǒng)自動報警。
3.3 顯示庫存狀態(tài)
為了即時獲取庫存數(shù)量,庫存量=原始庫存量+入庫量一出庫量。對入庫表、出庫表添加觸發(fā)器,一旦有插入操作,并且出入庫量不為0,即不為空托時,會啟動一個觸發(fā)器,對產(chǎn)品表的庫存量進(jìn)行修改。以下為對入庫表加上觸發(fā)器:
4 結(jié)語
本文主要介紹了RFID倉庫管理系統(tǒng)中RFID中間件的設(shè)計問題。應(yīng)用RFID標(biāo)簽和閱讀器實現(xiàn)對貨品的動態(tài)管理,可提高效率和安全性。同時為了適應(yīng)不同的閱讀器和應(yīng)用系統(tǒng)要求,采用RFID中間件技術(shù),使RFID數(shù)據(jù)采集與應(yīng)用程序相分離,不僅適用于倉儲管理系統(tǒng),稍作改進(jìn)后可推廣到其他的商業(yè)領(lǐng)域中去。
本文提出的中間件模型按功能分為兩層,針對數(shù)據(jù)處理的不同階段有相應(yīng)的機(jī)制進(jìn)行處理。在實際應(yīng)用中,一些系統(tǒng)只使用中間件完成數(shù)據(jù)采集功能,剩下的工作完全由應(yīng)用系統(tǒng)和數(shù)據(jù)庫交互完成。本文對中問件的功能進(jìn)行了拓展,對數(shù)據(jù)庫進(jìn)行過濾、聚合、事件模式提取,使原始數(shù)據(jù)轉(zhuǎn)化為上層需要的形式,更好地適應(yīng)了系統(tǒng)需求。應(yīng)用代理和發(fā)布/訂閱技術(shù),使系統(tǒng)有良好的可擴(kuò)展性和移植性。
(企業(yè)數(shù)字化技術(shù)教育部工程研究中心;同濟(jì)大學(xué)CAD研究中心;中國石化股份有限公司茂名分公司,狄菲 ,趙衛(wèi)東 ,周志平 ,彭瑞 ,季軍)