導(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ù)的書籍。
為了填補(bǔ)這方面的空缺,甘泉老師花費數(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.2.1 EPC C1 Gen 2空中接口數(shù)字部分
01、"Q"(Query)詢問指令
Query命令的意思是詢問命令,是針對多標(biāo)簽的快速盤點而產(chǎn)生的,在學(xué)習(xí)這個知識點之前,首先要了解超高頻RFID協(xié)議是半雙工的通信方式,且是由閱讀器先主動發(fā)起通信,也就是說閱讀器“說一句”,Tag“應(yīng)答一句”,如此往復(fù)。
首先分析一下Query命令包含哪些內(nèi)容,如表3-2所示,其中:
Query的命令字為1000,一共4個字節(jié),是一個常用的命令字。
DR是與反向鏈路頻率BLF相關(guān)的配置參數(shù)。
M代表編碼方式:M=0代表FM0編碼;M=1代表Miller2編碼;M=10代表Miller4編碼;M=11代表Miller8編碼。
Sel表示選擇Select命令配置參數(shù),3.2.4節(jié)會詳細(xì)介紹;
Session表示會話層,3.2.3節(jié)會詳細(xì)介紹;
Target表示標(biāo)簽的狀態(tài),一共有兩個狀態(tài)A或B;
Q是Query的簡稱,是超高頻RFID協(xié)議中最重要的參數(shù)。
表3-2Query命令
在閱讀器發(fā)Query命令的時候,會自帶一個參數(shù)Q,這個Q的大小決定了整個系統(tǒng)的清點效率。Q可以設(shè)置從0到15的整數(shù),標(biāo)簽收到命令后會從0到2Q中隨機(jī)產(chǎn)生一個數(shù)字,作為這個標(biāo)簽的應(yīng)答槽。閱讀器可以通過命令讓標(biāo)簽應(yīng)答槽中的數(shù)字不斷變小,直到變?yōu)?,此時標(biāo)簽會返回一個16位的隨機(jī)數(shù),與閱讀器通信。也可以理解為標(biāo)簽有一個隨機(jī)響應(yīng)概率,其中Q的最大值為15,如表3-3所示為Q為0到5時對應(yīng)的位置計數(shù)器大小。
表3-3Q值與位置計數(shù)器
Q設(shè)的越大,理論上可以清點的標(biāo)簽數(shù)量越多。如果標(biāo)簽少,Q設(shè)置過大效率就會降低(隨機(jī)響應(yīng)概率p太小導(dǎo)致)。因為Q的最大值為15,槽計數(shù)器的最大值為215=32768,也就是說一個閱讀器可以同時讀取32768個標(biāo)簽。理論上只要場內(nèi)標(biāo)簽數(shù)量不超過最大值的3倍,可以相對高效的完全全部識別,或者理解為在EPC C1 Gen2協(xié)議下,一個閱讀器可以同時識別的標(biāo)簽數(shù)量上限為10萬個。當(dāng)然實際場景中一般只有幾個或幾十個標(biāo)簽在輻射場內(nèi),只有非常特殊的應(yīng)用場景中會出現(xiàn)超過1000個標(biāo)簽在同一個閱讀器的輻射場內(nèi),所以Query協(xié)議在設(shè)定時已經(jīng)充分考慮到了這些問題。下面通過幾個例子來分析Query對應(yīng)的實際場景:
場景1,場內(nèi)永遠(yuǎn)只有1個標(biāo)簽,那么Q直接設(shè)置成0,最快速的方式進(jìn)行讀取,如果此時場內(nèi)有兩個標(biāo)簽,則會出現(xiàn)沖突,閱讀器會返回沖突告警,說明場內(nèi)有超過一張標(biāo)簽出現(xiàn)。這種應(yīng)用在電子票據(jù)上很常見,因為電子票據(jù)都是一個一個通過的,不應(yīng)該出現(xiàn)兩個標(biāo)簽同時被識別的情況,因此設(shè)置為Q=0最合適。
場景2,場內(nèi)有大量標(biāo)簽(如100張),Q的值如果設(shè)定太小,小于7,則會出現(xiàn)大量的沖突。假如設(shè)置為5,一共有32個槽計數(shù)器,100個標(biāo)簽,那么每個槽里面有3個標(biāo)簽,一定會沖突,讀取效率會降低,所以這個情況的Q一般設(shè)置為7。
場景3,場內(nèi)有10個標(biāo)簽,Q如果設(shè)置過大,比如7,會有128個槽計數(shù)器,數(shù)了128次才清點出來這10個標(biāo)簽,效率太低。
關(guān)于Q算法有很多,在3.3節(jié)有詳細(xì)的分析,有興趣的讀者可以詳細(xì)研讀相關(guān)內(nèi)容。
02、閱讀器與標(biāo)簽的握手過程
從應(yīng)用層看閱讀器讀取標(biāo)簽,只需要一個簡單的盤點命令,很快就收到讀取的EPC號碼。但是這個讀到標(biāo)簽的通信過程并非一次簡單的應(yīng)答,而是通過多次的握手實現(xiàn)的。本節(jié)將詳細(xì)講解該握手的過程。通過學(xué)習(xí)這個握手的過程,讀者可以了解到Reader和Tag如何進(jìn)行數(shù)據(jù)交互和身份認(rèn)證,標(biāo)簽傳達(dá)的數(shù)據(jù)是什么。通信握手過程如圖3-7所示。
圖3-7閱讀器與標(biāo)簽的握手過程
如圖3-7所示,左邊是閱讀器天線(代表Reader),右邊是電子標(biāo)簽(代表Tag)。在Gen2協(xié)議中每次的通信握手都是由閱讀器發(fā)起的,閱讀器通過清點命令(Query及其輔助命令QueryAjust QueryRep)獲得標(biāo)簽的句柄(16B的隨機(jī)數(shù),代表標(biāo)簽在此次清點過程中的身份)。閱讀器通過獲得的句柄,發(fā)送ACK命令(Acknowledge),可以理解為通過“暗號”來獲取標(biāo)簽的電子編碼信息;標(biāo)簽返回自己的PC+EPC+CRC信息給閱讀器,其中PC是決定EPC長度的標(biāo)識段,EPC是閱讀器需要獲得的電子編碼信息,CRC是做校驗用的。此時閱讀器已經(jīng)獲取了所需要的標(biāo)簽EPC數(shù)據(jù),如果閱讀器需要對標(biāo)簽的其它數(shù)據(jù)區(qū)進(jìn)行操作,需要再要一次句柄Req_RN(Request Random Number),意思就是再做一次身份認(rèn)證,標(biāo)簽會再給一個RN16,隨后閱讀器可以繼續(xù)發(fā)送其他指令,如讀、寫、鎖、殺??梢钥吹玫匠哳lRFID的整個通信過程非常簡單,相比Wi-Fi等其他無線通信技術(shù)的數(shù)據(jù)認(rèn)證要簡單很多,其特點就是快速簡單。在多數(shù)的應(yīng)用中,只需要完成快速的EPC獲取,一般不需要圖3-7中最后那一次握手(Req_RN)。在實際場景中,閱讀器可以實現(xiàn)每秒幾十個甚至上百個標(biāo)簽的快速識別。圖3-8和圖3-9為單標(biāo)簽的通信握手過程和多標(biāo)簽抗沖突的標(biāo)簽通信握手過程。
圖3-8單標(biāo)簽通信握手
圖3-9多標(biāo)簽通信握手
關(guān)于數(shù)據(jù)區(qū)的處理本小節(jié)不做詳細(xì)講解,4.3.2節(jié)會做詳細(xì)講解。
閱讀器識別標(biāo)簽EPC所需要的時間是應(yīng)用項目中大家最關(guān)注的問題。項目中遇到物體快速通過的場景,這時要考慮讀取一個標(biāo)簽所需的時間。這個時間是由兩部分決定的:超高頻 RFID空中接口的通信時間及閱讀器的通信時間(如網(wǎng)口,串口的通信時間以及閱讀器固件的通信機(jī)制,是實時返回還是定時返回等)。一般情況下空中接口部分讀取一個標(biāo)簽的EPC數(shù)據(jù)的時間不會超過5ms(多標(biāo)簽情況下),當(dāng)然這個讀取時間與BLF等眾多空口參數(shù)相關(guān),由于多數(shù)情況下選擇的BLF通信頻率會超過160kHz,具體的時間戳的計算方法這里就不詳細(xì)介紹了。5ms這個數(shù)字非常重要,讀者可以通過加上通信時間計算出系統(tǒng)的最快相應(yīng)時間,從而優(yōu)化閱讀器的工作占空比等參數(shù)。
03、會話層
超高頻RFID空口協(xié)議中,最難理解的參數(shù)是Session(翻譯為會話層)。如表3-4所示,Session共有:S0、S1、S2、S3這四種會話層。(Session SL與這幾個不同,不放在一起介紹)。
Session | 標(biāo)簽進(jìn)入輻射區(qū)域 | 標(biāo)簽離開輻射區(qū)域 |
S0 | 無限時間 | 持續(xù) |
S1 | 500ms – 5s | 500ms – 5s |
S2 | 無限時間 | >2s |
S3 | 無限時間 | >2s |
表3-4Session 會話層定義
Session描述的是標(biāo)簽的狀態(tài)跳轉(zhuǎn)的條件,其目的是把場內(nèi)的標(biāo)簽全部清點完成,針對不同的應(yīng)用場景采用不同的清點方式,而選擇不同的Session。
每個標(biāo)簽都有4個會話層,每個會話層都有A和B兩個狀態(tài),默認(rèn)的初始狀態(tài)為A,當(dāng)標(biāo)簽被清點后變成狀態(tài)B,當(dāng)標(biāo)簽離開輻射區(qū)域或到達(dá)指定時間后狀態(tài)跳轉(zhuǎn)回A。下面通過一個挑夫數(shù)桃子的例子來解釋Session的意義。假定所有的超高頻RFID標(biāo)簽都是桃子,且有四個挑夫分別是S0到S3,每個挑夫都有兩個框子,分別是A筐和B框,每個桃子只可能放在其中的一個筐內(nèi)。默認(rèn)狀態(tài)為A筐,可以理解為,無論選哪個挑夫任何初始的情況都是所有桃子在A筐中。當(dāng)一個標(biāo)簽讀取后(ACK應(yīng)答后)就會從A筐放入B筐,此處討論Session的不同,就是討論的幾個挑夫的不同特點。
第一個挑夫(S0)一旦離開筐子(閱讀器場強(qiáng)離開標(biāo)簽),所有B筐內(nèi)的桃子(標(biāo)簽)就都立刻(0秒的時間響應(yīng))跳回A筐;如果挑夫不離開筐子(標(biāo)簽一直在場內(nèi)),則桃子一直留在B筐,當(dāng)挑夫在A筐內(nèi)找不到新的桃子則說明所有的桃子都在B筐中;
第二個挑夫(S1)把桃子(標(biāo)簽)從A筐放入B筐后開始計時,500mS到5S后自動跳回A筐中,無論挑夫在不在筐邊,這個跳回操作都會發(fā)生;
第三個挑夫(S2)和第四個挑夫(S3)的特點是,當(dāng)離開筐(標(biāo)簽離開場強(qiáng))后開始計時,超過2秒后,桃子回到A筐內(nèi)。
不同Session中的跳轉(zhuǎn)機(jī)制直接影響到標(biāo)簽的清點效率。對于不同的應(yīng)用場景需要選擇不同的Session,這樣才能達(dá)到Gen2協(xié)議的最佳效率。關(guān)于Session的場景使用推薦如下:
S0:應(yīng)用于快速識別場景,如智能交通生產(chǎn)自動化的快速流水線等,主要針對于單個標(biāo)簽或少量標(biāo)簽的應(yīng)用。
S1:應(yīng)用于有一定批量多標(biāo)簽場景,如一箱服裝,幾個小的貨架管理等。
S2、S3:應(yīng)用于大量標(biāo)簽場景,如倉庫管理等。
在實際的應(yīng)用場景中,選擇合適的Session進(jìn)行操作,才可事半功倍。不同的芯片Session的長度也不同,實際使用中必須了解清楚。比如Alien的H3芯片中S2的時間長達(dá)200秒左右。如果一直用S2來讀標(biāo)簽,等了一分鐘再讀標(biāo)簽發(fā)現(xiàn)標(biāo)簽的狀態(tài)還在B沒有回來,如果不會使用Select命令讓標(biāo)簽從B翻轉(zhuǎn)到A,只能等待200秒后再做下一次盤點。
04、Select和Mask命令的妙用
Select命令,字面意思是選擇,即在大量的標(biāo)簽中選擇出所需要特定標(biāo)簽進(jìn)行操作。Select命令主要有兩個功能,其一是針對3.2.3節(jié)中Session會話層的A和B進(jìn)行翻轉(zhuǎn)設(shè)置,另外一個功能就是針對特定類別標(biāo)簽的選擇操作。
在前面的內(nèi)容中,我們已經(jīng)了解了超高頻 RFID的協(xié)議可以支持大批量的標(biāo)簽識別,但是如果標(biāo)簽的數(shù)量非常巨大,閱讀器工作量效率會變得非常低。例如在一個倉庫中有幾萬件不同貨物,貨物上裝有超高頻RFID標(biāo)簽,我們需要找到一個特定的貨物,并把該物品對應(yīng)標(biāo)簽的數(shù)據(jù)區(qū)進(jìn)行更改。試想一下,當(dāng)你在倉庫里面打開閱讀器對標(biāo)簽進(jìn)行盤點的時候,成百上千的標(biāo)簽都會返回自己的EPC,應(yīng)用軟件通過EPC號碼判斷是否為所找的物品。按照這種方式需要盤點整個倉庫才有可能完成任務(wù)。由于多標(biāo)簽的讀取需要時間,倉庫管理員需要慢慢對每一個區(qū)域進(jìn)行詳細(xì)的盤點,人力和時間的消耗都非常的大。為了解決這個問題,Gen2協(xié)議設(shè)計了Select命令,這個命令的作用是只讓符合特定規(guī)則的一個或一類標(biāo)簽返回數(shù)據(jù)而其它不符合規(guī)則的標(biāo)簽完全不響應(yīng)閱讀器命令,這樣的操作方式可以大大提高識別效率。當(dāng)然Select命令還有許多作用,比如多標(biāo)簽的防沖突識別。
如表3-5所示,為Select命令字包含內(nèi)容。標(biāo)簽的選擇是通過Select命令和Query命令共同實現(xiàn)的,先發(fā)Select命令再發(fā)Query命令。默認(rèn)情況下Query命令的參數(shù)為Sel=00、Target=0。
表3-5Select 命令內(nèi)容
如表3-5Select 命令內(nèi)容所示:
Select的命令字Command是1010,是一個非常短的命令字,說明Select命令是常用命令。
Target是針對Session會話層來描述的,指出Select命令針對的是哪個會話層(S0~S3),在尋找少量標(biāo)簽的時候可以使用任意的會話層。在Target中還存在一個會話層SL,其作用是對標(biāo)簽的狀態(tài)A和B進(jìn)行翻轉(zhuǎn)。
Action是執(zhí)行、動作的意思,其功能是通過SL對標(biāo)簽狀態(tài)A和B進(jìn)行翻轉(zhuǎn)。根據(jù)標(biāo)簽的數(shù)據(jù)是否匹配,共有8種不同的翻轉(zhuǎn)情況,如表3-6所示。可能很多讀者不理解為什么只是翻轉(zhuǎn)A和B有這么多的可能性呢?這是Gen2協(xié)議的發(fā)明人考慮到了一些復(fù)雜的應(yīng)用場景,并通過Select指令為之提供更高效的多標(biāo)簽解決方案。最常見的Action配置參數(shù)為000,它的功能是讓匹配(Matching)的標(biāo)簽變成A狀態(tài),不匹配(Non-Matching)的標(biāo)簽跳轉(zhuǎn)到B狀態(tài)。當(dāng)閱讀器在多標(biāo)簽盤點時使用該命令,則符合條件的標(biāo)簽響應(yīng)閱讀器命令,不符合條件的標(biāo)簽不做任何應(yīng)答。
表3-6Select 命令中Action內(nèi)容
Action | 匹配 | 不匹配 |
000 | 保持SL或盤點→A | 不保持SL或盤點→B |
001 | 保持SL或盤點→A | 無動作 |
010 | 無動作 | 不保持SL或盤點→B |
011 | 取消SL或(A→B,B→A) | 無動作 |
100 | 不保持SL或盤點→B | 保持SL或盤點→A |
101 | 不保持SL或盤點→B | 無動作 |
110 | 無動作 | 保持SL或盤點→A |
111 | 無動作 | 取消SL或(A→B,B→A) |
MemBank是英文Memory Bank的簡寫,意思為數(shù)據(jù)存儲區(qū),在Select命令中指對比的數(shù)據(jù)區(qū)。根據(jù)EPC協(xié)議規(guī)范,其數(shù)據(jù)區(qū)一共有四個,分別是密碼區(qū)(RFU)、電子編碼區(qū)(EPC)、廠商編碼區(qū)(TID)、用戶區(qū)(User)。
Pointer是指選擇對比的起始地址;Length是指選擇對比的數(shù)據(jù)長度;Mask是指選擇對比的數(shù)據(jù)內(nèi)容,由于只有8b協(xié)議長度,最多可以Mask的數(shù)據(jù)內(nèi)容為256b。當(dāng)使用Select命令時,需要根據(jù)需求設(shè)置存儲區(qū)、指向起始地址、選擇對比數(shù)據(jù)長度。
例如,在一個倉庫中需要盤點EPC前32b是0A/0B/19/29這組數(shù)據(jù)的所有標(biāo)簽。此時需要使用Select命令,其命令字配置如下:Target=000(S0速度最快);Action=000;MemBank=01;Pointer=2(EPC區(qū)有效其實地址是從2開始);Length=00010000(32b)。通過上述的設(shè)置就可以快速的盤點所這批次的標(biāo)簽了
關(guān)于Select和Mask的使用特別多,本節(jié)再介紹兩種高效的使用方法,給它們命名為“排除異己法”“一休哥數(shù)樹法”。
在一些項目中,有競爭對手把他們的標(biāo)簽攙在了我們的標(biāo)簽中,我們必須將這些標(biāo)簽剔除出去,這時使用“排除異己法”。但是這些標(biāo)簽的EPC數(shù)據(jù)與原有的標(biāo)簽數(shù)據(jù)是一樣的(EPC可以由客戶改寫)??梢酝ㄟ^對廠商編碼區(qū)TID區(qū)進(jìn)行Select-Mask,只留下自己的標(biāo)簽進(jìn)行操作。一般情況下,自己提供的同一批次同種標(biāo)簽的TID為相同字段,即使競爭對手使用同樣型號的芯片也無法替代?!芭懦惣悍ā痹趪鴥?nèi)應(yīng)用非常多,特別是在智能交通領(lǐng)域,一般電子車牌標(biāo)簽的TID都是由芯片廠家訂制的,可以輕松的通過Select命令選擇本項目的標(biāo)簽。
“一休哥數(shù)樹法”主要針對離線環(huán)境中需要對標(biāo)簽的數(shù)據(jù)區(qū)進(jìn)行改寫的案例。由于離線操作沒有數(shù)據(jù)庫的認(rèn)證,對大批量的標(biāo)簽進(jìn)行數(shù)據(jù)改寫,會帶來大量的重復(fù)操作,同時也無法發(fā)現(xiàn)未執(zhí)行改寫操作的標(biāo)簽。因此需要Select-Mask命令的幫助,如果一個標(biāo)簽數(shù)據(jù)區(qū)改寫完成后在它的RFU區(qū)的首位寫入1(默認(rèn)值為0),然后通過Select命令選擇該存儲位置是0的標(biāo)簽繼續(xù)進(jìn)行操作,直到全部的標(biāo)簽的RFU區(qū)的首位寫入1,所有標(biāo)簽停止響應(yīng)(之所以選擇RFU區(qū)的首位,是因為這部分的數(shù)據(jù)一般沒有人使用)。至于為什么叫“一休哥數(shù)樹法”,是小時候看《聰明的一休》得到的創(chuàng)意:一次將軍出了一個難題,要一休把樹林里有多少棵樹統(tǒng)計出來,一休的方法就是用繩子系在樹上,把樹林中的樹都系上繩子,最后計算繩子的數(shù)量就知道有多少棵樹,與這個方法異曲同工。