一種多人并行智能識別防碰撞算法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及射頻識別(RFID)技術(shù),特別涉及一種多人并行智能識別防碰撞算法 即RFID識別算法。
【背景技術(shù)】
[0002] RFID(RadioFrequencyIdentfication)射頻識別是一種非接觸式的自動識別技 術(shù),其原理是通過射頻信號自動識別目標(biāo)對象并獲取相關(guān)數(shù)據(jù)。它具有非接觸、工作時無需 人工干預(yù)、標(biāo)簽存儲信息量大等優(yōu)點,因此RFID技術(shù)的應(yīng)用領(lǐng)域十分廣泛。
[0003] 近年來,隨著國內(nèi)旅游業(yè)的快速發(fā)展,全國各旅游景區(qū)游客接待量逐年增長,為了 實現(xiàn)游客進(jìn)入景區(qū)期間的快速通行,多數(shù)景區(qū)都安裝了RFID電子門票系統(tǒng)。由于該系統(tǒng)所 有標(biāo)簽工作在同一頻道,因此每次只能允許一人通過,當(dāng)多人同時通過時,讀寫器作用范圍 內(nèi)存在多個標(biāo)簽,此時讀寫器與標(biāo)簽間通信就會產(chǎn)生相互干擾,即標(biāo)簽通信發(fā)生了碰撞,使 讀寫器不能正確識別每個標(biāo)簽的信息。
[0004] 信息碰撞導(dǎo)致無法實現(xiàn)多人并行通過,限制了旅游景區(qū)的游客的通行效率。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明的目的是針對現(xiàn)有技術(shù)的不足,提供了一種遵循特定算法的RFID技術(shù)來 實現(xiàn)景區(qū)游客多人并行入園智能識別防碰撞算法。
[0006] 本發(fā)明的具體步驟為:
[0007] 讀寫器命令組:
[0008] 請求命令-Order(code)
[0009] 選擇命令-Choose(code)
[0010] 讀取命令-Read(code)
[0011] 通過命令-Pass(code)
[0012] (1)初始狀態(tài):
[0013] 令:讀寫器識別場區(qū)內(nèi)共有待識別標(biāo)簽η個,每個標(biāo)簽共有比特位m個,且比特位 等級由低到高分別為Di……Dm。讀寫器的初始命令集合為:L=ΙΛ,12……1J,待識別 標(biāo)簽集合T={ApAuAs......An}。其中,標(biāo)簽存儲的編碼集合分別為:
[0014] Ai= {an,a12,a13......aln}
[0015] A2 -{a21,a22,a23......a2m}
[0016] M
[0017] M
[0018] An={anl,an2,an3......anm}
[0019] (2)讀寫器向場區(qū)內(nèi)發(fā)送請求命令Order(L°= {1,1,1......1}),場區(qū)內(nèi)所有標(biāo) 簽響應(yīng)并返回各自編碼,讀寫器接受到編碼并判斷是否有編碼碰撞發(fā)生,若無碰撞發(fā)送,則 識別出唯一標(biāo)簽,讀寫器發(fā)送Choose(code)命令選擇標(biāo)簽,再發(fā)送Read(code)命令讀取標(biāo) 簽編碼,確認(rèn)標(biāo)簽編碼后,讀寫器發(fā)送Pass(code)命令允許該標(biāo)簽通過;若發(fā)生碰撞,則讀 寫器判別編碼碰撞的比特位。依據(jù)碰撞發(fā)生的位置,讀寫器在生成新命令L1的時候?qū)a(chǎn)生 碰撞的比特位編碼置為" 1",未發(fā)生碰撞的比特位編碼置為"〇",令發(fā)生碰撞的最高比特位 為Dp,則讀寫器要求Dp位編碼為"0"的標(biāo)簽返回低于Dp位的所有編碼。
[0020] 則新命令:i1 ={/丨,……/,!)(其中l(wèi)<q<r<m).........父節(jié)點①
[0021] 響應(yīng)標(biāo)簽集合r1 =U<!,_4……(其中l(wèi)<e<f<g<n)
[0022] 響應(yīng)標(biāo)簽編碼集合:4 , .,…}
[0023]
[0024]
[0025]
[0026] (3)讀寫器接受到響應(yīng)標(biāo)簽返回的編碼并判斷是否有碰撞發(fā)生:若無碰撞發(fā)生則 直接識別出唯一標(biāo)簽;若發(fā)生碰撞則讀寫器在生成新命令Order(L2)的時候?qū)a(chǎn)生碰撞的 比特位編碼置為" 1",未發(fā)生碰撞的比特位編碼置為"〇",令發(fā)生碰撞的最高比特位為Dq,讀 寫器要求Dq位編碼為"0"的標(biāo)簽返回低于Dq位的所有編碼。
[0027] 則新命令:f=.丨/,::,/::……C}:(其中q<r<s<m).........父節(jié)點②
[0028] 響應(yīng)標(biāo)簽集合Γ2 = ……(其中f<h<i<j<g)
[0029]響應(yīng)標(biāo)簽編碼集合:為丨=
[0030]
[0031]
[0032]
[0033] (4)讀寫器接受到響應(yīng)標(biāo)簽編碼并判別是否產(chǎn)生碰撞
[0034]i若此時無碰撞發(fā)生,讀寫器發(fā)送Choose(code)命令選擇標(biāo)簽Ak,并發(fā)送讀取命 令Read(code)讀取標(biāo)簽編碼,確認(rèn)編碼信息后,讀寫器發(fā)送Pass(code)命令使得標(biāo)簽AkS 過,同時Ak從標(biāo)簽集合T中去除。
[0035]ii若此時只有一位比特位發(fā)生碰撞,由一位碰撞的特性可知,此時碰撞標(biāo)簽有且 僅有2個,且這2個標(biāo)簽編碼只是碰撞位不同,令標(biāo)簽分別為A1;A,,依據(jù)非"0"即" 1"的二 進(jìn)制編碼規(guī)則,讀寫器先發(fā)送選擇命令Order(code)要求碰撞位為"0"的標(biāo)簽返回編碼,接 受到返回信息后,讀寫器發(fā)送Read(code)命令讀取標(biāo)簽~的編碼,確認(rèn)編碼后讀寫器發(fā)送 PaSS(C〇de)命令允許標(biāo)簽通過,并從集合T中刪除標(biāo)簽&,此即識別出一個標(biāo)簽;同理識別 出碰撞位為"1"的標(biāo)簽、。從而讀寫器識別出2個碰撞標(biāo)簽并允許A1;Aj通過。
[0036] (5)當(dāng)讀寫器識別出標(biāo)簽后,返回上一父節(jié)點②處對余下標(biāo)簽進(jìn)行識別。新命令規(guī) 貝1J:令碰撞發(fā)生比特位"1",未碰撞比特位為"〇"。同時讀寫器要求在上一父節(jié)點②中碰撞 比特位Dq為" 1"的標(biāo)簽返回低于Dq的編碼。
[0037] 則新命令.I3 = {ξ,ζ. ?….ig}(其中s<u<v<m)............父節(jié)點③
[0038] 響應(yīng)標(biāo)簽集合Γ3 ={<,<….…43}(其中l(wèi)<x<y<z<n)
[0039] 響應(yīng)標(biāo)簽編碼集合:為;=~ *
[0040]
[0041]
[0042]
[0043] 讀寫接收到響應(yīng)標(biāo)簽編碼并判斷是否有碰撞發(fā)生:
[0044]i若此時無碰撞發(fā)生,則讀寫器能直接識別出唯一標(biāo)簽并允許該標(biāo)簽通過。
[0045]ii若此時發(fā)生一位碰撞,則讀寫器能分別識別出2個標(biāo)簽并允許標(biāo)簽通過。
[0046]iii若此時發(fā)生多位碰撞,則遞歸調(diào)用步驟(2)。
[0047] 本發(fā)明優(yōu)點是:通過一種多人并行智能識別防碰撞算法解決RFID系統(tǒng)中防碰撞 問題,實現(xiàn)在最短時間內(nèi)識別其作用范圍的所有標(biāo)簽。該算法通過分段傳輸有效碰撞編碼, 大大提高了讀寫器與標(biāo)簽間信息傳輸效率,從而實現(xiàn)在最短時間內(nèi)識別其作用范圍的所有 標(biāo)簽。
【附圖說明】
[0048] 圖1為本發(fā)明算法流程圖。
【具體實施方式】
[0049] 實施例:
[0050] 本發(fā)明實施例設(shè)定標(biāo)簽編碼為8位。
[0051] 步驟一:讀寫器發(fā)送Ordermilllll)命令,場區(qū)內(nèi)所有小于等于該命令編碼的 標(biāo)簽應(yīng)答。
[0052] 步驟二:讀寫器檢測接收的信號,如果沒有檢測到信號則認(rèn)為射頻場區(qū)內(nèi)無標(biāo)簽, 回到步驟一。如果有信號則轉(zhuǎn)至步驟三。
[0053] 步驟三:讀寫器利用曼徹斯特譯碼原理對響應(yīng)的電子標(biāo)簽序列號信息進(jìn)行譯 碼,同時判斷是否有比特位碰撞發(fā)生,并確認(rèn)碰撞發(fā)生的具體比特位,轉(zhuǎn)入步驟四。如果 沒有碰撞發(fā)生,則有且僅有一個標(biāo)簽響應(yīng),此時由讀寫器向該標(biāo)簽發(fā)送Choose(code)命 令,在確認(rèn)選擇后讀寫器發(fā)送Read(code)命令,對響應(yīng)的標(biāo)簽進(jìn)行讀寫,完成讀寫后發(fā)送 Pass(code)命令給標(biāo)簽,允許該標(biāo)簽通過。
[0054] 步驟四:根據(jù)步驟三讀寫器得到具體的碰撞比特位,并將發(fā)生碰撞的比特位 設(shè)置為"1",沒有發(fā)生碰撞的比特位設(shè)置為"〇",從而產(chǎn)生下一個讀寫器發(fā)送的指令 Order(code, 0)中code的參數(shù)。讀寫器發(fā)送得到的Order(code, 0)命令,標(biāo)簽在接收到指 令后將code與自己的編碼進(jìn)行比較,鎖定比特位為"1"的比特值,并將其保存。同時要求 最高比特位為"〇"的標(biāo)簽響應(yīng)這個命令,并回復(fù)除最高位以外的所有其他碰撞位。而后利 用二進(jìn)制防碰撞算法的原理逐步縮小標(biāo)簽應(yīng)答范圍直至識別標(biāo)簽或出現(xiàn)一位碰撞。當(dāng)出現(xiàn) 一位碰撞時,轉(zhuǎn)步驟六。當(dāng)識別一個標(biāo)簽時,讀寫器將完成步驟三中最后的讀寫周期,分別 發(fā)送Choose(code)命令、Read(code)命令和Pass(code)命令。而后回到父節(jié)點,進(jìn)行下 一個分支的識別。循環(huán)往復(fù)以上操作直到最高位為"〇"的標(biāo)簽分支不存在未識別的標(biāo)簽, 轉(zhuǎn)到步驟五。
[0055] 步驟五:讀寫器發(fā)送Order(code,1)命令,該指令僅針對之前鎖定位置最高位為 "1"的標(biāo)簽,這些標(biāo)簽在收到指令之后將自己除最高位以外的剩余幾位碰撞位發(fā)送給讀寫 器。而后利用二進(jìn)制防碰撞算法的原理逐步縮小應(yīng)答范圍直至識別標(biāo)簽或出現(xiàn)一位碰撞。 當(dāng)出現(xiàn)一位碰撞時,轉(zhuǎn)到步驟六。在識別到唯一標(biāo)簽時,讀寫器在此進(jìn)入讀取環(huán)節(jié)發(fā)送選 擇、讀取、和通過命令。而后回到父節(jié)點,進(jìn)行下一個分支的識別。通過以上操作直至碰撞 最高位為" 1"的分支內(nèi)所有標(biāo)簽均被識別,轉(zhuǎn)步驟七。
[0056] 步驟六:當(dāng)產(chǎn)生一位碰撞時,根據(jù)非"0"即" 1"的原則識別兩個標(biāo)簽,讀寫器首先 對碰撞位為"1"的標(biāo)簽進(jìn)行讀取環(huán)節(jié)的操作即選中、讀取和通過,而后讀寫器對碰撞位為 "〇"的標(biāo)簽進(jìn)行同樣的讀取環(huán)節(jié)。以此分別讀取這兩個標(biāo)簽序列號。
[0057] 步驟七:直至沒有電子標(biāo)簽未被識別出來,識別過程結(jié)束。
[0058] 算法具體實例實現(xiàn):
[0059]假設(shè)讀寫器場區(qū)范圍內(nèi)有ID分別為 00110110、01010001、01100101、01111010、 10001000、10100111、10111001、11100110、11100111、11111001 的十個標(biāo)簽A、B、C、D存在。
[0060] 開始:射頻場區(qū)內(nèi)所有標(biāo)簽對于讀寫器來說處于未知狀態(tài),所以讀寫器發(fā)送 Order(1 111 111 1)命令,要求場區(qū)內(nèi)所有標(biāo)簽應(yīng)答。
[0061] 第1步:讀寫器發(fā)送Orderaillllll),標(biāo)簽同時應(yīng)答,讀寫器根據(jù)曼徹斯特編碼 原理,解碼得到xxxxxxxx(此處用大寫字母X表示解碼結(jié)果,X代表未識別比特位值,下 同)。由此得到下一個請求命令Order(11111111,0)。
[0062] 第2步:讀寫器發(fā)送Order(1111111,0)命令,標(biāo)簽1、2、3、4分別將自己編碼與 0111 111 1比對,解碼得到X