《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計應(yīng)用 > RFID 中間件數(shù)據(jù)的過濾方法
RFID 中間件數(shù)據(jù)的過濾方法
RFID世界網(wǎng)
綦麟
摘要: RFID是“radiofequencyidentification,無線射頻識別”的縮寫,是一種非接觸自動識別和數(shù)據(jù)采集技術(shù),,該...
關(guān)鍵詞: RFID|NFC RFID 中間件 過濾方法
Abstract:
Key words :

  RFID 是“radio fequency identification,無線射頻識別”的縮寫,是一種非接觸自動識別和數(shù)據(jù)采集技術(shù),該技術(shù)最早誕生于1948年,美國人HarryStrockman在IRE無線電工程師協(xié)會學(xué)報上發(fā)表論文對其理論和實現(xiàn)方法進行了詳細描述,迄今已有60年,。在進入20世紀90年代后, RFID技術(shù)的應(yīng)用規(guī)模急劇擴大,從2000 年之后到現(xiàn)在,RFID產(chǎn)品種類得到極大豐富,成本不斷降低,各種新的應(yīng)用層出不窮,。

  RFID系統(tǒng)包括RFID硬件和應(yīng)用支撐軟件2個部,,硬件部分由電子標簽和閱讀器組成,電子標簽是數(shù)據(jù)載體,分為無源射頻標簽,、半無源射頻標簽,、有源射頻標簽3類,無源電子標簽通過提取閱讀器發(fā)出射頻能量作為其工作的電源,并將標簽內(nèi)信息向閱讀器傳送;半無源標簽及有源標簽的工作能量由電池提供,。RFID 中間件則是RF ID軟件系統(tǒng)中最重要的一環(huán),它直接面對硬件采集上來的海量數(shù)據(jù),對其進行過濾,有效封裝后再提交給高層應(yīng)用軟件,被稱為是RF ID系統(tǒng)的神經(jīng)中樞,。目前對RFID中間件的研究,主要集中于如何對海量數(shù)據(jù)進行過濾,去冗余化,并有效挖掘其中的有用信息這樣幾個方面。筆者結(jié)合幾年的RFID應(yīng)用經(jīng)驗,對當前已有的過濾算法進行了研究,并提出了一種帶有噪點抑制功能的RFID數(shù)據(jù)過濾算法,主要解決了RFID數(shù)據(jù)采集中的噪聲干擾以及過濾冗余數(shù)據(jù)2個問題,。

1 RFID中間件構(gòu)成

  根據(jù)RFID權(quán)威研究機構(gòu)Auto - ID實驗室對其EPC物聯(lián)網(wǎng)Savant中間件的定義,以及后來由EPCglobal提出的EPC應(yīng)用層事件規(guī)范和低層讀寫器接口協(xié)議,一個最基本的RF ID中間件應(yīng)該包含如下幾個功能模塊: Reader接口模塊,、邏輯驅(qū)動器映射模塊、RF ID 數(shù)據(jù)過濾模塊,、業(yè)務(wù)規(guī)則過濾模塊,、設(shè)備管理與配置模塊、上層服務(wù)接口模塊,, 如圖1所示,。

  Reader接口用于中間件與RFID讀寫器的數(shù)據(jù)通信,主要有獲取RF ID數(shù)據(jù)以及下達設(shè)備管理模塊的讀寫器指令2個功能。

  設(shè)備管理配置模塊用于調(diào)整RF ID讀寫設(shè)備的工作狀態(tài),配置相應(yīng)的Reader接口參數(shù)等.邏輯讀寫器映射模塊用于將多個物理讀寫器,或者讀寫器的多條天線映射成為一個邏輯讀寫器,。 一個邏輯讀寫器代表了一個有具體含義的數(shù)據(jù)采集點(比如5號貨架) ,而不管該采集點在物理上由多少個讀寫器和天線組成,。它屏蔽了數(shù)據(jù)采集點的具體實現(xiàn)方式,減少了數(shù)據(jù)過濾等上層模塊與下層數(shù)據(jù)采集部分的軟件耦合度。 對于上層模塊來說,可見的只有邏輯讀寫器,所以邏輯讀寫器映射模塊對RFID數(shù)據(jù)有初步過濾的功能,。
 

  RFID數(shù)據(jù)過濾與業(yè)務(wù)規(guī)則過濾,這2個部分統(tǒng)稱為RFID中間件數(shù)據(jù)過濾模塊,分別在2個層次上對RFID數(shù)據(jù)進行過濾. 前者對硬件上報的海量RFID 數(shù)據(jù)進行去冗余化等處理, 是公認的RFID中間件核心功能之一,。 后者則在具體業(yè)務(wù)規(guī)則的基礎(chǔ)上對過濾后的RFID數(shù)據(jù)進行進一步組裝,使其成為符合上層軟件要求的、帶有商業(yè)含義的事件數(shù)據(jù),使抽象的RFID數(shù)據(jù)擁有了豐富的現(xiàn)實含義,。

  上層服務(wù)接口將經(jīng)過過濾和組裝的RFID數(shù)據(jù)向上層應(yīng)用軟件發(fā)送,以實現(xiàn)更為豐富和貼近現(xiàn)實的功能,。

