本發(fā)明屬于射頻識(shí)別技術(shù)領(lǐng)域,具體涉及一種基于“優(yōu)選法”的RFID防碰撞算法。
背景技術(shù):
射頻識(shí)別技術(shù)(RFID,Radio Frequency Identification)是20世紀(jì)80年代初發(fā)展起來(lái)的一種先進(jìn)的識(shí)別技術(shù)。它利用射頻信號(hào)及其空間耦合的傳輸特性,實(shí)現(xiàn)對(duì)靜止和移動(dòng)物品的非接觸式自動(dòng)識(shí)。
使用射頻技術(shù)就會(huì)涉及到碰撞的問(wèn)題,碰撞是指在讀寫器的天線磁場(chǎng)區(qū)域內(nèi)會(huì)出現(xiàn)多個(gè)標(biāo)簽,或者有其他讀寫器存在。當(dāng)讀寫器查詢標(biāo)簽時(shí),多個(gè)標(biāo)簽同時(shí)響應(yīng)讀寫器的命令或者一個(gè)標(biāo)簽同時(shí)要選擇響應(yīng)2個(gè)以上的讀寫器的查詢信號(hào)時(shí),就會(huì)出現(xiàn)信號(hào)干擾產(chǎn)生信道沖突問(wèn)題。也就是說(shuō),當(dāng)有多于1個(gè)的標(biāo)簽在讀寫器的作用范圍內(nèi)時(shí),會(huì)出現(xiàn)1個(gè)標(biāo)簽諧振,1個(gè)標(biāo)簽失諧的情況。這時(shí),就很難通過(guò)判斷輸出端的高低電位來(lái)讀出標(biāo)簽的內(nèi)部信息,這就是我們要解決的碰撞問(wèn)題。
目前防碰撞算法主要有兩類:不確定算法和確定性算法。不確定算法指的是基于ALOHA機(jī)制的防碰撞算法,這種算法要求在讀寫器有效工作范圍內(nèi)的標(biāo)簽依據(jù)自己的序列號(hào)隨機(jī)產(chǎn)生響應(yīng)時(shí)間,如果發(fā)生沖突,則沒(méi)有識(shí)別到的標(biāo)簽要等到下一輪時(shí)間段到來(lái)時(shí)再重新產(chǎn)生響應(yīng)時(shí)間,這時(shí)就會(huì)出現(xiàn)標(biāo)簽“餓死”的情況(即標(biāo)簽存在不能被識(shí)別的可能);傳統(tǒng)的確定性算法有基本二進(jìn)制搜索算法、動(dòng)態(tài)二進(jìn)制搜索算和后退式二進(jìn)制搜索算法等,但他們分別在數(shù)據(jù)傳輸量、查詢次數(shù)和系統(tǒng)效率等方面都有不同程度的欠缺,基于此,提出一種基于“優(yōu)選法”的防碰撞算法。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是提供一種基于“優(yōu)選法”的RFID防碰撞算法,解決了現(xiàn)有技術(shù)中存在的數(shù)據(jù)傳輸量大、查詢次數(shù)多的問(wèn)題。
本發(fā)明所采用的技術(shù)方案是,一種基于“優(yōu)選法”的RFID防碰撞算法,具體按照以下步驟實(shí)施:
步驟1:讀寫器發(fā)送請(qǐng)求命令Request(1111 1111),所有標(biāo)簽均做出響應(yīng),并將所有標(biāo)簽的序列號(hào)均發(fā)給讀寫器;
步驟2:讀寫器檢測(cè)接收標(biāo)簽的信號(hào),若只有一個(gè)標(biāo)簽響應(yīng),跳轉(zhuǎn)到步驟4;若有碰撞發(fā)生則跳轉(zhuǎn)到步驟3;若無(wú)應(yīng)答,轉(zhuǎn)到步驟1;
步驟3:碰撞發(fā)生后,碰撞位數(shù)記為a,然后根據(jù)“優(yōu)選法”,算出data,data每次有三組數(shù)據(jù);將Request(datan,n)作為下一次讀寫器發(fā)送的命令,n為數(shù)據(jù)位,n=1,2,3,datan為用“優(yōu)選法”得出的二進(jìn)制數(shù)即碰撞位;
步驟4:讀寫器讀取該標(biāo)簽的信息,并對(duì)該標(biāo)簽進(jìn)行解調(diào)和解碼,將解碼后的標(biāo)簽信息上傳給主系統(tǒng)進(jìn)行相關(guān)處理,并讓標(biāo)簽休眠。
本發(fā)明的特點(diǎn)還在于:
步驟3中“優(yōu)選法”計(jì)算data的具體過(guò)程為:
a位發(fā)生碰撞,a位數(shù)最大的二進(jìn)制數(shù)為轉(zhuǎn)換成十進(jìn)制數(shù)為2a-1,定義一個(gè)取值范圍為[0,2a-1],根據(jù)黃金分割法(即“優(yōu)選法”)得到三個(gè)點(diǎn)分別為0.382*(2a-1)、0.618*(2a-1)、2a-1,分別把得到的三個(gè)點(diǎn)四舍五入取整后轉(zhuǎn)換成二進(jìn)制數(shù)為data1、data2、data3,即得到data的三組數(shù)據(jù)。
步驟3中將Request(datan,n)作為下一次讀寫器發(fā)送的命令具體為:
標(biāo)簽發(fā)生碰撞后,讀寫器發(fā)送Request(data1,1)給區(qū)域內(nèi)標(biāo)簽,標(biāo)簽把發(fā)生碰撞對(duì)應(yīng)位的序列號(hào)與接收的data1比較,若大于data1的標(biāo)簽數(shù)大于1,轉(zhuǎn)到步驟3,否則,轉(zhuǎn)到步驟4,同時(shí),讀寫器發(fā)送Request(data2,2)給區(qū)域內(nèi)標(biāo)簽,標(biāo)簽把發(fā)生碰撞對(duì)應(yīng)位的序列號(hào)與接收的data2比較,若大于data2的標(biāo)簽數(shù)大于1,轉(zhuǎn)到步驟3,否則,轉(zhuǎn)到步驟4,同時(shí),讀寫器發(fā)送Request(data3,3)給區(qū)域內(nèi)標(biāo)簽,標(biāo)簽把發(fā)生碰撞對(duì)應(yīng)位的序列號(hào)與接收的data3比較,若大于data3的標(biāo)簽數(shù)大于1,轉(zhuǎn)到步驟3,否則,轉(zhuǎn)到步驟4。
本發(fā)明的有益效果是:本發(fā)明一種基于“優(yōu)選法”的RFID防碰撞算法,所需的總的查詢次數(shù)少,縮短了識(shí)別時(shí)間;總共傳送的二進(jìn)制比特位數(shù)少,從而縮短了傳輸量,提高了傳送時(shí)間,提供了效率;吞吐率高。
附圖說(shuō)明
圖1是采用本發(fā)明RFID防碰撞算法的實(shí)施例圖;
圖2是本發(fā)明算法與現(xiàn)有算法的總的查詢次數(shù)比較圖;
圖3是本發(fā)明算法與現(xiàn)有算法的總共傳送的二進(jìn)制的比特位數(shù)比較圖;
圖4是本發(fā)明算法與現(xiàn)有算法的吞吐率比較圖。
具體實(shí)施方式
下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明進(jìn)行詳細(xì)說(shuō)明。
本發(fā)明一種基于“優(yōu)選法”的RFID防碰撞算法,具體按照以下步驟實(shí)施:
步驟1:讀寫器發(fā)送請(qǐng)求命令Request(1111 1111),所有標(biāo)簽均做出響應(yīng),并將所有標(biāo)簽的序列號(hào)均發(fā)給讀寫器;
步驟2:讀寫器檢測(cè)接收標(biāo)簽的信號(hào),若只有一個(gè)標(biāo)簽響應(yīng),跳轉(zhuǎn)到步驟4,若有碰撞發(fā)生則跳轉(zhuǎn)到步驟3,若無(wú)應(yīng)答,即為空,則說(shuō)明讀寫器有效范圍內(nèi)無(wú)標(biāo)簽或所有的標(biāo)簽都被識(shí)別(整個(gè)識(shí)別過(guò)程結(jié)束),轉(zhuǎn)到步驟1。
步驟3:碰撞發(fā)生后,將碰撞位數(shù)記為a,然后根據(jù)“優(yōu)選法”,算出data,data每次有三組數(shù)據(jù)。
“優(yōu)選法”計(jì)算data的具體過(guò)程為:
a位發(fā)生碰撞,a位數(shù)最大的二進(jìn)制數(shù)為轉(zhuǎn)換成十進(jìn)制數(shù)為2a-1,定義一個(gè)取值范圍為[0,2a-1],根據(jù)黃金分割法(即“優(yōu)選法”)得到三個(gè)點(diǎn)分別為0.382*(2a-1)、0.618*(2a-1)、2a-1,分別把得到的三個(gè)點(diǎn)四舍五入取整后轉(zhuǎn)換成二進(jìn)制數(shù)為data1、data2、data3,即得到data的三組數(shù)據(jù)。
將Request(datan,n)作為下一次讀寫器發(fā)送的命令,n為數(shù)據(jù)位,n=1,2,3,datan為用黃金分割法得出的二進(jìn)制數(shù)即碰撞位。
標(biāo)簽發(fā)生碰撞后,讀寫器發(fā)送Request(data1,1)給區(qū)域內(nèi)標(biāo)簽,標(biāo)簽把發(fā)生碰撞對(duì)應(yīng)位的序列號(hào)與接收的data1比較,若大于data1的標(biāo)簽數(shù)大于1,轉(zhuǎn)到步驟3,否則,轉(zhuǎn)到步驟4,同時(shí),讀寫器發(fā)送Request(data2,2)給區(qū)域內(nèi)標(biāo)簽,標(biāo)簽把發(fā)生碰撞對(duì)應(yīng)位的序列號(hào)與接收的data2比較,若大于data2的標(biāo)簽數(shù)大于1,轉(zhuǎn)到步驟3,否則,轉(zhuǎn)到步驟4,同時(shí),讀寫器發(fā)送Request(data3,3)給區(qū)域內(nèi)標(biāo)簽,標(biāo)簽把發(fā)生碰撞對(duì)應(yīng)位的序列號(hào)與接收的data3比較,若大于data3的標(biāo)簽數(shù)大于1,轉(zhuǎn)到步驟3,否則,轉(zhuǎn)到步驟4。
每次只發(fā)送碰撞位,這樣大大減少了數(shù)據(jù)的傳輸量,提高了比較的次數(shù)。
步驟4:讀寫器讀取該標(biāo)簽的信息,并對(duì)該標(biāo)簽進(jìn)行解調(diào)和解碼,將解碼后的標(biāo)簽信息上傳給主系統(tǒng)進(jìn)行相關(guān)處理,并讓標(biāo)簽休眠。
實(shí)施例
假設(shè)標(biāo)簽的序列號(hào)為8位,現(xiàn)在讀寫器可讀取范圍內(nèi)有四個(gè)處于準(zhǔn)備狀態(tài)的電子標(biāo)簽A、B、C、D,它們的序列號(hào)如下:標(biāo)簽A:1010 0111;標(biāo)簽B:1011 0101;標(biāo)簽C:1010 1111;標(biāo)簽D:1011 1101。其識(shí)別過(guò)程如圖1所示:
(1)開(kāi)始讀寫器對(duì)區(qū)域內(nèi)標(biāo)簽處于未知的狀態(tài),所以發(fā)送Request(1111 1111)命令,要求區(qū)域內(nèi)所有的標(biāo)簽應(yīng)答。標(biāo)簽A、B、C、D都響應(yīng),讀寫器根據(jù)Manchester編碼原理,讀寫器接收到的數(shù)據(jù)為:
101x x1x1;即:D1、D3、D4位發(fā)生碰撞,3位碰撞,運(yùn)用“優(yōu)選法”,3位最大二進(jìn)制數(shù)是111,轉(zhuǎn)換成十進(jìn)制數(shù)就是7,那就可以定義一個(gè)取值范圍[0,7],根據(jù)前面所述得到三個(gè)點(diǎn),即:2、4、7。2轉(zhuǎn)化成二進(jìn)制是010,4轉(zhuǎn)換成二進(jìn)制是100,7轉(zhuǎn)換成二進(jìn)制是111,可得下一次Request所需的序列號(hào)為:010。
(2)讀寫器發(fā)送Request(010,1),只有標(biāo)簽A應(yīng)答,無(wú)碰撞發(fā)生,讀寫器讀取標(biāo)簽A的信息,并對(duì)標(biāo)簽A進(jìn)行解調(diào)和解碼,將解碼后的標(biāo)簽A的信息上傳給主系統(tǒng)進(jìn)行相關(guān)處理,最后執(zhí)行Sleep命令,屏蔽掉它,使之處于“啞巴”狀態(tài)。獲得下一次序列號(hào),即:100。
(3)讀寫器發(fā)送Request(100,2),只有標(biāo)簽B應(yīng)答,無(wú)碰撞發(fā)生,讀寫器讀取標(biāo)簽B的信息,并對(duì)標(biāo)簽B進(jìn)行解調(diào)和解碼,將解碼后的標(biāo)簽B的信息上傳給主系統(tǒng)進(jìn)行相關(guān)處理。最后執(zhí)行Sleep命令,屏蔽掉它,使之處于“啞巴”狀態(tài),獲得下一次序列號(hào),即:111。
(4)讀寫器發(fā)送Request(111,3),這時(shí)標(biāo)簽C、D都響應(yīng),讀寫器根據(jù)Manchester編碼原理,讀寫器接收到的數(shù)據(jù)為:101x 11x1;即:D1、D4位發(fā)生碰撞,2為碰撞,運(yùn)用“優(yōu)選法”,,2位最大的二進(jìn)制數(shù)是11,轉(zhuǎn)換成十進(jìn)制數(shù)是3,那就可以定義一個(gè)取值范圍[0,3],根據(jù)前面所述得到三個(gè)點(diǎn),即:1,1,3。1轉(zhuǎn)化成二進(jìn)制是01,3轉(zhuǎn)換位二進(jìn)制是11,可得下一次Request所需的序列號(hào)為:01。
(5)讀寫器發(fā)送Request(01,1),只有標(biāo)簽C響應(yīng),無(wú)碰撞發(fā)生,讀寫器讀取標(biāo)簽C的信息,并對(duì)標(biāo)簽C進(jìn)行解調(diào)和解碼,將解碼后的標(biāo)簽C的信息上傳給主系統(tǒng)進(jìn)行相關(guān)處理。最后執(zhí)行Sleep命令,屏蔽掉它,使之處于“啞巴”狀態(tài)。獲得下一次序列號(hào),即:11。
(6)讀寫器發(fā)送Request(11,2),只有標(biāo)簽D響應(yīng),無(wú)碰撞發(fā)生,讀寫器讀取標(biāo)簽D的信息,并對(duì)標(biāo)簽D進(jìn)行解調(diào)和解碼,將解碼后的標(biāo)簽D的信息上傳給主系統(tǒng)進(jìn)行相關(guān)處理。最后執(zhí)行Sleep命令,屏蔽掉它,使之處于“啞巴”狀態(tài)。此時(shí)標(biāo)簽已經(jīng)全部識(shí)別,并且已經(jīng)沒(méi)有data數(shù)據(jù)。
(7)讀寫器再次發(fā)送Request(1111 1111)命令,無(wú)標(biāo)簽應(yīng)答,說(shuō)明標(biāo)簽全部識(shí)別完,整個(gè)標(biāo)簽識(shí)別過(guò)程結(jié)束。
算法性能分析
①讀寫器所需總的查詢次數(shù)分析
現(xiàn)有的二進(jìn)搜索制算法,從N個(gè)標(biāo)簽中識(shí)別出單個(gè)標(biāo)簽平均需要log2N+1次,動(dòng)態(tài)二進(jìn)制算法和二進(jìn)制的識(shí)別次數(shù)和吞吐率是一樣的,但時(shí)間有所縮短,傳輸?shù)臄?shù)據(jù)流比較少,因?yàn)閭鬏數(shù)臄?shù)據(jù)是動(dòng)態(tài)調(diào)整的。它們總的搜索次數(shù)為:
而采用本發(fā)明基于“優(yōu)選法”的RFID防碰撞算法,讀寫器所需總的查詢次數(shù)為:
S(N)=1+2N
②總共傳送的二進(jìn)制比特位數(shù)分析
現(xiàn)有的二進(jìn)制搜索算法,總共傳送的二進(jìn)制的比特位數(shù)為:
其中,N為標(biāo)簽的個(gè)數(shù),k為標(biāo)簽的位數(shù)。
現(xiàn)有的動(dòng)態(tài)二進(jìn)制搜索算法,總共傳送的二進(jìn)制的比特位數(shù)為:
其中,N為標(biāo)簽的個(gè)數(shù),k為標(biāo)簽的位數(shù)。
本發(fā)明基于“優(yōu)選法”的RFID防碰撞算法,總共傳送的二進(jìn)制的比特位數(shù)為:
L(N,k)=(2N+1)*(k+1)/2
其中,N為標(biāo)簽的個(gè)數(shù),k為標(biāo)簽的位數(shù)。
③吞吐率分析
現(xiàn)有二進(jìn)制搜索算法與動(dòng)態(tài)二進(jìn)制搜索算法的總的搜索次數(shù)一樣,則系統(tǒng)效率就一樣,也就是吞吐率一樣,吞吐率為:
本發(fā)明基于“優(yōu)選法”的RFID防碰撞算法,吞吐率為:
E(N)=N/(2N+1)
其中,N為標(biāo)簽的個(gè)數(shù)。
④仿真性能分析
利用MATLAB開(kāi)發(fā)的仿真平臺(tái)來(lái)實(shí)現(xiàn)讀寫器與標(biāo)簽的通信過(guò)程,設(shè)定標(biāo)簽數(shù)量為200,標(biāo)簽編碼為8位。在MATLAB上分別對(duì)算法的查詢次數(shù)、傳輸量和吞吐率進(jìn)行了驗(yàn)證仿真,由于二進(jìn)制的搜索次數(shù)與動(dòng)態(tài)二進(jìn)制的搜索次數(shù)、吞吐率一樣,為了仿真時(shí)方便區(qū)分,將動(dòng)態(tài)二進(jìn)制的總的搜索次數(shù)變?yōu)椋?/p>
將動(dòng)態(tài)二進(jìn)制的吞吐率變?yōu)椋?/p>
如圖2所示為現(xiàn)有二進(jìn)制算法(在圖中寫為基本二進(jìn)制)、動(dòng)態(tài)二進(jìn)制算法與本發(fā)明基于“優(yōu)選法”的RFID防碰撞算法(在圖中寫為改進(jìn)算法)的讀寫器的總的查詢次數(shù)進(jìn)行了對(duì)比,由仿真圖可得本申請(qǐng)的算法所需的總的查詢次數(shù)明顯減少,也就是識(shí)別時(shí)間縮短。
如圖3所示為現(xiàn)有二進(jìn)制算法(在圖中寫為基本二進(jìn)制)、動(dòng)態(tài)二進(jìn)制算法與本發(fā)明基于“優(yōu)選法”的RFID防碰撞算法(在圖中寫為改進(jìn)算法)的讀寫器的總共傳送的二進(jìn)制的比特位數(shù)進(jìn)行了對(duì)比,由仿真圖可以看出隨著標(biāo)簽數(shù)量的增加,采用本申請(qǐng)的算法總共傳送的二進(jìn)制的比特位數(shù)明顯小于前兩者,從而縮短了傳輸量,提高了傳輸時(shí)間。
如圖4所示為現(xiàn)有二進(jìn)制算法(在圖中寫為基本二進(jìn)制)、動(dòng)態(tài)二進(jìn)制算法與本發(fā)明基于“優(yōu)選法”的RFID防碰撞算法(在圖中寫為改進(jìn)算法)的讀寫器的吞吐率進(jìn)行對(duì)比,由仿真圖可以看出隨著標(biāo)簽數(shù)量的增加,采用本申請(qǐng)算法的吞吐率大概穩(wěn)定在0.5左右,說(shuō)明本申請(qǐng)算法吞吐率明顯高于前兩者。
本發(fā)明基于“優(yōu)選法”的RFID防碰撞算法,對(duì)算法的可行性在總的查詢次數(shù)、傳輸量、吞吐率與現(xiàn)有的二進(jìn)制算法、動(dòng)態(tài)二進(jìn)制算法進(jìn)行了對(duì)比,可以看出采用本發(fā)明的算法明顯優(yōu)于現(xiàn)有的兩種算法。