一種改進uhf-rfid多標簽防碰撞樹類算法及其應用
【技術領域】
[0001] 本發明涉及射頻識別技術領域,特別是一種改進UHF-RFID多標簽防碰撞樹類算 法及其應用。
【背景技術】
[0002] 射頻識別(RFID)技術是一種非接觸式的自動識別技術,以無線射頻通信為媒介, 通過空間耦合來對目標物體進行自動識別與數據交換。RFID系統核心部件是讀寫器和電子 標簽,按工作頻率可分為低頻(LF)、高頻(HF)、超高頻(UHF)、微波(Mff)等不同種類,而電 子標簽按能量供給可分為無源、有源和半有源三種。其中,由于UHF-RFID具有載波頻率高 (800M/900M),通信距離較遠(幾米至幾十米),標簽無源,讀寫速度快等優點,在智能交通、 物品追蹤、物流運輸、防偽識別等各領域應用越來越廣泛。而單個讀寫器與多個標簽之間通 信的碰撞問題則是UHF-RFID領域研究的重點之一。
[0003] UHF-RFID屬于無源RFID,也即被動式RFID,采用反向散射調制,為讀寫器先講型 (RTF),電子標簽運算能力較差。UHF-RFID這些技術特點決定了其防碰撞算法基本都是時分 多路訪問(TDMA),目前有Aloha類、樹類、盲信號分離類三類,以及相互結合的混合類算法。
[0004] 純Aloha算法是所有防碰撞算法中最簡單的方法,只要有一個數據包提供使用, 這個數據包就立即從電子標簽發送到讀寫器,也是隨機性算法的典型代表。在純Aloha的 基礎上,又產生了時隙Aloha、幀時隙Aloha、動態幀時隙Aloha等增強算法。
[0005] 基本二叉樹方法是樹類算法的基礎,其將碰撞標簽分為0、1子集,先查詢0子集, 若〇子集沖突則再分裂成〇〇、〇1子集,依次類推直至識別全〇子集的標簽,這就是查詢樹的 深度優先搜索。BTS類算法又包括RIBS、DDS-BT。樹類算法在標簽較多時,標簽隨機數重合 帶來盤點錯誤的問題卻一直沒有得到有效解決。
[0006] 盲信號分離只能針對多天線RFID系統,利用多標簽的反射數據間具有統計獨立 性,以及標簽信號的超高斯分布特性,實現盲源分離,在吞吐率上有一定的優勢。
[0007] 目前UHF-RFID領域應用最廣泛的空口協議是采用EPC C1G2的ISO 18000-6C,其 防碰撞算法屬于時隙Aloha協議的變種 Q協議。我國在2011年和2013年先后頒布了 GJB7377-2011《軍用射頻識別空中接口 :800/900MHz參數》國軍標和GB/T 29768-2013《信 息技術射頻識別800/900MH空中接口協議》國標,規定了 UHF頻段射頻識別系統空中接口的 物理層和媒體訪問控制層參數以及協議工作方式。UHF-RFID國標(GB/T 29768)中的防碰 撞算法采用的是BTS的增強算法--動態分散收縮二叉樹(DDS-BT)。雖然其在吞吐率上優 于基本BTS,但隨著標簽數的增多,其并未解決標簽隨機數重合帶來盤點錯誤的問題,另一 方面,其對盤點結束閾值的判定也存在錯誤。
【發明內容】
[0008] 本發明的目的是提供一種改進UHF-RFID多標簽防碰撞樹類算法及其應用,來解 決當前樹類防碰撞算法存在的標簽隨機數重合所導致盤點錯誤的問題,且提高盤點結束閾 值的準確性。
[0009] 本發明采用的技術方案為:一種改進UHF-RFID多標簽防碰撞樹類算法,其特征在 于:包括以下步驟:
[0010] 步驟一:讀寫器端發送Query指令,啟動盤點循環,在規定時隙內等待標簽發送響 應數據包;
[0011] 步驟二:標簽接收到Query命令后,將時隙計數器的值置為0,對所有時隙計數器 的值為〇的標簽,都會向讀寫器發送響應數據包,即11位隨機數和5位循環冗余校驗碼 (RN11+CRC5)的句柄,標簽進入應答狀態(簡稱"0標簽")。
[0012] 步驟三:讀寫器接收標簽的回復信息;
[0013] 在步驟三中,如果讀寫器在規定時隙內接收到多標簽句柄回復,出現不可辨識位, 讀寫器判定發生碰撞,連續碰撞次數CC加1,連續空閑次數CI置0,跳轉到步驟四;
[0014] 在步驟三中,如果讀寫器在規定時隙內接收到單標簽的句柄且無不可辨識位,判 定單標簽回復,連續碰撞次數CC置0,連續空閑次數CI置0,跳轉到步驟十三;
[0015] 在步驟三中,如果讀寫器在規定時隙內沒有接收到句柄,連續碰撞次數CC置0,連 續空閑次數CI加1,跳轉到步驟七;
[0016] 步驟四:如果連續碰撞次數CC小于CCN,則跳轉到步驟五;否則,則跳轉到步驟 、- /N ;
[0017] 步驟五:讀寫器發送Divide_0命令,然后在規定時隙內等待標簽句柄,讀寫器端 盤點結束閾值Smax加1 ;0標簽收到Divide_0命令后分裂,即其時隙計數器的值變為1位 隨機數,對時隙計數器的值不為〇且未結束盤點過程的標簽,稱為仲裁狀態的標簽(簡稱" 1 標簽"),不會發送句柄,1標簽收到Divide_0命令后,其它時隙計數器的值加1,規定時隙結 束后,跳轉到步驟二;
[0018] 步驟六:讀寫器發送Disperse命令,然后在規定時隙內等待標簽句柄,讀寫器端 盤點結束閾值Smax乘2加1 ;所有未結束盤點過程的標簽,時隙計數器的值乘2加1位隨 機數,規定時隙結束后,跳轉到步驟二;
[0019] 步驟七:如果盤點結束閾值為0,則盤點結束;如果盤點結束閾值不為0,則跳轉到 步驟八;
[0020] 步驟八:如果連續空閑次數CI小于CIN,則跳轉到步驟九;否則,則跳轉到步驟 十二;
[0021] 步驟九:如果上一條命令是Divide_0或者DivideJ,則跳轉到步驟十;否則,則跳 轉到步驟^^一 ;
[0022] 步驟十:讀寫器發送Divide」命令,然后在規定時隙內等待標簽句柄,讀寫器發 送Divide」命令;時隙計數器的值為1的標簽收到Divide」命令后分裂,其他未結束盤點 過程的標簽,時隙計數器的值不變,讀寫器端盤點結束閾值Smax不變,規定時隙結束后,跳 轉到步驟二;
[0023] 步驟- :讀寫器發送QueryRep命令,然后在規定時隙內等待標簽句柄;所有未 結束盤點過程的標簽,時隙計數器的值減1 ;讀寫器端,如果盤點結束閾值Smax為0,則讀寫 器盤點結束閾值Smax繼續置0 ;如果盤點結束閾值Smax不為0,則盤點結束閾值Smax減1 ; 規定時隙結束后,跳轉到步驟二。
[0024] 步驟十二:讀寫器發送Shrink命令,然后在規定時隙內等待標簽句柄;讀寫器端 盤點結束閾值Smax除2取整;所有未結束盤點過程的標簽,時隙計數器的值除2取整,規定 時隙結束后,跳轉到步驟二;
[0025] 步驟十三:如果此句柄的RNll與記錄的已結束盤點標簽的RNll重合,則判斷出現 "02, X"類錯誤,跳轉到步驟十五;否則,則判斷正確回復,跳轉到步驟十四;
[0026] 步驟十四:讀寫器發送ACK命令,包括ACK命令代碼和正確回復標簽的句柄,然后 在規定時隙內等待標簽的響應數據包;此標簽收到ACK命令后,發送安全模式、編碼區和校 驗碼并跳轉到確認狀態(簡稱"2標簽"),不再響應盤點指令;讀寫器收到此標簽的響應數 據包后,跳轉到步驟十一;
[0027] 步驟十五:讀寫器發送ReRN_02X命令,然后在規定時隙內等待標簽句柄;讀寫器 端盤點結束閾值Smax不變;所有未結束盤點過程的標簽在收到ReRN_02X命令后,時隙計數 器的值不變,對出現RNll重合的單標簽回復錯誤,可以產生新的RN11,以更新其句柄,規定 時隙結束后,繼續跳轉到步驟二;
[0028] 所述步驟一中,在讀寫器端中首先設置各初始化參數,盤點過程中可變的結束閾 值Smax = 2、連續碰撞次數CC = 0和連續空閑次數CI = 0,盤點過程中不可變的連續碰撞 次數閾值CCN = 3和連續空閑次數閾值CIN = 2,且在讀寫器端設已盤點RNll記錄。
[0029] 所述在讀寫器端設已盤點標簽隨機數記錄區,并對ACK命令后結束盤點的標簽隨 機數進行記錄;在單標簽句柄回復時,讀寫器再次進行判定,若此標簽回復的隨機數與已記 錄的標簽隨機數均不重合,則判定正確回復,讀寫器發送ACK命令,標簽結束盤點;若有重 合,則判定出現"02, X"類錯誤。
[0030] 所述在判定出現"02, X"類錯誤時,發送ReRN_02X命令,對應答狀態的標簽,時隙 計數器值不變,重新產生RNll和句柄回復,繼續轉入應答狀態,同時,對仲裁狀態的標簽和 確認狀態的標簽時隙計數器值不變,不響應此命令,對ReRN_02X命令,盤點結束閾值不變。
[0031] 所述在讀寫器端,當前盤點結束閾值為0且當前命令為QueryRep時,盤點結束閾 值不再減1,而是重置為〇,其他情況不變。