2 RFID數(shù)據(jù)過濾方法設(shè)計

  2. 1 現(xiàn)有數(shù)據(jù)過濾方法及問題分析

  從硬件上報的原始RFID數(shù)據(jù)量非常巨大,根據(jù)具體的配置不同,每臺讀寫器每秒可以上報數(shù)個至數(shù)十個不等的標簽數(shù)據(jù),但其中只有少部分是對用戶有意義的、非重復(fù)性的數(shù)據(jù),,這樣大量的數(shù)據(jù)如果不經(jīng)過去冗等處理而直接上傳,將會給整個RFID系統(tǒng)帶來很大的負擔,。 所以,對RFID數(shù)據(jù)過濾方法的研究在近幾年一直是個熱點。

  現(xiàn)有過濾方法主要可以分為如下幾類:

  1) 建立事件列表類. 對每一個新到標簽數(shù)據(jù)進行檢測,如果是新標簽加入相應(yīng)列表中,且該標簽在列表中已存在,則僅更新對應(yīng)標簽的時間等狀態(tài)數(shù)據(jù),而不新建標簽數(shù)據(jù)記錄,以達到去除重復(fù)信息的作用,。

  2) 事件編碼類. 對標簽狀態(tài)的改變進行編碼,標簽出現(xiàn)編碼為0,標簽消失編碼為1. 然后加入計時器機制,對計時器有效時間內(nèi)的同一標簽的狀態(tài)跳變進行忽略,從而在狀態(tài)定義和時間維度2個方面對數(shù)據(jù)進行了去重化,。

  這些算法均能夠很好地消除冗余數(shù)據(jù),減少了上層系統(tǒng)的負荷,有著較好的過濾效果. 但在實際應(yīng)用中,除了RFID數(shù)據(jù)的去冗化以外,對數(shù)據(jù)的過濾還有著其他的需求. 比如,由于信號不穩(wěn)定或其他干擾因素,貨架上物品的RFID標簽并不能在每一個讀寫器周期中被檢測到;或者當顧客推著小推車從貨架旁走過時,其推車內(nèi)已選購的商品被貨架內(nèi)的讀寫器誤讀到。本文中將類似的無效RFID數(shù)據(jù)稱為RFID噪點,。

  在上述幾類過濾算法設(shè)計中, RFID噪點顯然不是一個被考慮到的因素,只要出現(xiàn)了RFID 標簽,哪怕只是誤讀到一次,也會被作為一個事件數(shù)據(jù)進行上傳,。如果上層業(yè)務(wù)規(guī)則過濾模塊沒有對這些噪點數(shù)據(jù)進行處理,則會產(chǎn)生一些莫須有的事件記錄,對整個系統(tǒng)的數(shù)據(jù)管理造成很大麻煩,但上層業(yè)務(wù)規(guī)則過濾模塊對噪點的發(fā)現(xiàn)和抑制顯然是一件很難的事情,因為數(shù)據(jù)采集細節(jié)已經(jīng)被RFID數(shù)據(jù)過濾模塊完全屏蔽掉了,對噪點的發(fā)現(xiàn)失去了最基本的依據(jù),。

  2. 2 帶噪點抑制功能的RFID數(shù)據(jù)過濾方法設(shè)計
  RFID標簽數(shù)據(jù)由讀寫器在每個報告周期reportcycle進行上報,在經(jīng)歷多個報告周期之后,一個典型的RFID讀寫器上報數(shù)據(jù)如圖2所示,。

  將在報告周期中出現(xiàn)的RF ID標簽編碼為1,未出現(xiàn)的編碼為0,則對每一個標簽,其事件可以記錄為一個01序列串. 對圖2而言: tag1可編碼為0001111000,表示標簽通過了讀寫器范圍; tag2可編碼為1111100000,表示標簽離開了讀寫器范圍;tag3可編碼為0000001111,表示標簽進入并停留在讀寫器范圍中. 對tag4和tag5而言,它們出現(xiàn)了噪點數(shù)據(jù), tag4也許不應(yīng)該出現(xiàn)在讀寫器范圍內(nèi),而tag5根本就沒有離開,。根據(jù)實際情況, RF ID噪點可分為1噪點和0噪點2類,前者表示非讀寫器范圍內(nèi)的標簽被偶爾讀到,如tag4;后者表示處于讀寫器范圍內(nèi)的標簽偶爾沒有被讀到,如tag5. 按照傳統(tǒng)的過濾算法, tag5 將產(chǎn)生一個通過事件,tag4將產(chǎn)生2個離開事件和2個進入事件。

  對噪點進行抑制的關(guān)鍵在于對偶爾出現(xiàn)的噪點進行識別,從而通過程序?qū)⑵淠ㄈ?,本文中提出的抑噪算法采用了閥值的思想,對標簽的每次上報出現(xiàn)都賦予一定的權(quán)值,沒出現(xiàn)的標簽則減少其權(quán)值. 當該標簽權(quán)值高于或低于某個閥值的時候,觸發(fā)相應(yīng)的標簽事件,,本算法具體描述為:

  1 ) 定義標簽每次出現(xiàn)后累加的權(quán)值valueStep.
  2) 定義觸發(fā)標簽出現(xiàn)事件的閥值fapp.
  3) 定義觸發(fā)標簽消失事件的閥值fd is.
  4) 定義標簽狀態(tài)字段detectS tatus.
  5) 如果標簽出現(xiàn),則其權(quán)值加valueStep.
  6) 如果標簽未出現(xiàn),其權(quán)值減1.
  7) 標簽權(quán)值大于等于fapp,且detectS tatus =false,則觸發(fā)標簽出現(xiàn)事件, 產(chǎn)生一條標簽出現(xiàn)的記錄. 然后將detectS tatus置為true.
  8) 標簽權(quán)值小于等于fdis,且detectS tatus =true,則觸發(fā)標簽消失事件, 產(chǎn)生一條標簽消失的記錄. 然后將detectS tatus置為false.

  在該算法中,不管是0噪點還是1噪點,由于其出現(xiàn)的次數(shù)很少,則其標簽權(quán)值很難高于fapp或低于fdis, 就無法觸發(fā)標簽事件, 從而有效地抑制了噪點數(shù)據(jù). 而正常標簽不管被讀寫器上報了多少次,其只有在權(quán)值大于等于fapp時才會觸發(fā)一條標簽出現(xiàn)記錄, 而標簽狀態(tài)字段detect Status則保證了當標簽權(quán)值在閥值上下波動時不會對事件重復(fù)觸發(fā),所以該算法也有效解決了標簽數(shù)據(jù)冗余的問題。在經(jīng)過處理后,標簽的報告情況由多個離散點變成了較為連續(xù)的權(quán)值變化, 如圖3所示,。

  算法中的出現(xiàn)閥值fapp 與權(quán)值value Step 之比fapp / valueS tep越大,則對1噪點的過濾情況越好;消失閥值fdis越低,則對0噪點的過濾更加有效,。當fapp / valueS tep小于等于1的時候, 該過濾算法將不對1噪點進行過濾處理, 而僅保留去除冗余數(shù)據(jù)的功能. 所以, 根據(jù)客觀使用環(huán)境的需求, 對value Step, fapp, fdisp3個參數(shù)進行合理調(diào)整和搭配,可以使本算法有效適應(yīng)不同過濾目標的需求。

