專利名稱::一種rfid標簽反碰撞控制方法
技術領域:
:本發明屬于RFID標簽反碰撞控制方法,具體涉及一種標簽碰撞確定性解決方法——分組動態ID預測算法(GroupingDynamicIPA,GDIPA)。
背景技術:
:射頻識別RFID技術技術作為未來最有前途的信息技術之一,作為21世紀最具變革力與核心價值的新技術之一,近年得到了全世界的高度重視。雖然RFID有諸多優點,在很多領域都具有良好的應用前景,且已經逐漸廣泛應用,但還存在許多因素制約著RFID技術的全面推廣應用。其中,RFID數據傳輸的完整性問題是制約RFID發展的重要因素之一,直接關系到整個系統性能的優劣程度。其主要影響因素有兩個方面,一是來自外界的干擾,二則是來自RFID系統本身。而RFID自身的干擾則有閱讀器碰撞,RFID系統工作范圍內存在多個閱讀器,且它們的作用范圍出現重疊;標簽碰撞,也即是多目標識別問題,閱讀器的作用范圍內存在多個標簽,且它們同時向閱讀器返回數據。由于閱讀器的功能比標簽強得多;相對而言,標簽的碰撞問題更難于解決。標簽的碰撞,使標簽無法識別,其所攜帶的信息也將無法讀取,這將大大的降低標簽的識別率。而識別率偏低將導致業務處理復雜化,這是困擾RFID技術應用推廣的關鍵因素之一。當RFID應用于供應鏈管理、物流、工業自動化、零售等需要實現多目標同時識別的領域,標簽的碰撞問題所造成的影響將更大。因此,非常有必要深入地去研究標簽碰撞的解決方法。同時,RFID作為目前唯一可實現多目標同時識別的技術,多目標的同時識別,既是RFID技術的優勢所在,也是RFID技術的技術難題之一。韓國HyunJunYeo等提出了ID預測算法(IDPredictionAlgorithm,IPA),該算法其實是通過count-bit實現標簽的分組識別,該算法的最大優點就是閱讀器問詢一次可能有多個標簽同時被識別,大大減少了閱讀器的問詢次數和問詢比特,但閱讀器需要首先搜索count-bit,這增加了閱讀器問詢量;同時,標簽在返回數據時攜帶了兀余信息,因此該算法有待進一步改善,以減少系統通信量。巾國的余松森提出的跳躍式動態樹形(JumpingandDynamicSearching,JDS)反碰撞算法是對BSRI(二進制樹形搜索Binary-treeSearchingbaseonRegressiveIndex,BSRI)算法的改進,解決BSRI算法中通信量冗余的問題,采用動態的方式傳輸標簽ID,節省了約34.92%的系統通信量。但系統的有效服務率也就穩定在50%。中國的謝振華等改進了JDS算法,提出在標簽返回信息中如果出現只有一位碰撞的情況,可以馬上識別出兩個標簽,一定程度上提高了系統性能。以上兩種方法的主要缺陷是算法問詢次數多和數據通信量大;算法存在傳輸冗余數據的問題。本發明提出的分組動態ID預測算法(GDIPA)能改善這兩方面的問題。
發明內容本發明的目的在于考慮上述問題的基礎上,提出的一種改進的標簽碰撞確定性解決方法——分組動態ID預測算法(GroupingDynamicIPA,GDIPA)。一種RFID標簽反碰撞控制方法-GDIPA方法的步驟如下步驟l)閱讀器發送Active指令Request(R_prefix2,L+l),請求符合要求的標簽應答;步驟2)處于準備狀態的標簽接收到指令后,比較自身T_pref1X是否與Active指令的Rjrefix2相等,如果是,則響應;否則繼續等待Active指令;步驟3)閱讀器接收標簽的返回信息。如果無標簽響應,轉到步驟8);如果只有一個標簽響應,識別這個標簽,進一步處理后發送Quiet指令,然后轉到歩驟8);如果碰撞,分兩種情況處理如果Rjrefix2:0,則直接識別全"1"和全"0"兩個標簽,對他們處理后,轉到歩驟8);否則轉到步驟4);步驟4)統計&fe、Wc、M和的值①如果W尸1或者A^A^—1,直接識別^個標簽;如果釆用了JDS算法,且Rjrefixl不等于2力-1,則采用回跳策略產生下一次R叫uest指令,轉步驟6);否則轉到步驟8);②如果1且A^We—l,轉到步驟5);步驟5)采用JDS算法,閱讀器將當前的R_prefixl壓入堆棧,如果是Active指令后的第一次采用JDS算法,則把2'-l壓入堆棧,然后根據碰撞的數據產生下一個Request指令,也即將最高碰撞位x置0,高于該位的值不變,此值作為R_prefbd,形成下一次Request指令Request(R_prefixl,x);步驟6)處于激活狀態的標簽收到Request指令后,比較自身ID的丄-lx位是否小于等于Rjrefixl,符合則響應,否則繼續保持活動狀態;步驟7)閱讀器收到標簽的返回數據,檢測是否有碰撞①如果沒有碰撞,就直接識別標簽,并檢查R—J5refixl是否等于2'-1,如果是,轉到步驟(8);否則,釆用回跳策略,產生下一次Request指令轉步驟6);②如果發生碰撞,轉到步驟4);步驟8)Rjrefix2加1,如果溢出,識別過程結束,否則轉到步驟l)。GDIPA方法的約定GDIPA中標簽具有三種狀態,分別是(1)準備狀態(Ready):處于該狀態的標簽等待并檢測閱讀器發送過來的指令,當接收到激活(Active)指令時,轉入活動狀態。(2)活動狀態(Lively):處于該狀態的標簽接收閱讀器的問詢(Request)指令,根據指令返回自身ID的部分或全部到閱讀器,當接收到靜默(Quiet)指令時,轉入靜默狀態。(3)靜默狀態(Silent):處于該狀態的標簽不響應閱讀器的任何指令,直到離開閱讀器的識讀范圍重新復位。同時,標簽具有計算自身ID中比特'T'的個數的功能,并將計算結果存入標簽的內存中,稱此值為T_prefix。假設標簽的ID長度為丄,那么ID中比特"1"的個數可能選取中的任意一個值,此時需要k^丄+l個比特存放這個值。為了減少這個值對標簽內存的占用,可以將比特"1"的個數為丄的情況統計為0,這時只需要l。gj個比特來存放Tjrefix。最后,為了保證碰撞位的準確判斷,響應的標簽應該能同一時間h傳數據。為了實現GDIPA,閱讀器需要以下4種主要指令,它們分別是(1)請求指令(Request):該指令帶有兩個參數,格式為"Request(R_prefixl,x)"。假設標簽ID的長度為Z,x可以取[0丄怖任意值,占log2丄+l個比特值。x的作用與JDS算法問詢指令中的"x"相似,表示標簽ID發生碰撞的最高位的下標(標簽ID的下標為0~Z-1)。處于活動狀態的標簽收到該指令后,比較自身ID的l-lx位是否小丁或等于Rjrefixl,如果是則應答,否則不應答。處于準備狀態的標簽不應答。(2)激活指令(Active):指令格式為"Active(R_pref1X2)",假設標簽ID的長度為丄,Rj)refix2需占log,£個比特。處于準備狀態的標簽收到此指令后,比較自身的Tj)refix是否與Rjrefix2相等,如果是則響應,否則繼續保持準備狀態。在實際的操作中,為了使標簽識別這兩種指令,文中采用"Request(Rjrefix2,丄+1)"來實現Active指令的功能。標簽只需檢測Request指令的第二個參數是否為Z+l,便可區分Active和Request指令。(3)選擇指令(Select):對于已經識別的標簽發送這個指令,并對其進行其他操作(如寫入信息等)。(4)靜默指令(Quiet):對已經識別并處理的標簽發送Quiet指令,使標簽進入靜默狀態。GDIPA方法的原理由上文標簽狀態分析可以知道,T_prefbc是標簽ID中比特"l"的個數,這個值就相當于IPA算法的count-bits。那么標簽ID中比特"l"的個數相同的標簽將擁有相同T_prefix值。標簽進入閱讀器問詢區間,閱讀器首先發送Active指令。該指令的基本思想就相當于對標簽進行分組識別,而分組的根據是標簽ID中所擁有的比特'T'的個數。收到指令后,標簽比較自身的T_prefix是否與Active指令中的R_prefix2相同,如果不相同,標簽就保持準備狀態,等待下一次Active指令;否則,標簽響應。閱讀器收到標簽的返回數據,并統計計算A"、iVc、M和A^四個量,這些量的意義如下也就是T_prefix的值,它表示標簽ID中比特"l"的個數;表示閱讀器所接收到的數據中,發生碰撞的總位數,這通過Manchester編碼來實現;表示在閱讀器所收到的數據中,已經識別出來的比特"l"的個數;M:表示標簽ID中還沒有被識別的比特'T'的個數。容易知道接著,閱讀器分析的值,判斷標簽可以被閱讀器識別的情況。(1)當7V嚴0時,由公式(1)可以知道,這時標簽ID中的所有比特'T'均被識別,標簽上送的數據沒有發生碰撞,一個標簽將被識別。在GDIPA中,這種情況可以直接,不需要計算M的值。(2)當W^1吋,根據公式(1),知道標簽ID中未被識別的比特"l"的個數只有一個,而此時標簽數據的碰撞位數為7VC,這說明比特'T'必須在這7Vc個碰撞位中都出現過,而其余的乂-l個碰撞位為比特"0",根據排列組合的思想,這種組合有c4種可能,因此閱讀器可以同時識別W個標簽。(3)當iV嚴Wc-l時,這說明標簽ID中巳被識別的比特"1"個數為A^-1,而相反未被識別的比特"0"的個數為l個,而且比特"0"必須在這A^個碰撞位中都出現過,同理,可以知道,這種組合有Cj^種可能,所以閱讀器可以同時識別We個標簽。(4)當iV,不滿足上述的三種情況,說明閱讀器仍然沒有足夠的信息可以識別標簽,此時將采用JDS算法,假設標簽ID的長度為i,算法要點如下1)閱讀器首先發送Request(R_pref1Xl,x)指令,符合條件的標簽應答。2)檢測是否有碰撞發牛,如果有,確定碰撞的最高位。3)如果碰撞發生,假設碰撞的最高位下標為x,將碰撞的最高位置0,高于該位的比特位不變,得到新Rj5refixl的值為IDi.k。4)如果沒有發生碰撞,則可識別單個標簽。標簽的ID為R_prefbd的值和標簽應答返回的IDx冬o值的組合。處理完后,發送Quiet指令,使標簽進入靜默狀態。同吋,下一次Request指令采用回跳策略,從父結點處獲得。執行完一次JDS算法后,GDIPA并不是不斷的重復上述算法,而是進行新一輪的A"、Wc、M和M四個量的統計計算,并通過判斷^的值確定下-步的識別步驟。如此循環,直到閱讀器作用范圍內的標簽都識別完畢。GDIPA方法的最大特點是閱讀器向標簽發出一次問詢命令,在碰撞的情況下,有可能同時識別多個標簽。算法采用標簽分組識別,閱讀器與標簽數據動態傳輸的方法來實現。分組動態ID預測算法大大地提高了系統的有效服務率,極大地降低了系統的通信量,表現出了優越的性能。圖l閱讀器問詢的總次數;圖2閱讀器問詢的平均次數;圖3閱讀器問詢的總比特數;圖4閱讀器問詢的平均比特數;圖5標簽應答的總次數;圖6標簽應答的平均次數;圖7標簽應答的總比特數;圖8標簽應答的平均比特數;圖9閱讀器問詢的總次數;圖10閱讀器問詢的平均次數;圖11閱讀器問詢的總比特數;圖12閱讀器問詢的平均比特數;圖13閱讀器問詢的總次數;圖14閱讀器問詢的總比特數;圖15標簽應答的總次數;圖16標簽應答的總比特數;圖17系統的有效服務率;圖18幾種算法的系統通信量比較。具體實施方式我們按如下步驟來實施一種RFID標簽反碰撞控制方法-GDIPA方法步驟1)閱讀器發送Active指令Request(Rjrefix2,丄+1),請求符合要求的標簽應答;步驟2)處于準備狀態的標簽接收到指令后,比較自身T_prefix是否與Active指令的Rjrefix2相等,如果是,則響應;否則繼續等待Active指令;步驟3)閱讀器接收標簽的返回信息。如果無標簽響應,轉到步驟(8);如果只有一個標簽響應,識別這個標簽,進一步處理后發送Quiet指令,然后轉到步驟(8);如果碰撞,分兩種情況處理如果RjorefiX2=0,則直接識別全'T'和全"O"兩個標簽,對他們處理后,轉到步驟(8);否則轉到步驟(4);步驟4)統計A^、M、M和A^的值①如果W產l或者M=1,直接識別^個標簽;如果采用了JDS算法,且R_prefixl不等丁21-1,則采用回跳策略產生下一次Request指令,轉步驟(6);否則轉到步驟(8);②如果iV^1且AUM—1,轉到步驟(5);步驟5)采用JDS算法,閱讀器將當前的R_pref1Xl壓入堆棧,如果是Active指令后的第一次采用JDS算法,則把2'-l壓入堆棧,然后根據碰撞的數據產生下一個Request指令,也即將最高碰撞位x置0,高于該位的值不變,此值作為Rjrefixl,形成下一次Request指令Request(R_prefixl,x);步驟6)處于激活狀態的標簽收到Request指令后,比較自身ID的丄-lx位是否小于等fR_prefixl,符合則響應,否則繼續保持活動狀態;步驟7)閱讀器收到標簽的返回數據,檢測是否有碰撞①如果沒有碰撞,就直接識別標簽,并檢查Rjrefixl是否等于2'-l,如果是,轉到步驟(8);否則,采用回跳策略,產生下一次Request指令轉步驟(6);②如果發生碰撞,轉到步驟(4):步驟8)R—prefix2加l,如果溢出,識別過程結束,否則轉到歩驟(1)。GDIPA仿真及其分析本發明GDIPA是基于IPA和JDS算法而提出的一種改進算法,基于WindowsXP操作系統,編寫C程序,仿真標簽的識別過程。仿真程序可以選擇8比特或16比特的標簽ID長度,以及選擇隨機或者有序地生成標簽ID,對不同的標簽數量進行仿真。同時,仿真程序還分別統計以下四個方面的數據(1)閱讀器問詢的總次數以及總比特數;(2)閱讀器問詢的平均次數以及平均比特數;(3)標簽應答的總次數以及總比特數(4)標簽應答的平均次數以及平均比特數。然后,本文結合Matlab工具,從以下幾個方面詳細地分析GDIPA的性能。GDIPA與IPA、JDS和BSRI方法的比較選擇8比特的標簽ID長度,采用隨機生成標簽ID的方法,對1200個標簽進行識別過程的仿真。并分別對GDIPA、IPA、JDS算法和BSRI算法的閱讀器問詢次數及比特數和標簽的應答次數及比特數這幾個量進行統計,其仿真結果如圖18所示。分析上述的仿真結果,可以得到以下幾個結論(1)BSRI算法與JDS算法的閱讀器問詢次數和標簽的應答次數分別相等。JDS算法的閱讀器問詢的比特數大于BSRI算法。IPA相比較TBSRI算法和JDS算法而言,大大減少了閱讀器的問詢次數和問詢比特數,而標簽的應答次數與后兩者相當,但卻大大增加了標簽應答比特數。(2)GDIPA在閱讀器問詢量和標簽應答量兩個方面都表現出了極大的優越性。1)在閱讀器問詢量方面例如標簽數量為200時,采用GDIPA的閱讀器需要發送63次的問詢和468個問詢比特;IPA需要發送129次的問詢和900個問詢比特;JDS算法需要發送401次的問詢和3939個問詢比特;而BSRI算法需要發送401次的問詢和3208個問詢比特。GDIPA比IPA分別節省了51.63%和48%的問詢量;比JDS算法分別節省了84.29%和88.10%的問詢量;而比BSRI算法分別節省了84.29%和85.41%的問詢量。112)在標簽應答量方面標簽數量為200時,GDIPA要求標簽應答751次,應答4561個比特;IPA要求標簽應答1735次,應答20820個比特;JDS算法要求標簽應答1755次,應答8595個比特;而BSRI算法要求標簽應答1755次,應答14040個比特。GDIPA比IPA分別節省了56.71%和78.31%的應答量;比JDS算法分別節省了57.21%和47.46%;而比BSRI算法分別節省了57.21%和67.51%。(5)在標簽數量小于標簽ID的長度時,GDIPA的問訊量和平均問詢量會相對比較大,這是因為GDIPA采用了分組識別的思想,對標簽ID中比特"l"的個數的所有可能都進行問詢,例如標簽ID的長度分別為8比特,則GDIPA最少也需要8次的問詢,這將在下面作進一步分析。標簽數量較少情況下,GDIPA的仿真結果及分析GDIPA因為采用了分組問詢的思想識別標簽。因此,無論標簽數量的多少,該算法的最少問詢次數都不會少于標簽的ID長度,這導致了在標簽數量較少的情況下,閱讀器的問詢量比較大的問題。由于GDIPA的這種特殊性,有必要對這種情況作進一步研究。這里仍選取8比特的標簽ID長度,對l-20個標簽進行仿真,統計閱讀器的問詢量,仿真結果如閣9圖12所示。上述的仿真結果表明,在標簽數量比較少的情況卜-,GDIPA的問詢次數及問詢比特數均大于IPA;但隨著標簽數量的增加,這種差距很快的縮小,GDIPA的優越性很快體現出來。圖10~圖12都顯示了相似的特性。GDIPA識別隨機或有序標簽ID的仿真結果及分析選擇16比特的標簽ID長度,標簽ID分別為隨機和有序序列的情況下,對1~2000個標簽,進行GDIPA識別過程的仿真,其仿真結果如圖1316所不。仿真結果表明,GDIPA識別有序標簽ID的性能高于識別隨機標簽ID的性能,這是符合GDIPA的思想。這種特點非常適合于物流或倉庫等需要大量識別整批同類物品的場合。20081系統有效服務率的分析從開始碰撞產生,到所有碰撞問題得以解決這段時間叫做解決碰撞的時間間隔(CollisionResolutionInterval,CRI)。而有效服務率所指的就是在CRI這個區間內,成功傳送的信息包的數量。RFID系統的有效服務率,就是閱讀器作用范圍內待識別的標簽數量與閱讀器識別這些標簽所消耗的總問詢次數的比值。根據圖l,不難得出GDIPA、IPA、JDS算法和BSRI算法的有效服務率,如圖17所示。從圖17口I以看出,JDS算法和BSRI算法的有效服務率穩定在50y。,GDIPA在IPA的基礎上,采用分組識別的思想,減少了IPA算法中對countbits部分的問詢指令,所以更進一歩提高了有效服務率。當標簽數量為200時,IPA的有效服務率約為150。/。,而GDIPA的已經超過了300%。系統通信量的統計比較RFID系統的通信量是指在標簽的識別過程中,系統總共傳輸的比特數。它由閱讀器的通信量和標簽的通信量兩部分組成。閱讀器的通信量是指閱讀器在識別標簽的過程中總共發出的問詢比特數;而標簽的通信量是指在識別過程中標簽應答的總比特數。通過分析,標簽ID選擇16比特,對1170個標簽,分別采用GDIPA、IPA、JDS方法和BSRI進行仿真,統計各算法的系統通信量??傻媒Y果如圖18所示??梢砸?,ID-BTS的系統通信量最少。GDIPA的系統通信量與QT-im相當,少于ID-BTS外的其它所有算法。ID-BTS算法雖然通信量少,但這是以增加閱讀器的搜索次數和延長總的搜索時間為代價的。用仿真程序統計標簽數量為1170時,GDIPA的總問詢次數,也即搜索次數,它與ID-BTS和QT-im的比較如表1所示。表1GDIPA與ID-BTS、QT-im搜索次數的比較<table>tableseeoriginaldocumentpage14</column></row><table>表l從表中可以看出,ID-BTS和QT-im兩種算法的搜索次數均大于GDIPA。GDIPA仿真結果總結總結GDIPA的仿真結果,可見,雖然在標簽數量較小的情況下,GDIPA閱讀器的問詢量和標簽的應答量相對于BSRI方法、JDS方法和IPA會比較大,但這個不足隨著標簽數量的增加而迅速的消除,GDIPA很快地顯示了其優越性。系統有效服務率和系統通信量的進一步分析,同樣表明了GDIPA相對于其他方法的巨大優越性,該方法確實大大地改進了RFID標簽的識別過程,提高了RFID系統多標簽同時識別的性能。權利要求1.一種RFID標簽反碰撞控制方法,其特征在于包括有如下步驟步驟1)閱讀器發送Active指令Request(R_prefix2,L+1),請求符合要求的標簽應答;步驟2)處于準備狀態的標簽接收到指令后,比較自身T_prefix是否與Active指令的R_prefix2相等,如果是,則響應;否則繼續等待Active指令;步驟3)閱讀器接收標簽的返回信息,如果無標簽響應,轉到步驟8);如果只有一個標簽響應,識別這個標簽,進一步處理后發送Quiet指令,然后轉到步驟8);如果碰撞,分兩種情況處理如果R_prefix2=0,則直接識別全“1”和全“0”兩個標簽,對他們處理后,轉到步驟8);否則轉到步驟4);步驟4)統計Ncb、Nc、N1和Nr的值①如果Nr=1或者Nr=Nc-1,直接識別Nc個標簽;如果采用了JDS算法,且R_prefix1不等于2L-1,則采用回跳策略產生下一次Request指令,轉步驟6);否則轉到步驟8);②如果Nr≠1且Nr≠Nc-1,轉到步驟5);步驟5)采用JDS算法,閱讀器將當前的R_prefix1壓入堆棧,如果是Active指令后的第一次采用JDS算法,則把2L-1壓入堆棧,然后根據碰撞的數據產生下一個Request指令,電即將最高碰撞位x置0,高于該位的值不變,此值作為R_prefix1,形成下一次Request指令Request(R_prefix1,x);步驟6)處于激活狀態的標簽收到Request指令后,比較自身ID的L-1~x位是否小于等于R_prefix1,符合則響應,否則繼續保持活動狀態;步驟7)閱讀器收到標簽的返回數據,檢測是否有碰撞①如果沒有碰撞,就直接識別標簽,并檢查R_prefix1是否等于2L-1,如果是,轉到步驟(8);否則,采用回跳策略,產生下一次Request指令轉步驟6);②如果發生碰撞,轉到步驟4);步驟8)R_prefix2加1,如果溢出,識別過程結束,否則轉到步驟1)。全文摘要本發明公開了一種RFID標簽反碰撞控制方法,在研究分析跳躍式動態樹形反碰撞算法和ID預測算法的基礎上,提出了一種改進的標簽碰撞確定性解決方法——分組動態ID預測算法(GroupingDynamicIPA,GDIPA);該方法的最大特點就是閱讀器向標簽發出一次問詢命令,在碰撞的情況下,有可能同時識別多個標簽;算法采用標簽分組識別,閱讀器與標簽數據動態傳輸的方法來實現;分組動態ID預測算法大大地提高了系統的有效服務率,極大地降低了系統的通信量,表現出了優越的性能;本方法是性能優良方便實用的一種RFID反碰撞控制方法。文檔編號G06K7/00GK101324917SQ200810029579公開日2008年12月17日申請日期2008年7月18日優先權日2008年7月18日發明者劉洪濤,古連華,林偉勇,程良倫申請人:廣東工業大學