宋 磊,杜 彬
(山西職業(yè)技術(shù)學(xué)院, 山西 太原 030006)
隨著物聯(lián)網(wǎng)技術(shù)的快速發(fā)展與普及,各類智能家居應(yīng)用系統(tǒng)也逐漸被大眾所認可并廣泛普及。RFID技術(shù)作為智能家居系統(tǒng)中實現(xiàn)對各類進行物品自動識別的關(guān)鍵技術(shù),具備了標簽信息容量大(最高為4GBit)、識別率高(準確率>98%)、信號穿透性好以及數(shù)據(jù)可讀寫等優(yōu)勢[1]。但在實際應(yīng)用場景中,由于受控設(shè)備數(shù)量增加而引發(fā)的標簽檢測沖突會導(dǎo)致RFID系統(tǒng)性能和處理速度發(fā)生嚴重下降進而造成物聯(lián)網(wǎng)系統(tǒng)的響應(yīng)遲緩。因此研究更高效的標簽防碰撞算法對RFID技術(shù)的應(yīng)用與發(fā)展具有重要的意義。
RFID技術(shù)的原理為:嵌入了電子芯片的標簽(Tag)在寫入數(shù)據(jù)后被部署在不同的物體上等待接收由閱讀器(Reader)發(fā)送的射頻信號,在接收到信號后標簽被激活并向閱讀器反饋信息;閱讀器對信息進行譯碼并將數(shù)據(jù)上傳至智能家居系統(tǒng)核心模塊(當前以Raspberry Pi為主),核心模塊中的程序根據(jù)數(shù)據(jù)內(nèi)容進行判斷并向系統(tǒng)中的各執(zhí)行模塊發(fā)出相應(yīng)的控制指令。
由于受到體積與功率的限制,單一閱讀器的信號強度和覆蓋范圍有限。因此智能家居系統(tǒng)中往往會部署多個閱讀器以實現(xiàn)對全部標簽的數(shù)據(jù)訪問,而RFID系統(tǒng)的碰撞問題也由此被引發(fā)。碰撞現(xiàn)象如圖1所示。
圖1 RFID系統(tǒng)的碰撞現(xiàn)象
當出現(xiàn)圖1(a)中所描述的某個標簽同時處于多個閱讀器作用域內(nèi),同時收到它們的訪問請求時,就會發(fā)送數(shù)據(jù)訪問沖突。當出現(xiàn)圖1(b)中所述的多個標簽同時向某個閱讀器發(fā)送數(shù)據(jù)時,也會引發(fā)沖突。
在智能家居的應(yīng)用場景中,需要識別的物品數(shù)量多、體積大小不一,并且分布在不同的房間、角落里,墻壁與大體積物品的遮擋會導(dǎo)致射頻信號的傳輸受到很大影響,因而單一閱讀器的有效作用域變得非常有限,系統(tǒng)中需要部署多個閱讀器設(shè)備才能夠正常運行。同時,在系統(tǒng)實際運行過程中還會遇到物品的擺放位置經(jīng)常被移動的情況。這些特點使閱讀器與標簽的作用范圍出現(xiàn)重復(fù)的情況增加,進而導(dǎo)致發(fā)生標簽碰撞沖突的概率明顯增加,嚴重影響智能家居系統(tǒng)的運行效率。
在經(jīng)典的RFID防碰撞算法中,采用了類似建立二叉樹模型并進行遍歷的模式來進行處理,其具體過程為:將需要處理的所有碰撞標簽劃分為標簽子集0與標簽子集1,首先檢索標簽子集0中的各個標簽,如果無沖突現(xiàn)象存在,即完成識別;否則,就繼續(xù)將標簽子集0劃分為子集00和子集01,并繼續(xù)檢索序號較小的00子集的內(nèi)容;若碰撞依舊存在,則將劃分過程繼續(xù)下去,當子集0中的全部標簽識都被正確識別之后,再對子集1的內(nèi)容進行同樣的劃分與檢索[2]。
該算法的局限在于,當存在大于兩位的標簽碰撞的情況時,當首次檢索到所有碰撞位后,并未對信息進行預(yù)處理,從而導(dǎo)致信息傳輸產(chǎn)生嚴重的冗余;而對于兩個標簽只出現(xiàn)一位碰撞的情況,也未做優(yōu)化處理以進一步提高程序的運行效率。
本文針對經(jīng)典RFID防碰撞算法的不足,設(shè)計了基于信息預(yù)處理的防碰撞改進算法,其基本原理是在標簽分組處理時先僅對沖突位進行識別,獲取到當前標簽集合中的全部沖突位來組成新的ID,然后基于獲取到的新ID來與閱讀器通信并創(chuàng)建相應(yīng)的二叉樹,并遵循后續(xù)訪問原則對標簽的信息進行處理。算法流程說明如下:
步驟一:閱讀器發(fā)送全1指令獲取所有標簽的序列號信息,并檢測到當前的全部沖突位。基于沖突位設(shè)置為1、未沖突則為0的原則,創(chuàng)建一組用于記錄碰撞位置的二進制序列,并將此序列重新發(fā)送給全體標簽。
步驟二:標簽獲取到記錄碰撞位置的二進制序列后,將其與自身ID對比后,獲取碰撞位組成一個新的標簽ID用于和閱讀器之間通信。
步驟三:構(gòu)造二叉樹,并以當前結(jié)點為根,左葉子結(jié)點為0,右葉子結(jié)點為1。
步驟四:閱讀器檢測左葉子節(jié)點是否存在沖突,如未檢測到則對標簽內(nèi)容進行識別并轉(zhuǎn)向步驟六;若檢測到兩個標簽僅存在一個碰撞位時,對它們同時進行識別并轉(zhuǎn)向步驟六;若它們的碰撞位超過兩位時,則轉(zhuǎn)向步驟五。
步驟五:繼續(xù)創(chuàng)建二叉樹,根節(jié)點即為當前節(jié)點,左葉子節(jié)點以最高碰撞位左側(cè)內(nèi)容+0構(gòu)成;右葉子結(jié)點由最高碰撞位左側(cè)內(nèi)容+ 1+相鄰碰撞位之間無碰撞數(shù)據(jù)構(gòu)成,二叉樹構(gòu)成完成后轉(zhuǎn)向步驟四。
步驟六:閱讀器檢測右葉子節(jié)點是否存在沖突,若未檢測到碰撞沖突則對標簽內(nèi)容進行識別;若檢測到兩個標簽僅存在一個碰撞位時,對它們同時進行識別;若它們的碰撞位超過兩位時,則轉(zhuǎn)向步驟五。
假設(shè)某閱讀器的識別范圍涵蓋了4個標簽,其編碼內(nèi)容如表1所示。
表1閱讀器的內(nèi)容編碼表
算法運行過程說明如下:
1) 閱讀器向所有標簽發(fā)送全1命令(8位均為1),各標簽響應(yīng)后,獲取到的結(jié)果為10XXXX11,獲取到各個碰撞位,并生成4個新的標簽。
2) 閱讀器與4個新標簽通信并創(chuàng)建二叉樹,以0作為左葉子節(jié)點,1作為右葉子節(jié)點,根節(jié)點為當前節(jié)點。
3) 閱讀器對左葉子節(jié)點(A1、B1)進行碰撞沖突檢測,ID從高位開始與參數(shù)0進行比較,獲取結(jié)果為0X1X,由于發(fā)生2位以上的碰撞,則以當前節(jié)點為根來構(gòu)建二叉樹,左葉子節(jié)點為最高碰撞位左側(cè)內(nèi)容+0,即00;右葉子節(jié)點為最高碰撞位左側(cè)內(nèi)容+1+相鄰碰撞為中間的正常數(shù)據(jù),即011。
4) 閱讀器對左葉子節(jié)點進行碰撞沖突檢測,ID從高位開始與參數(shù)00進行比較,獲取結(jié)果為0010,未檢測到碰撞,則直接識別標簽A1的內(nèi)容。
5) 閱讀器繼續(xù)對右葉子節(jié)點進行碰撞沖突檢測,ID從高位開始與參數(shù)011進行比較,獲取結(jié)果為0111,未檢測到碰撞,則直接識別標簽A2的內(nèi)容。
6) 閱讀器對C1、D1進行碰撞沖突檢測,ID從高位開始與參數(shù)1進行比較,譯碼結(jié)果為110X,即僅發(fā)生了一位碰撞,為提升執(zhí)行效率,僅需要將兩個標簽的第三位數(shù)據(jù)設(shè)置為0、1,即可完成對標簽的碰撞位的處理。進而閱讀器即可完成對標簽C1、D1的識別操作。
至此,4個標簽的識別操作全部完成,在實際應(yīng)用場景中,閱讀器檢測范圍內(nèi)的標簽的數(shù)量與ID位數(shù)都多于本示例,因此根據(jù)該算法創(chuàng)建的二叉樹層級也會相應(yīng)的增加,該算法的效率優(yōu)勢也會體現(xiàn)的更加明顯。
本文針對現(xiàn)有RFID系統(tǒng)中常用的經(jīng)典碰撞檢測算法中存在的問題,設(shè)計了一種基于信息預(yù)處理的防碰撞改進算法。經(jīng)過對算法流程的分析與典型示例的模擬可以證明,本文提出的算法在有效提升標簽識別效率的同時,還大幅降低了通信過程中的冗余信息。為有效解決RFID系統(tǒng)中的標簽碰撞現(xiàn)象提供了有效的解決方案。
[1] 敖志剛.智能家庭網(wǎng)絡(luò)及其控制技術(shù)[M].北京:人民郵電出版社,2013.
[2] 郭愛煌.移動RFID技術(shù)應(yīng)用與設(shè)計[J].現(xiàn)代電子技術(shù),2014(15):15-17.