3 算法實現(xiàn)與驗證

  3. 1 算法實現(xiàn)

  筆者對該算法設(shè)計思想進行了實現(xiàn),以驗證其在不同應(yīng)用場景下的適應(yīng)性和有效性. 實驗平臺使用RS232接口的單天線讀寫器,該讀寫器報告周期為1 s,每次報告標簽數(shù)為1個. 算法實現(xiàn)采用java 語言, 通過comm. jar 開發(fā)包進行串口通訊,。

  首先是為標簽構(gòu)建一個TagEvent類,該類包含的關(guān)鍵參數(shù)和方法為:

public class TagEvent imp lements Runnable{
int value;
boolean detecStauts = false;
int fmax;
int fmin;
public void run ( ) {
while ( value > 0) {
try{
Thread. currentThread ( ). sleep (1000) ;
} catch ( Interrup tedExcep tion e) { }
if ( value > = fmax&&! detecStauts) {
(觸發(fā)標簽出現(xiàn)記錄)
detecStauts = true;
}
else if ( value < = fmin&&detecStauts) {  
(觸發(fā)標簽消失記錄)
  detecStauts = false;
 }
 value - - ;
} }

  當過濾模塊主程序檢測到一個新標簽的時候,便為其建立一個Tag Event類的對象new Tag,并對各個關(guān)鍵字段賦初值,同時啟動該對象內(nèi)部的計時器線程:

