導(dǎo)讀:甘泉老師花費數(shù)年之功,撰寫的新書《物聯(lián)網(wǎng)UHF RFID技術(shù)、產(chǎn)品及應(yīng)用》正式出版發(fā)布,本書對UHF RFID最新的技術(shù)、產(chǎn)品與市場應(yīng)用進(jìn)行了系統(tǒng)性的闡述,干貨滿滿!RFID世界網(wǎng)得到了甘泉老師獨家授權(quán),在RFID世界網(wǎng)公眾號特設(shè)專欄,陸續(xù)發(fā)布本書內(nèi)容。
RFID干貨專欄概述
經(jīng)過20多年的努力發(fā)展,超高頻RFID技術(shù)已經(jīng)成為物聯(lián)網(wǎng)的核心技術(shù)之一,每年的出貨量達(dá)到了200億的級別。在這個過程中,中國逐步成為超高頻RFID標(biāo)簽產(chǎn)品的主要生產(chǎn)國,在國家對物聯(lián)網(wǎng)發(fā)展的大力支持下,行業(yè)應(yīng)用和整個生態(tài)的發(fā)展十分迅猛。然而,至今國內(nèi)還沒有一本全面介紹超高頻RFID技術(shù)的書籍。
為了填補這方面的空缺,甘泉老師花費數(shù)年之功,撰寫的新書《物聯(lián)網(wǎng)UHF RFID技術(shù)、產(chǎn)品及應(yīng)用》正式出版發(fā)布,本書對UHF RFID最新的技術(shù)、產(chǎn)品與市場應(yīng)用進(jìn)行了系統(tǒng)性的闡述,干貨滿滿!RFID世界網(wǎng)得到了甘泉老師獨家授權(quán),在RFID世界網(wǎng)公眾號特設(shè)專欄,陸續(xù)發(fā)布本書內(nèi)容。
掃碼觀看本章節(jié)視頻講解
3.3.2基于實際場景的多標(biāo)簽防碰撞算法——動態(tài)Q算法
01、標(biāo)簽數(shù)量N與Q的概率分析
從13.56MHz頻段的ISO/IEC 14443協(xié)議、ISO/IEC 15693協(xié)議到900MHz頻段的ISO/IEC 18000-6B/C協(xié)議,防碰撞協(xié)議在現(xiàn)有的技術(shù)中一般都基于兩種基本算法:時隙ALOHA算法和二進(jìn)制樹的搜索算法。
3.3.1節(jié)的多標(biāo)簽碰撞算法是針對已知固定數(shù)量標(biāo)簽場景中所使用的方法。在不知道天線覆蓋場內(nèi)有多少標(biāo)簽時,Q怎么選擇,如何最有效率地讀取標(biāo)簽,就需要一個可以自動調(diào)節(jié)的Q算法來實現(xiàn),稱之為動態(tài)Q算法。
考慮一下,在標(biāo)簽數(shù)量未知的情況下如果Q是固定的一個數(shù)字,那么無論Q設(shè)什么樣的數(shù)字都會存在很大問題。比如我們把Q設(shè)為4,如果場內(nèi)有500張標(biāo)簽,一定會出現(xiàn)碰撞嚴(yán)重導(dǎo)致很難讀全;如果場內(nèi)標(biāo)簽只有1張或沒有,又需要浪費許多時隙時間。這個時候就需要動態(tài)Q算法,即閱讀器可以根據(jù)場內(nèi)讀取的標(biāo)簽數(shù)量以及效果進(jìn)行動態(tài)的調(diào)整,如果標(biāo)簽多,Q就自動變大;如果標(biāo)簽少,Q就自動變小。那如何判斷場內(nèi)的標(biāo)簽數(shù)量呢?這需要從概率的角度著手進(jìn)行分析。閱讀器對標(biāo)簽的識別體現(xiàn)在每一個時隙上,根據(jù)3.2.1節(jié)中的分析,在一個時隙內(nèi)可能發(fā)生三種情況,分別是一個標(biāo)簽返回:讀??;多個標(biāo)簽返回:沖突;沒有標(biāo)簽返回:空閑。在不考慮碰撞讀取率時(A=0),這三種情況下根據(jù)標(biāo)簽數(shù)量為N、清點參數(shù)Q的清點效率F的概率表達(dá)式如下:
①只一個標(biāo)簽返回——讀?。?/p>
②有多個標(biāo)簽返回——沖突:
③沒有標(biāo)簽返回——空閑:
只是通過這樣枯燥的算式,發(fā)現(xiàn)不了任何規(guī)律。不妨假設(shè)場內(nèi)標(biāo)簽的數(shù)量為固定的一些數(shù)量,選用不同的Q時碰撞和無返回的概率是多少。假定場內(nèi)的標(biāo)簽數(shù)量分別是:N=1、2、5、10、20、50、100、200、500、1000;動態(tài)Q=1、2、3、4、5、6、7、8、9、10。將這些參數(shù)帶入式(3-6)得到讀取的概率如表3-13所示;同理,帶入式(3-7)和式(3-8)可得到表3-14碰撞概率和表3-15空閑概率。
從表3-13中可以明顯的看到在標(biāo)簽數(shù)量N不同時,不同的Q的讀取率是不同的,且讀取率比較高的Q一般在附近。如N=10,在Q=3和Q=4 之間,此時讀取率最高的為Q=3時的0.38和Q=4時的0.35。從表3-13中也可以看到,表格的左下角和右上角的概率基本都是0,左下角為時隙多標(biāo)簽少空閑的概率大導(dǎo)致讀取率低;右上角時隙少標(biāo)簽多碰撞概率大導(dǎo)致讀取率低。
在正常的多標(biāo)簽動態(tài)算法的過程中如果連續(xù)兩個時隙的狀態(tài)都是讀取狀態(tài),就說明當(dāng)前的Q與N非常合適,不需要進(jìn)行Q的調(diào)整。
表3-13讀取Q、N概率表
從表3-14碰撞Q、N概率中可以發(fā)現(xiàn)N越大碰撞概率越大,Q越小碰撞概率越大,該表格的右上角碰撞概率基本都為1,就是說100%發(fā)生碰撞,就需要把Q調(diào)大。
在正常的多標(biāo)簽動態(tài)算法的過程中,如果連續(xù)兩個時隙的狀態(tài)都是碰撞狀態(tài),就說明當(dāng)前的Q相對于N太小,需要增大Q。也可以通過表3-14計算得出結(jié)論,假定當(dāng)前狀態(tài)為N=10,Q=2,碰撞概率為0.76,連續(xù)兩次碰撞的概率為0.76×0.76=0.57,此概率大于50%,就需要將Q增大為3。通過表3-11已知N=10時Q=3或4為最合適的,剛好與之前的結(jié)論想吻合。
表3-14碰撞Q、N概率表
從表3-15中可知標(biāo)簽N越多空閑概率越小,Q越大空閑概率越大,該表格的左下角概率值都為1,就是說100%發(fā)生空閑,就需要把Q調(diào)小。
在正常的多標(biāo)簽動態(tài)算法的過程中如果連續(xù)兩個時隙的狀態(tài)都是空閑狀態(tài),就說明當(dāng)前的Q相對于N太大,需要減小Q。讀者也可以通過表3-15計算得出結(jié)論,假定當(dāng)前狀態(tài)為N=10,Q=5,碰撞概率為0.73,連續(xù)兩次碰撞的概率為0.73×0.73=0.53,此概率大于了50%,就需要將Q減小為4。通過表3-11已知N=10時Q=3或4為最合適,剛好與之前的結(jié)論相吻合。
表3-15空閑Q、N概率表
02、動態(tài)Q的實例分析
經(jīng)過上述的算法和概率分析,已經(jīng)了解了Q變化的基本要領(lǐng),但是在實際的案例中,閱讀器的動態(tài)Q是如何設(shè)置的呢?筆者通過對主流閱讀器的動態(tài)Q算法研究,總結(jié)了一套非常適合工程應(yīng)用的動態(tài)Q方法,其步驟如下:
①Q(mào)=0 檢測場內(nèi)是否有標(biāo)簽;
②Q=3 初始化Q狀態(tài)識別標(biāo)簽;
③連續(xù)碰撞2次,則Q+1;連續(xù)空閑2次,則Q-1,無連續(xù)碰撞和連續(xù)空閑則讀取識別;
④連續(xù)發(fā)3次Q=0為空,確定全部識別,場中不剩下任何標(biāo)簽;
⑤掉電開啟下一輪盤點。
該動態(tài)算法中,①首先發(fā)Q=0,看場內(nèi)是否有標(biāo)簽,會出現(xiàn)3個情況,如果沒有標(biāo)簽則跳轉(zhuǎn)到⑤進(jìn)行下一輪盤點;如果有一個標(biāo)簽則讀取該標(biāo)簽數(shù)據(jù)跳轉(zhuǎn)到④,確認(rèn)場內(nèi)沒有標(biāo)簽后再跳轉(zhuǎn)到⑤進(jìn)行下一輪盤點;如果場內(nèi)有多張標(biāo)簽則跳轉(zhuǎn)到②Q=3 初始化Q狀態(tài)進(jìn)行識別標(biāo)簽再到③、④、⑤。
這里將步驟③和④的組合稱之為基礎(chǔ)動態(tài)Q策略,這個策略是最常用的動態(tài)Q策略,讀者也可以開發(fā)類似的動態(tài)Q策略,比如監(jiān)控多次識別的結(jié)果判斷Q是否跳轉(zhuǎn)等,不過實際測結(jié)果比基礎(chǔ)動態(tài)Q策略的提升不會超過10%(筆者驗證過大量AI動態(tài)Q策略,雖然優(yōu)于基礎(chǔ)動態(tài)Q策略,但進(jìn)步不大且較為復(fù)雜)。
假定場內(nèi)標(biāo)簽數(shù)量N=100,但是閱讀器未知該信息,此時的多標(biāo)簽動態(tài)Q識別過程如下:
運行①Q(mào)=0,發(fā)生沖突、場內(nèi)存在多個標(biāo)簽(N=100;時隙M=1);
運行②Q=3,(N=100);
運行③ Q=3時連續(xù)兩次沖突Q=4(N=100;M=2);
運行③ Q=4時連續(xù)兩次沖突Q=5(N=100;M=2);
運行③ Q=5時連續(xù)兩次沖突Q=6(N=100;M=2);
運行③ Q=6時連續(xù)進(jìn)行讀取,第一輪讀取標(biāo)簽21個還剩79個(根據(jù)表(3-13)中Q=6、N=100概率給出數(shù)據(jù)33%×64=21,實際情況略有不同)(N=79;M=64);
運行③ Q=6時繼續(xù)進(jìn)行讀取,第二輪讀取標(biāo)簽23個還剩56個(根據(jù)表(3-13)中Q=6、N=79概率為36%×64=23,實際情況略有不同)(N=56;M=64);
運行③ Q=6時繼續(xù)進(jìn)行讀取,第三輪讀取標(biāo)簽24個還剩32個(根據(jù)表(3-13)中Q=6、N=56概率為37%×64=24,實際情況略有不同)(N=32;M=64);
運行③ Q=6時繼續(xù)進(jìn)行讀取,第四輪讀取標(biāo)簽20個還剩12個(根據(jù)表(3-13)中Q=6、N=32概率為31%×64=20,實際情況略有不同)(N=12;M=64);
運行③ Q=6時連續(xù)兩次空閑,Q=5(N=12;M=2);
運行③ Q=5時繼續(xù)進(jìn)行讀取,第五輪讀取標(biāo)簽8個還剩4個(根據(jù)表(3-13)中Q=5、N=12概率為26%×32=8,實際情況略有不同)(N=4;M=32);
運行③ Q=5時連續(xù)兩次空閑,Q=4(N=4;M=2);
運行③ Q=4時連續(xù)兩次空閑,Q=3(N=4;M=2);
運行③ Q=3時繼續(xù)進(jìn)行讀取,第六輪讀取標(biāo)簽3個還剩1個(根據(jù)表(3-13)中Q=3、N=4概率為33%×8=3,實際情況略有不同)(N=1;M=8);
運行③ Q=3時連續(xù)兩次空閑,Q=2(N=1;M=2);
運行③ Q=2時繼續(xù)進(jìn)行讀取,第七輪讀取標(biāo)簽1個還剩0個(根據(jù)表(3-13)中Q=2、N=1概率為25%×4=1,實際情況略有不同)(N=0;M=4);
運行③ Q=2時連續(xù)兩次空閑,Q=1(N=0;M=2);
運行③ Q=1時連續(xù)兩次空閑,Q=0(N=0;M=2);
運行④取連續(xù)發(fā)3次Q=0 確定全部識別;
掉電重復(fù)下一輪盤點。
從上述識別過程中Q先變大再變小最終將所有標(biāo)簽都識別到,并確認(rèn)場內(nèi)沒有遺漏的標(biāo)簽。雖然看起來非常繁瑣,但是大大提高了識別效率。對識別效率的評估可以通過標(biāo)簽時隙比實現(xiàn),即總共標(biāo)簽數(shù)量與總共時隙的比值,比值越高說明效率越高。標(biāo)簽數(shù)量N=100個,間隙數(shù)量就是把從1)到20)的所有時隙加起來M=319,那么標(biāo)簽時隙比為100÷319=31.3%,這是一個非常高的效率值。
為了讓讀者了解動態(tài)Q的優(yōu)勢,將其與固定Q算法進(jìn)行對比。此處采用固定Q的最優(yōu)方式,假設(shè)閱讀器已知場內(nèi)標(biāo)簽數(shù)量。在N=100時,已知Q=7具有最高的識別率,那么:
Q=7,N=100,讀取率0.36*128=46個,(N=54;M=128);
Q=7,N=54,讀取率0.28*128=36個,(N=18;M=128);
Q=7,N=18,讀取率0.12*128=15個,(N=3;M=128);
Q=7,N=3,讀取率0.023*128=3個,(N=0;M=128);
Q=7,N=0,讀取率0個,(N=0;M=128)
從Q=7的固定Q可以看到一共運行5輪確定所有標(biāo)簽都被識別且M=640,對應(yīng)的標(biāo)簽時隙比為15.6%。
再對比一下Q=6,N=100的情況,固定Q=6,那么:
Q=6,N=100,讀取率0.33*64=21個,(N=79;M=64);
Q=6,N=79,讀取率0.36*64=23個,(N=56;M=64);
Q=6,N=56,讀取率0.37*64=24個,(N=32;M=64);
Q=6,N=32,讀取率0.31*64=20個,(N=12;M=64);
Q=6,N=12,讀取率0.16*64=10個,(N=2;M=64);
Q=6,N=2,讀取率0.031*64=2個,(N=0;M=64);
Q=6,N=0,讀取率0個,(N=0;M=64)。
從Q=6的固定Q可以看到一共運行7輪確定所有標(biāo)簽都被識別且M=448,對應(yīng)的標(biāo)簽時隙比為22.3%。
再對比一下Q=5,N=100的情況,固定Q=5,那么:
Q=5,N=100,讀取率0.135*32=4個,(N=96;M=32);
Q=5,N=96,讀取率0.147*32=5個,(N=91;M=32);
Q=5,N=91,讀取率0.163*32=5個,(N=86;M=32);
Q=5,N=86,讀取率0.181*32=6個,(N=80;M=32);
Q=5,N=80,讀取率0.204*32=7個,(N=73;M=32);
Q=5,N=73,讀取率0.232*32=7個,(N=66;M=32);
Q=5,N=66,讀取率0.262*32=8個,(N=58;M=32);
Q=5,N=58,讀取率0.297*32=9個,(N=49;M=32);
Q=5,N=49,讀取率0.334*32=11個,(N=38;M=32);
Q=5,N=38,讀取率0.367*32=12個,(N=26;M=32);
Q=5,N=26,讀取率0.367*32=12個,(N=14;M=32);
Q=5,N=14,讀取率0.290*32=9個,(N=5;M=32);
Q=5,N=5,讀取率0.138*32=4個,(N=1;M=32);
Q=5,N=1,讀取率0.031*32=1個,(N=0;M=32);
Q=5,N=0,讀取率0個,(N=0;M=32)。
從Q=5的固定Q可以看到一共運行15輪確定所有標(biāo)簽都被識別且M=480,對應(yīng)的標(biāo)簽時隙比為20.8%。
關(guān)于其它固定Q的標(biāo)簽時隙比,這里不做更多的計算,但明顯可以推論Q大于7時會有更多的空閑,導(dǎo)致M偏大,而Q小于5的會有大量的沖突,同樣導(dǎo)致M偏大。在未知場內(nèi)標(biāo)簽數(shù)量的情況下使用動態(tài)Q算法會比即使已知場內(nèi)標(biāo)簽數(shù)量的固定Q算法效率高50%。因此應(yīng)用中合理使用動態(tài)Q會大大提高多標(biāo)簽識別的效率和準(zhǔn)確性。
3.3.3 多標(biāo)簽識別綜合解決方案
由于近些年來超高頻RFID的應(yīng)用場景越來越多,面臨的多標(biāo)簽識別和環(huán)境干擾等諸多挑戰(zhàn),尤其是閱讀器廠商在設(shè)計和生產(chǎn)閱讀器時并不知道客戶的最終應(yīng)用場景。因此閱讀器的適應(yīng)性需要很強,能夠根據(jù)具體情況在多個場景中自動切換。本節(jié)將給出一套完整的解決方案,通過算法調(diào)節(jié)多個參數(shù)最終實現(xiàn)閱讀器可以應(yīng)對絕大多數(shù)的標(biāo)簽識別場景。
首先將所有超高頻RFID識別的應(yīng)用場景和需求總結(jié)如下:
場內(nèi)標(biāo)簽數(shù)量:沒有標(biāo)簽、1個標(biāo)簽,幾十個標(biāo)簽,幾百個標(biāo)簽或一兩千個標(biāo)簽等多種可能性。
識別率:需要保證每一輪的識別將場中的標(biāo)簽全部都清點完畢,不能存在遺漏。
識別速度:在保證識別率的前提下需要保證盡可能最快的方式實現(xiàn)場內(nèi)的標(biāo)簽識別。
現(xiàn)場環(huán)境:無論在實驗室的良好環(huán)境中,還是在惡劣的工廠干擾環(huán)境中,都保證最優(yōu)的識別率和識別速度。
覆蓋范圍:許多場景中標(biāo)簽分布比較分散,或標(biāo)簽的位置較差,需要更大的覆蓋范圍,保證對弱標(biāo)簽的識別效果。
根據(jù)上述需求,可以從本章學(xué)習(xí)的多個參數(shù)中找到解決問題的手段:
Session會話層,可以使已經(jīng)被識別到的標(biāo)簽不再重復(fù)響應(yīng)閱讀器的命令。
BLF鏈路速率,既可以提供較高的鏈路速率實現(xiàn)高速識別,又可以提供較低的鏈路速率實現(xiàn)較高的靈敏度。
FM0/Miller編碼,F(xiàn)M0可以提供高的鏈路速率實現(xiàn)高速識別,Miller8可以提供較好的抗干擾特性。
動態(tài)Q算法,可以實現(xiàn)不同數(shù)量的多標(biāo)簽識別率和最高效的清點率。
多天線場景:在多天線的場景中,不僅實現(xiàn)區(qū)域的覆蓋,同時滿足識別率和識別速度(增加多個天線可以增加覆蓋范圍和識別率,但多天線的場景中有大量的標(biāo)簽是重復(fù)覆蓋的,需要采用Session解決重復(fù)識別的問題)。
上面的幾條需求看似不可能完成的任務(wù),但在超高頻RFID的技術(shù)專家多年的努力研究下,最終找到了完美的解決方案。解決方案如下:
①、配置初始參數(shù)Session=1;TargetA到B; 初始天線=1。
②、配置BLF=640kHz;編碼=FM0;Q=4。
③、基礎(chǔ)動態(tài)Q策略(連續(xù)碰撞2次Q+1;連續(xù)空閑2次Q-1,無連續(xù)碰撞和連續(xù)空閑則讀取識別;直至3次Q=0為空)。
④、配置BLF=40kHz;編碼=Miller8;Q=3。
⑤、基礎(chǔ)動態(tài)Q策略。
⑥、若存在多天線則跳轉(zhuǎn)為下一個天線重復(fù)②到⑤,直至所有天線輪詢一遍。
⑦、配置初始參數(shù)Session=1;TargetB到A; 初始天線=1。
⑧、②到⑤。
⑨、⑥。
⑩、掉電繼續(xù)下一輪盤點。
上述策略的步驟為,首先采用最高速率的配置參數(shù)組合BLF=640kHz、編碼=FM0將場中絕大多數(shù)容易識別的標(biāo)簽快速盤點完成,采用初始Q=4是工程經(jīng)驗選擇,具有最好的適應(yīng)性。第二次識別采用系統(tǒng)中抗干擾和靈敏度最高的配置參數(shù)組合BLF=40kHz、編碼=Miller8將場中的一些信號較弱的標(biāo)簽實現(xiàn)盤點,Q=3的初始值是因為剩下未盤點的標(biāo)簽一般數(shù)量較小,采用較小的初始Q足夠滿足需求。
此時再跳轉(zhuǎn)到另外一個天線重復(fù)前面的操作,由于所有已經(jīng)被天線1盤點到的標(biāo)簽已經(jīng)在Session1跳轉(zhuǎn)到了B狀態(tài),新的天線在盤點時不會發(fā)出響應(yīng),故不會因為重復(fù)覆蓋而影響盤點速度。當(dāng)所有天線都完成上述操作后,場內(nèi)的標(biāo)簽已經(jīng)全部完成盤點,則進(jìn)入下一輪反向盤點。最終所有的標(biāo)簽狀態(tài)又回到了Target A,一次完整的盤點結(jié)束。
本節(jié)提供的多標(biāo)簽識別綜合解決方案是市面上最優(yōu)的解決方案,如果還要提升系統(tǒng)性能,則需要優(yōu)化多標(biāo)簽碰撞識別率A和基礎(chǔ)動態(tài)Q策略,前者可以通過提升閱讀器的靈敏度和數(shù)字信號處理算法實現(xiàn),后者可以通過AI學(xué)習(xí)算法增強也可以使用Matlab多次仿真取最優(yōu)策略,但這兩者投入較大,對于系統(tǒng)的識別率和識別速度提升空間有限。
3.3節(jié)中幾種基于Gen2的多標(biāo)簽算法是筆者經(jīng)過多年的研究和許多項目實踐經(jīng)驗總結(jié)出來的結(jié)論,在應(yīng)用和閱讀器的開發(fā)中會有幫助。雖然本節(jié)有許多計算內(nèi)容,但都是比較簡單的基礎(chǔ)計算,如果讀者也能自己推導(dǎo),并根據(jù)推導(dǎo)的結(jié)果用閱讀器和標(biāo)簽進(jìn)行驗證,對這部分知識的理解會更有幫助。