射頻識別(RFID)技術(shù)是一種非接觸式的自動識別技術(shù),通常由讀寫器、電子標(biāo)簽和計(jì)算機(jī)數(shù)據(jù)管理系統(tǒng)三部分組成,通過DSRC短程通信技術(shù)進(jìn)行數(shù)據(jù)傳輸和交換。RFID系統(tǒng)工作時(shí),如果遇到兩個(gè)以上電子標(biāo)簽都在讀寫器信號的覆蓋范圍內(nèi),則各個(gè)電子標(biāo)簽會同時(shí)對讀寫器發(fā)出信號,從而造成各電子標(biāo)簽間數(shù)據(jù)的碰撞,使讀寫器不能正常讀取各個(gè)電子標(biāo)簽內(nèi)的有關(guān)數(shù)據(jù),這就是RFID系統(tǒng)中的多路存取問題。因此只有解決好電子標(biāo)簽的碰撞問題,才能使RFID系統(tǒng)正常工作,而解決電子標(biāo)簽防碰撞問題的關(guān)鍵是優(yōu)化的防碰撞算法。
現(xiàn)有的RFID防碰撞算法都是基于TDMA算法,可劃分為Aloha防碰撞算法和基于二進(jìn)制搜索BS(Binary search)算法兩大類。Aloha是一種隨機(jī)接入算法,這種算法多采取“標(biāo)簽先發(fā)言”的方式,即標(biāo)簽一旦進(jìn)入閱讀器的閱讀區(qū)域就自動向閱讀器發(fā)送其自身的ID,隨即標(biāo)簽和閱讀器間開始通信。在標(biāo)簽發(fā)送數(shù)據(jù)的過程中,若有其他標(biāo)簽也在發(fā)送數(shù)據(jù),將發(fā)生信號重疊從而導(dǎo)致完全沖突或部分沖突,閱讀器檢測接收到的信號來判斷有無沖突。如果發(fā)生沖突,閱讀器將發(fā)送命令讓標(biāo)簽停止發(fā)送,隨機(jī)等待一段時(shí)間后再重新發(fā)起查詢。該算法特點(diǎn)是:算法簡單、便于實(shí)現(xiàn),適用于低成本RFID系統(tǒng)。但是由于該算法的時(shí)隙是隨機(jī)分配的,當(dāng)大量標(biāo)簽并存時(shí),幀沖突嚴(yán)重。而基于BS算法是通過多次比較,不斷篩選出不同的標(biāo)簽號,時(shí)分復(fù)用地進(jìn)行讀寫器和射頻卡之間的信號交換,以一個(gè)獨(dú)特的序列號識別射頻卡為基礎(chǔ)。為了從一組射頻卡中選出其中的一個(gè),讀寫器需要發(fā)出一個(gè)請求命令,有意識地將射頻卡序列號傳輸時(shí)的數(shù)據(jù)碰撞引導(dǎo)到讀寫器上,即讓讀寫器來判斷是否發(fā)生碰撞。如發(fā)生碰撞,則縮小范圍進(jìn)行進(jìn)一步搜索。這類算法雖然識別效率高,但是算法比較復(fù)雜,識別時(shí)間較長。本文在二進(jìn)制防碰撞算法的基礎(chǔ)上提出一種改進(jìn)的防碰撞算法。
一,兩種典型的二進(jìn)制防碰撞算法的分析
1.1二進(jìn)制搜索算法
實(shí)現(xiàn)BS算法系統(tǒng)的必要前提是能夠辨認(rèn)出在讀寫器中數(shù)據(jù)沖突位的準(zhǔn)確位置,因此必須選用合適的編碼。曼徹斯特編碼能夠按位識別出碰撞位,這樣可以根據(jù)碰撞的位置,按一定的規(guī)則重新搜索標(biāo)簽。因此,使用曼徹斯特編碼是實(shí)現(xiàn)二進(jìn)制搜索防碰撞算法的必要前提。BS算法的工作流程如下:
(1)電子標(biāo)簽進(jìn)入讀寫器的作用范圍時(shí),讀寫器發(fā)送命令REQUEST(≤11111111),所有滿足此條件的電子標(biāo)簽響應(yīng)此命令,并將自己的EPC號傳給讀寫器。
(2)讀寫器對比電子標(biāo)簽響應(yīng)的EPC碼相同位數(shù)上的數(shù),根據(jù)Manchester編碼規(guī)則,若出現(xiàn)不一致現(xiàn)象,即可判斷出該比特位有碰撞。
(3)當(dāng)確定有碰撞后,將此次發(fā)生碰撞的最高位置“0”,最高碰撞位之前的比特位不變,最高碰撞位后的所有比特位都置“1”,并產(chǎn)生新的請求命令REQUEST,依次排除序列號大的標(biāo)簽,直到讀寫器對比電子標(biāo)簽響應(yīng)的序列號中相同位數(shù)上的數(shù)完全一致時(shí),則說明無碰撞。此時(shí),使用選擇命令(SELECT)選出一個(gè)唯一的標(biāo)簽。
(4)選出唯一的標(biāo)簽后,使用READ-DATA命令完成讀寫器與該電子標(biāo)簽的數(shù)據(jù)交換。并使用選擇命令(UNSELECT)進(jìn)入“無聲”狀態(tài),此時(shí)在讀寫器范圍內(nèi)不再響應(yīng)(重新進(jìn)入讀寫器范圍可再次響應(yīng))。為了重新激活電子標(biāo)簽,必須進(jìn)行復(fù)位操作。
(5)重復(fù)前4個(gè)步驟,并選擇剩余的電子標(biāo)簽數(shù)據(jù)交換。多次循環(huán)后即可完成所有電子標(biāo)簽的讀取。
1.2動態(tài)二進(jìn)制搜索算法(DBS)
在BS搜索算法中,從讀寫器和單個(gè)電子標(biāo)簽的數(shù)據(jù)流可以看出,讀寫器發(fā)出的請求命令中,最高碰撞位后的所有比特位都被置“1”,對標(biāo)簽的識別不能提供任何的信息。而標(biāo)簽返回的數(shù)據(jù)中,最高碰撞位以前的比特位及最高碰撞位不包含給讀寫器的補(bǔ)充信息,因?yàn)檫@些位是已知且給定的,屬于多余的重復(fù)信息。基于此人們提出了動態(tài)二進(jìn)制搜索算法(DBS),當(dāng)讀寫器檢測到碰撞后,下一次讀寫器在請求命令中只發(fā)送搜索序列號中的最高位和最高碰撞位之間的部分作為搜索依據(jù),然后中斷傳輸,所有在與最高位和最高碰撞位之間的部分相同的電子標(biāo)簽響應(yīng)并送回它們序列號的剩余各位,即最高碰撞位之后的比特位作為應(yīng)答。因此,DBS算法避免了序列號中多余部分的傳輸,數(shù)據(jù)傳輸時(shí)間明顯縮短。DBS算法較BS算法在傳輸數(shù)據(jù)量和所需時(shí)間上可減少50%。