  new Thread ( newTag). start ( ) ;該計時器線程的作用是每個報告周期對標簽權(quán)值value進行檢查并觸發(fā)相應(yīng)操作. 每次檢查后將標簽權(quán)值value減1,以實現(xiàn)當標簽未被報告時其權(quán)值的逐步下降. 當權(quán)值value減到0的時候,計時器線程停止,這時可以銷毀該對象,。

  當過濾算法主模塊發(fā)現(xiàn)報告的標簽已存在時,對該標簽對象的value值進行累加:

newTag. value + = valueStep;
if ( newTag. value > = newTag. fmax) {
 newTag. value = newtag. fmax;
}

  其中valueStep就是算法中定義的累加權(quán)值. 如果權(quán)值value已經(jīng)達到閥值fm ax,則將其保持在該值,防止經(jīng)過多個上報周期后標簽權(quán)值過高,影響后繼判斷。

  3. 2 實驗驗證

  在驗證的過程中模擬了2 種應(yīng)用場景: 第1種是帶讀寫器的貨架,該場景要求達到貨架讀寫器能穩(wěn)定識別放入的帶標簽物品,不會因為信號波動而誤報貨品離開信息,并對經(jīng)過貨架的其他物品保持較低的敏感度;第2種是門禁系統(tǒng),要求對出現(xiàn)在讀寫范圍內(nèi)的標簽立刻做出反應(yīng),但在一定時間內(nèi)不能重復(fù)上報同一個標簽,。

  在第1種貨架系統(tǒng)場景中,設(shè)置valueS tep = 3,fapp = 10, fdisp = 0,當標簽進入讀寫器范圍后,經(jīng)過5 s左右的時間過濾模塊觸發(fā)標簽出現(xiàn)操作,人為將標簽多次短時間移出讀寫器范圍,模擬信號干擾和波動的情況,并將另一標簽從讀寫器范圍內(nèi)移過,讀寫器均未觸發(fā)多余的標簽出現(xiàn)和消失操作,。

  在第2 種門禁系統(tǒng)場景中,設(shè)置valueS tep =10, fapp = 10, fd isp = 0,當標簽進入讀寫器范圍內(nèi),過濾模塊立即觸發(fā)了標簽出現(xiàn)操作,當標簽消失后, 10 s內(nèi)不再重新觸發(fā)。

4 結(jié)束語

  本文中通過對RFID中間件實際應(yīng)用場景的分析和現(xiàn)有過濾算法的研究,設(shè)計并實現(xiàn)了一種適用范圍廣,帶有噪點抑制功能的RFID數(shù)據(jù)過濾算法,, 通過一個java程序在模擬場景中對算法進行了實驗。結(jié)果表明,該算法具有良好的抑噪和去冗能力,在不同參數(shù)的組合下,可以適應(yīng)各種實際應(yīng)用需求,, 該過濾算法為更高層的業(yè)務(wù)規(guī)則過濾模塊奠定了很好的數(shù)據(jù)基礎(chǔ),對于RFID中間件的設(shè)計和開發(fā)有一定的實用價值,。
此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。