關(guān)于RFID EPC Class1 Gen2電子標(biāo)簽的那些命令
符合EPC Class1 Gen2(簡(jiǎn)稱G2)協(xié)議V109版的電子標(biāo)簽(Tag)和讀寫(xiě)器(Reader)應(yīng)該具有下述的特性:
一、標(biāo)簽存儲(chǔ)器分區(qū)
Tag memory分為Reserved(保留),EPC(電子產(chǎn)品代碼),TID(標(biāo)簽識(shí)別號(hào))和User(用戶)四個(gè)獨(dú)立的Bank(存儲(chǔ)區(qū)塊)。
Reserved:存儲(chǔ)Kill Password(滅活口令)和Access Password(訪問(wèn)口令)。
EPC:存儲(chǔ)EPC號(hào)碼等。
TID:存儲(chǔ)標(biāo)簽識(shí)別號(hào)碼, 每個(gè)TID號(hào)碼應(yīng)該是唯一的。
User:存儲(chǔ)用戶定義的數(shù)據(jù)。
此外,還有各區(qū)塊的Lock(鎖定)狀態(tài)位等用到的也是存儲(chǔ)性質(zhì)的單元。
二、標(biāo)簽的狀態(tài)
收到連續(xù)波(CW)照射上電(Power-up)以后, 標(biāo)簽可處于Ready(準(zhǔn)備), Arbitrate(裁斷), Reply(回令), Acknowledged(應(yīng)答), Open(公開(kāi)), Secured(保護(hù)), Killed(滅活)七種狀態(tài)之一。
Ready狀態(tài)是未被滅活的標(biāo)簽上電以后,開(kāi)始所處的狀態(tài),準(zhǔn)備響應(yīng)命令。
Arbitrate狀態(tài)主要是為等待響應(yīng)Query等命令。
響應(yīng)Query后,進(jìn)入Reply狀態(tài),進(jìn)一步將響應(yīng)ACK命令就可以發(fā)回EPC號(hào)碼。
發(fā)回EPC號(hào)碼后,進(jìn)入Acknowledged狀態(tài),進(jìn)一步可以響應(yīng)Req_RN命令。
Access Password不為0才可以進(jìn)入Open狀態(tài),在此進(jìn)行讀、寫(xiě)操作。
已知Access Password才可能進(jìn)入Secured狀態(tài),進(jìn)行讀、寫(xiě)、鎖定等操作。
進(jìn)入到Killed狀態(tài)的標(biāo)簽將保持狀態(tài)不變,永遠(yuǎn)不會(huì)產(chǎn)生調(diào)制信號(hào)以激活射頻場(chǎng),從而永久失效。被滅活的標(biāo)簽在所有環(huán)境中均應(yīng)保持Killed狀態(tài),上電即進(jìn)入滅活狀態(tài),滅活操作不可逆轉(zhuǎn)。
要使標(biāo)簽進(jìn)入某一狀態(tài)一般需要適當(dāng)次序的一組合法命令,反過(guò)來(lái)各命令也只能當(dāng)標(biāo)簽在適當(dāng)?shù)臓顟B(tài)下才能有效,標(biāo)簽響應(yīng)命令后也會(huì)轉(zhuǎn)到其他狀態(tài)。
三、命令分類
從命令體系架構(gòu)和擴(kuò)展性角度,分為Mandatory(必備的),Optional(可選的),Proprietary(專有的)和Custom(定制的)四類。
從使用功能上看,分為標(biāo)簽Select(選取),Inventory(盤(pán)點(diǎn))和Access(存取)命令三類,此外還為了以后命令擴(kuò)展,預(yù)留了長(zhǎng)短不同的編碼待用。
四、必備的(Mandatory)命令
符合G2協(xié)議的標(biāo)簽和讀寫(xiě)器,應(yīng)該支持必備的命令有十一條:
Select(選擇)
Query(查詢)
QueryAdjust(調(diào)節(jié)查詢)
QueryRep(重復(fù)查詢)
ACK(EPC答復(fù))
NAK(轉(zhuǎn)向裁斷)
Req_RN(隨機(jī)數(shù)請(qǐng)求)
Read(讀)
Write(寫(xiě))
Kill(滅活)
Lock(鎖定)
五、可選的(Optional)命令
符合G2協(xié)議的標(biāo)簽和讀寫(xiě)器,可選的命令有三條:Access(訪問(wèn)),BlockWrite(塊寫(xiě)),BlockErase(塊擦除)。
六、專有的(Proprietary)命令
專有的命令一般用于制造目的,如標(biāo)簽內(nèi)部測(cè)試等,標(biāo)簽出廠后這樣的命令應(yīng)該永久失效。
七、定制的(Custom)命令
可以是制造商自己定義而開(kāi)放給用戶使用的命令,如Philips公司提供有:BlockLock(塊鎖定),ChangeEAS(改EAS狀態(tài)),EASAlarm(EAS報(bào)警)等命令(EAS是商品電子防盜竊系統(tǒng)Electronic Article Surveillance的縮寫(xiě))。
八、從功能角度: 選取(Select)類命令
僅有一條:Select,是必備的。標(biāo)簽有多種屬性,基于用戶設(shè)定的標(biāo)準(zhǔn)和策略,使用Select命令,改變某些屬性和標(biāo)志人為選擇或圈定了一個(gè)特定的標(biāo)簽群,可以只對(duì)它們進(jìn)行盤(pán)點(diǎn)識(shí)別或存取操作,這樣有利于減少?zèng)_突和重復(fù)識(shí)別,加快識(shí)別速度。
九、從功能角度: 盤(pán)點(diǎn)(Inventory)類命令
有五條:Query,QueryAdjust,QueryRep,ACK,NAK,都是必備的。
1、標(biāo)簽收到有效Query命令后,符合設(shè)定標(biāo)準(zhǔn)被選擇的每個(gè)標(biāo)簽產(chǎn)生一個(gè)隨機(jī)數(shù)(類似擲骰子),而隨機(jī)數(shù)為零的每個(gè)標(biāo)簽,都將產(chǎn)生回響(發(fā)回臨時(shí)口令RN16, 一個(gè)16-bit隨機(jī)數(shù)),并轉(zhuǎn)移到Reply狀態(tài);符合另一些條件的標(biāo)簽會(huì)改變某些屬性和標(biāo)志,從而退出上述標(biāo)簽群,有利于減少重復(fù)識(shí)別。
2、標(biāo)簽收到有效QueryAdjust命令后,各標(biāo)簽分別新產(chǎn)生一個(gè)隨機(jī)數(shù)(象重?cái)S骰子),其他同Query。
3、標(biāo)簽收到有效QueryRep命令后,只對(duì)標(biāo)簽群中的每個(gè)標(biāo)簽原有的隨機(jī)數(shù)減一,其他同Query。
4、僅單一化的標(biāo)簽才能收到有效ACK命令(使用上述RN16,或句柄Handle,一個(gè)臨時(shí)代表標(biāo)簽身份的16-bit隨機(jī)數(shù),此為一種安全機(jī)制),收到后發(fā)回EPC區(qū)中的內(nèi)容,EPC協(xié)議最基本的功能。
5、標(biāo)簽收到有效NAK命令后,除了處于Ready、Killed的保持原狀態(tài)外, 其它情況都轉(zhuǎn)到Arbitrate狀態(tài)。
十、從功能角度: 存取(Access)類命令
有五條必備的:Req_RN,Read,Write,Kill,Lock,和三條可選的: Access,BlockWrite,BlockErase。
1、標(biāo)簽收到有效Req_RN(with RN16 or Handle)命令后,發(fā)回句柄,或新的RN16,視狀態(tài)而不同。
2、標(biāo)簽收到有效Read(with Handle)命令后,發(fā)回出錯(cuò)類型代碼,或所要求區(qū)塊的內(nèi)容和句柄。
3、標(biāo)簽收到有效Write(with RN16 & Handle)命令后,發(fā)回出錯(cuò)類型代碼,或?qū)懗晒桶l(fā)回句柄。
4、標(biāo)簽收到有效Kill(with Kill Password, RN16 & Handle)命令后,發(fā)回出錯(cuò)類型代碼,或滅活成功就發(fā)回句柄。
5、標(biāo)簽收到有效Lock(with Handle)命令后,發(fā)回出錯(cuò)類型代碼,或鎖定成功就發(fā)回句柄。
6、標(biāo)簽收到有效Access(with Access Password,RN16 & Handle)命令后,發(fā)回句柄。
7、標(biāo)簽收到有效BlockWrite(with Handle)命令后,發(fā)回出錯(cuò)類型代碼,或塊寫(xiě)成功就發(fā)回句柄。
8、標(biāo)簽收到有效BlockErase(with Handle)命令后,發(fā)回出錯(cuò)類型代碼,或塊擦除成功就發(fā)回句柄。
十一、G2用什么機(jī)制避免沖突
上述解答中提到,當(dāng)不止一個(gè)隨機(jī)數(shù)為零的標(biāo)簽各發(fā)回不同的RN16時(shí),它們?cè)诮邮仗炀€上會(huì)出現(xiàn)不同RN16的波形迭加,也即所謂沖突(collisions),從而不能正確解碼。有多種抗沖突機(jī)制可以避免波形迭加變形,例如設(shè)法(時(shí)分)使某時(shí)刻只有一個(gè)標(biāo)簽“發(fā)言”,接著再單一化處理,就能識(shí)別讀寫(xiě)多張超高頻RFID標(biāo)簽中的每一張標(biāo)簽。
上述三條Q字頭的命令體現(xiàn)了G2的抗沖突機(jī)制:隨機(jī)數(shù)為零的標(biāo)簽才能發(fā)回RN16,若同時(shí)有多個(gè)標(biāo)簽隨機(jī)數(shù)為零,而不能正確解碼,就策略性地重發(fā)Q字頭的命令或組合給被選擇的標(biāo)簽群,直到能正確解碼。
十二、標(biāo)簽識(shí)別號(hào)(TID)唯一性如何達(dá)成
標(biāo)簽識(shí)別號(hào)TID(Tag identifier)是標(biāo)簽之間身份區(qū)別的標(biāo)志(可以類比于鈔票的編號(hào))。 從安全和防偽角度考慮,任何兩張G2標(biāo)簽不應(yīng)該完全相同,標(biāo)簽應(yīng)該具有唯一性。標(biāo)簽四個(gè)存儲(chǔ)區(qū)塊各有用處,出廠后有的還能隨時(shí)改寫(xiě),只有TID應(yīng)該也可以擔(dān)當(dāng)此任,所以標(biāo)簽的TID應(yīng)該具有唯一性。
出廠前G2芯片的生產(chǎn)廠家應(yīng)使用Lock命令或其他手段作用于TID,使之永久鎖定,并且生產(chǎn)廠家或有關(guān)組織應(yīng)該保證每個(gè)G2芯片適當(dāng)長(zhǎng)度的TID是唯一的,任何情況下不會(huì)有第二個(gè)同樣的TID,即使某G2標(biāo)簽處于Killed狀態(tài)不會(huì)被激活再使用,它的TID(仍在此標(biāo)簽中)也不會(huì)出現(xiàn)在另一張G2標(biāo)簽中。
這樣由于TID是唯一的,雖然標(biāo)簽上的EPC碼等可以被復(fù)制到另一張標(biāo)簽上去,也能通過(guò)標(biāo)簽上的TID加以區(qū)分,從而正本清源。此種架構(gòu)和方法簡(jiǎn)單可行,但要注意保證唯一性的邏輯鏈。
V109版的G2協(xié)議對(duì)TID的規(guī)定,必須的僅有32-bit(包括8-bit allocation class identifier,12-bit tag mask-designer identifier,12-bit tag model number),對(duì)更多位的bit,如SNR(serial number序列號(hào))是Tags may contain而非should。但由于EPC號(hào)碼被設(shè)計(jì)成會(huì)用到區(qū)分單件商品上,32-bit大概是不夠用的,應(yīng)該具有SNR。
十三、G2協(xié)議中的滅活(Kill)命令
G2協(xié)議設(shè)置了Kill命令,并且用32-bit的密碼來(lái)控制,有效使用Kill命令后標(biāo)簽永遠(yuǎn)不會(huì)產(chǎn)生調(diào)制信號(hào)以激活射頻場(chǎng),從而永久失效。但原來(lái)的數(shù)據(jù)可能還在標(biāo)簽中,若想讀取它們并非完全不可能,可以考慮改善Kill命令的含義--附帶擦除這些數(shù)據(jù)。
此外在一定時(shí)期內(nèi),由于G2標(biāo)簽使用的成本或其他原因,會(huì)考慮到兼顧標(biāo)簽?zāi)芑厥罩貜?fù)使用的情況(如用戶要周轉(zhuǎn)使用帶標(biāo)簽的托盤(pán)、箱子,內(nèi)容物更換后相應(yīng)的EPC號(hào)碼、User區(qū)內(nèi)容要改寫(xiě); 更換或重新貼裝標(biāo)簽所費(fèi)不菲、不方便等等),需要即使被永久鎖定了的標(biāo)簽內(nèi)容也能被改寫(xiě)的命令,因?yàn)椴煌i定狀態(tài)的影響,僅用Write或BlockWrite,BlockErase命令,不一定能改寫(xiě)EPC號(hào)碼、User內(nèi)容或者Password(如標(biāo)簽的EPC號(hào)碼被鎖定從而不能被改寫(xiě),或未被鎖定但忘了這個(gè)標(biāo)簽的Access Password而不能去改寫(xiě)EPC號(hào)碼)。這樣就產(chǎn)生了一個(gè)需求,需要一個(gè)簡(jiǎn)單明了的Erase命令--除了TID區(qū)及其Lock狀態(tài)位(標(biāo)簽出廠后TID不能被改寫(xiě)),其他EPC號(hào)碼、Reserved區(qū)、User區(qū)的內(nèi)容和其它的Lock狀態(tài)位,即使是永久鎖定了的,也將全部被擦除以備重寫(xiě)。
比較起來(lái),改善的Kill命令和增加的Erase命令功能基本相同(包括應(yīng)該都使用Kill Password),區(qū)別僅在于前者Kill命令使不產(chǎn)生調(diào)制信號(hào),這樣也可以統(tǒng)一歸到由Kill命令所帶參數(shù)RFU的不同值來(lái)考慮。
十四、標(biāo)簽或讀寫(xiě)器不支持可選的(Access)等命令怎么辦?
若不支持BlockWrite或BlockErase命令,完全可以由Write命令(一次寫(xiě)16-bit)多使用幾次代替,因?yàn)椴脸梢哉J(rèn)為是寫(xiě)0,前者塊寫(xiě)、塊擦除的塊是幾倍的16-bit,其他使用條件類似。
若不支持Access命令,只有Access Password為0,才可進(jìn)入Secured狀態(tài),才能使用Lock命令。在Open或Secured狀態(tài)里都可以改變Access Password,之后再使用Lock命令鎖定或永久鎖定Access Password的話(pwd-read/write位為1,permalock位為0或1,參考附表),則標(biāo)簽再也進(jìn)不了Secured狀態(tài)了,也再不能使用Lock命令去改變?nèi)魏捂i定狀態(tài)了。
若支持Access命令,才可能使用相應(yīng)的命令自由進(jìn)入全部各種狀態(tài),除了標(biāo)簽被永久鎖定或永久不鎖而拒絕執(zhí)行某些命令和處于Killed狀態(tài)以外,也多能有效執(zhí)行各個(gè)命令。