第3章

超高频RFID标准及规范 



第3章超高频RFID标准及规范 
本章旨在让读者掌握超高频RFID的核心协议EPC C1 Gen2协议(ISO/IEC 180006C),主要针对协议中一些常见的问题以及一些常见的技术术语进行讲解。对于读者最关注的多标签防碰撞算法,3.3节将进行分析和讲解,其中3.3.2节的清点率是笔者首先发现的,并应用于阅读器的应用中,对提高工程中多标签读取有一定的指导意义。3.4节为我国自主知识产权的超高频RFID协议。本章节虽然讲述的是协议,但绝对不是照抄协议条目,而是针对每一个协议内容与实际应用结合,为从业人员深入了解产品选型和项目实施提供参考依据。


视频讲解



3.1超高频 RFID无线电射频标准
3.1.1RFID与无线电频谱

谈到超高频射频识别(UHF RFID)技术,大家经常会遇到协议和工作频率的问题,如中国频率是多少?欧洲频率是多少?为了解答这些问题,我们先从全频电波频谱讲起。图31为无线电波的全频段分类。 
图31中的各个频段内容比较生动,可以很直观地了解从长波(Longwaves)、广播(Radio)、电视(TV)到微波频段,再到红外线、可见光、紫外线和X射线的频谱和波长。这里我们关注的协议是840~960MHz频段的EPC C1 Gen2(ISO 180006C)部分。
3.1.2全球超高频RFID的无线电频谱规范
超高频RFID在各个国家和地区频段分配是不同的,其射频输出及发射规范也各不相同,如图32所示为全球各区域的频率规划。
从世界各地的超高频 RFID频谱分布看,除了中国的840~845MHz频段外,其他地区的频段都在EPC C1 G2的860~960MHz范围中。中国的超高频有两个频段: 第一个频段840~845MHz(简称China1)全球支持的阅读器很少,一般只有本土的特殊项目才会使用这个频段。一般情况下,中国超高频 RFID频段常指920~925MHz(简称China2)。如图33所示,从频带宽度来分析,美国(北美)频段最宽,中国、新加坡、韩国的频段都在美国频段范围内。



图31全频电波频谱




图32世界各地超高频频率分布图



可见,美国在超高频 RFID投入的力量是非常大的,这也同时印证了北美的超高频市场份额最大。从这个频段也可以理解到现阶段的超高频 RFID市场已经是一个全球市场,在产品的设计和生产上一定要考虑全球化的因素。比如一款超高频 RFID标签的设计,其具有100MHz带宽,以支持860MHz附近的欧洲频段,同时也要支持美国和日本频段,这也给设计和开发带来了更多的挑战和机遇。


图33世界超高频常见地区频带范围图 


在讨论各个国家和地区的无线电规范时,除了要关注其工作带宽(Span),还要考虑其他的一些参数,包括中心频率(Midband Frequency)、频道数量(Channel)、全向辐射功率(EIRP)、频道宽度(Channel BW)、频带抗干扰特点(Technique),如表31所示。


表31世界超高频RFID常见地区标准指标



区域中心频率
/MHz带宽/MHz信道数量
(最小)最大辐射功率信道带宽抗干扰技术
特点

北美915902~92825EIRP 4W500kHz跳频

澳大利亚922920~9258EIRP 4W500kHz跳频

新加坡922920~92510EIRP 3.2W
或ERP 2W500kHz跳频

中国922920~92518EIRP 3.2W
或ERP 2W250kHz跳频

韩国912910~91415EIRP 4W150kHz跳频

欧洲/新西兰866865.6~867.610EIRP 3.2W
或ERP 2W200kHzLBT/CCA

表31中最重要的参数是最大辐射功率和带宽。其中,最大辐射功率决定了系统的工作距离,而带宽决定了系统的容量和抗干扰。带宽越大,则具有更多的信道数量,在一个大型仓库中,可以有多台阅读器同时工作,同理,当遇到干扰的时候,可以通过切换工作信道的方式进行规避。频道宽度决定了阅读器与标签通信的最大速率,不过这一点在中国的实际应用场景中一般都直接被忽略。需要注意,根据中国无线电管理委员会规定,信道宽度为250kHz,使用超过250kHz的链路速率是违反国家无线电管理规范的。
3.1.3LBT(先听后说)与跳频技术
1. 全球频谱资源管理规范组织

在3.1.1节的学习中我们发现全球各地的超高频RFID工作频率、带宽都各不相同,这个是由什么决定的?是什么部门制定的?这里先介绍一下各个国家和地区的制定标准的组织: 
 中国制定和管理的部门是国家信息产业部无线电管理委员会,国家无线电监测中心简称MII(Ministry of Information Industry)。在应用中许多项目都要求超高频RFID阅读器通过信息产业部无线电管理委员会认证,就是指的MII认证。
 美国制定和管理的机构是联邦通信委员会简称FCC(Federal Communications Commission),其中FCC Part 15.247内容为超高频RFID相关标准,卖到北美的产品都要通过FCC认证。
 欧洲制定和管理的机构是欧洲电讯标准协会简称ETSI(European Telecommunications Standards Institute),其中ETSI EN 3022081内容为超高频RFID相关标准。
 韩国制定和管理的部门是信息通信部简称MIC(Ministry of Information and Communication)。
关于阅读器的射频指标认证的内容在6.2.2节有详细介绍。
2. LBT/CCA技术
从表31的技术特点一栏可以发现,在频带抗干扰技术上,欧洲和其他地区都是不一样的。欧洲使用的是LBT/CCA技术; 而其他地区使用的是跳频(Frequency Hopping)技术,这些都是由各地区的情况决定的。
LBT/CCA全称为Listen Before Talk/Clear Channel Assessment,中文意思为监听载波/无干扰信道评估。该规范要求阅读器发射信号之前,先监听一下所有的信道,并记录各个信道的使用情况,然后选择空闲的信道进行工作,如图34所示为该规范的示意图。


图34现行欧洲UHF RFID法规 LBT/CCA


从图34中很容易理解LBT/CCA技术,即每次工作前进行监听,之后每间隔4s再次进行监听,其目的是防止意外的信号干扰当前的阅读器工作。这个技术的优点非常明显,每一个新的信道都与之前的互不干扰,缺点是每次工作的时候都要先监听一下,需要消耗一定的时间。当然这与ETSI制定的标准有很大关系,欧洲频段只有2MHz的带宽,分为4个信道。由于信道太少,且是独享带宽,没有办法与其他阅读器系统共用。如果使用跳频的方式,会有很大的冲突机会,整个系统的效率会大大降低,只有选用LBT/CCA技术才能克服信道少的缺点,通过牺牲监听时间来降低阅读器之间的干扰。
3. 跳频技术(Frequency Hopping)
跳频技术被多数地区所采用,这里我们就用中国频率来举例。中国频率有两部分: 920~925MHz和840~845MHz,常用920~925MHz部分。920~925MHz内共有16个信道,每次工作的时候随机选择一个信道,2s内换下一个信道进行工作,如此反复,如图35所示。


图35跳频在中国频率 


在图35中,阅读器开始工作就直接随机选择了一个信道8,0.8s后又换了信道11,再0.3s后跳到了信道2,保证2s内换一下工作信道,防止一个信道被长期占用(在FCC、CE等认证中,这个时间会有不同要求,如在FCC认证中,时间小于400ms)。
跳频工作的最大优点在于较强的抗干扰能力、保密性好和抗多径干扰等。
在美国,超高频 RFID频率902~928MHz共26MHz是工科医用(ISM)频段,因而必须采取跳频扩频的工作模式来抗干扰。
我国超高频RFID设备使用的920~925MHz频段与点对点立体声广播传输业务共用,所以也采用跳频扩频的方式来减少干扰。
最后强调一点,在开发阅读器的时候,绝对不允许出现定频的情况(实验室测试除外)。现在大量的国产阅读器都开发了定频工作模式,而非跳频工作模式,对行业的推广带来了很大的负面影响。一般正规阅读器厂商的设备都是默认跳频工作模式,且无法被强制修改。
3.1.4ERP与EIRP
在表31中的世界各地的最大辐射功率一栏中,存在两个不同的单位: ERP和EIRP。ERP和EIRP与dBi和dBd这两个单位的知识点非常类似,ERP和EIRP的区别为采用不


图36ERP与EIRP示意图


同单位,如图36所示为ERP和EIRP的辐射示意图。
ERP=Effective Radiated Power,等效辐射功率,相对偶极子天线对比,对应dBd。
EIRP=Effective Isotropic Radiated Power,等效“全向辐射功率”,相对全向天线对比,对应dBi。
ERP的物理意义是: 发射机功率乘天线增益,计量单位可以用W、mW、dBW或dBm。表达公式如下: 
ERP=PT ×GT,其中PT为发射功率,GT为天线增益。 
ERP(dBW)=PT(dBW)+GT (dBi)(用dBW表示发射端口功率和天线的联合效果)。
EIRP的原理与ERP相同,EIRP(dBW)=PT(dBW)+GT(dBd)。
这两个单位的关系和换算公式为: 
PEIRP=PERP × 1.64  

或表示为: 
(dB)PEIRP=(dB)PERP+2.14dB
中国标准规定最大辐射功率为2W ERP,可以表示为3.28W EIRP。意思是在中国使用的所有超高频RFID设备发射的信号在空气中最大的等效全向辐射功率为3.28W。
【例31】一个阅读器使用的天线增益为8dBi,不考虑馈线衰减天线失配等因素时,端口允许输出的最大功率是多少? 
解: 理论上阅读器的输出功率为PT=33+2.15-8=27.15dBm。约为0.5W输出功率。
从例31可以看出,最大输出功率只有0.5W,小于一般阅读器的最大输出功率。一个系统中并不是天线增益越大越好,输出功率越大越好,一定要符合国家的标准才行。现阶段国内的无线电监管还不严格,尤其是在一些特殊应用中,存在设备超标发射,最终输出功率超过2W ERP规范。相信今后RFID项目越来越多,若大家都不遵守规范,相互干扰会越来越严重。因此各个阅读器厂商和项目集成商需要严格遵守国家和地方的无线电规范。
谈到最大发射功率问题,还有一个一直以来备受关注的问题,那就是标签能工作多远的问题。相信这个问题一定一直困扰着很多人,因为大家所听到的结果各异,标准也不同。尤其是针对固定式阅读器,自身没有天线,那么选择不同的天线,其对外的辐射功率就不同,针对不同的标签的工作距离也就不同。所以针对阅读器的工作距离,本书给出一种统一的评判标准。同样,标签的工作距离也是按照这个方法来计算出来。根据式(214): 

Rtag=λ4πPtGrGtPChipth·ηmatching·ηantenna·ηpolarisation合并Pt和Gr,变换可得:  


Rtag=λ4πPEIRP·GtagPChipth·ηmatching·ηantenna·ηpolarisation
(31)

其中,已知在中国PEIRP=3.2W,一般的偶极子标签增益Gtag=1.64(2dBi),芯片的灵敏度为PChipth=0.0158mW(-18dBm),标签芯片与天线的匹配效率ηmatching≈0.8(一般设计得比较好的天线可以达到0.8左右),标签天线的辐射效率为ηantenna=0.5(偶极子天线的辐射效率为0.5),标签天线的极化损耗效率为ηpolarisation=1(针对阅读器天线为线极化,如阅读器天线为圆极化,则ηpolarisation=0.5)。
将上述参数代入式(31),计算得到:

 Rtag=λ4πPEIRPGtagPChipthηmatchingηantennaηpolarisation

=0.3254×3.14×3.2W×1.6415.8×10-6W×0.8×0.5×1=9.4m

通过上面的计算可知,如果一个标签的工作距离在上述环境中达到了9.4m,说明这个标签是达标的。
同样,将美国PEIRP=4W代入式(31),可以算出美国标准情况下标签的工作距离为: 

Rtag=λ4πPEIRPGtagPChipthηmatchingηantennaηpolarisation

=0.3284×3.14×4W×1.6415.8×10-6W×0.8×0.5×1=10.6m

面对中国客户询问标签或阅读器的工作距离,我们的回答是9.4m; 面对美国客户我们就可以回答标签或阅读器的工作距离是10.6m,当然上述前提条件要说清楚。这个计算数据也是理论值,只有在完全没有反射的全波暗室环境中测试才会出现这个准确的工作距离。在普通的测试环境中,由于反射的加强效果,实际测试距离会略大于理论值。
通过对超高频 RFID的无线电标准的学习,大家需要掌握各个国家的标准的差异,无论在技术还是商务层面都是很重要的。另外,面向欧洲的阅读器需要考虑LBT/CCA的设计和操作流程,同样,面向北美和中国的供应商应严格按照协议设置跳频的功能。本节最重要的部分是关于标签工作距离的计算,希望能成为行业的统一标准,为行业的沟通带来便利。

3.2EPC Class1 Gen 2(ISO180006C)空中接口详解
在学习和应用超高频 RFID系统时,会遇到EPC协议中的许多问题,如Query的Q设置问题、BLF选择的问题,本节将会针对大家在项目中经常遇到的空中接口问题进行讲解。在EPC Class1 Generation 2(简称Gen2)协议中有许多参数,本节不会一一介绍,只会对普通超高频 RFID项目中经常遇到的、对项目有指导意义的参数进行详解。


视频讲解



3.2.1EPC C1 Gen 2空中接口数字部分
1. Q(Query)询问命令

Query是询问命令,是针对多标签的快速盘点而产生的,在学习这个知识点之前,首先要了解超高频RFID协议是半双工的通信方式,且是由阅读器先主动发起通信,也就是说,阅读器“说一句”,标签“应答一句”,如此往复。
首先分析Query命令包含哪些内容,如表32所示,其中: 
 Query的命令字为1000,一共4字节,是一个常用的命令字。
 DR是与反向链路频率BLF相关的配置参数。
 M代表编码方式: M=0代表FM0编码; M=1代表Miller2编码; M=10代表Miller4编码; M=11代表Miller8编码。
 Sel表示选择Select命令配置参数,3.2.4节会详细介绍。
 Session表示会话层,3.2.3节会详细介绍。
 Target表示标签的状态,一共有两个状态: A或B。
 Q是Query的简称,是超高频 RFID协议中最重要的参数。


表32Query命令



命令DRMTRextSelSessionTargetQCRC5

#of bits412122145

描述1000
0: DR=8
1: DR=64/3
00: M=1

01: M=2

10: M=4

11: M=80: 无前导
1: 使用前导
00: All

01: All

10: ~SL
11: SL
00: S0
01: S1
10: S2
11: S3
0: A
1: B
0~15

在阅读器发Query命令的时候,会自带一个参数Q,这个Q的大小决定了整个系统的清点率。Q可以设置为0~15的整数,标签收到命令后会从0~2Q随机产生一个数字,作为这个标签的应答槽。阅读器可以通过命令让标签应答槽中的数字不断变小,直到变为0,此时标签会返回一个16位的随机数,与阅读器通信。也可以理解为标签有一个随机响应概率p=12Q,其中Q的最大值为15,如表33所示为Q为0~5时对应的位置计数器大小。


表33Q值与位置计数器



QP=12Q位置计数器

0P=120=111

1P=121=122

2P=122=144

3P=123=188

4P=124=11616

5P=125=13232

Q设得越大,理论上可以清点的标签数量越多。如果标签少,那么Q设置过大效率会降低(随机响应概率p太小导致)。因为Q的最大值为15,槽计数器的最大值为215=32 768,也就是说,一个阅读器可以同时读取32 768个标签。理论上,只要场内标签数量不超过最大值的3倍,就可以相对高效地完全识别,或者理解为在EPC C1 Gen2协议下,一个阅读器可以同时识别的标签数量上限为10万个。当然实际场景中一般只有几个或几十个标签在辐射场内,只有非常特殊的应用场景中会出现超过1000个标签在同一个阅读器的辐射场内,所以Query协议在设定时已经充分考虑到了这些问题。下面通过几个例子来分析Query对应的实际场景: 
 场景1,场内永远只有1个标签,那么Q直接设置成0,以最快速的方式进行读取,如果此时场内有2个标签,则会出现冲突,阅读器会返回冲突告警,说明场内有超过1个标签出现。这种应用在电子票据上很常见,因为电子票据都是一个一个通过的,不应该出现2个标签同时被识别的情况,因此设置Q=0最合适。
 场景2,场内有大量标签(如100个),Q的值如果设定太小,小于7,则会出现大量的冲突。假如设置为5,一共有32个槽计数器,100个标签,那么每个槽里面有3个标签,一定会冲突,读取效率会降低,所以这个情况的Q一般设置为7。
 场景3,场内有10个标签,Q如果设置过大,比如7,会有128个槽计数器,数了128次才清点出来这10个标签,效率太低。
关于Q算法有很多,在3.3节有详细的分析,有兴趣的读者可以详细研读相关内容。
2. 阅读器与标签的握手过程
从应用层看阅读器读取标签,只需要一个简单的盘点命令,很快就收到读取的EPC号码。但是这个读到标签的通信过程并非一次简单的应答,而是通过多次的握手实现的。下面将详细讲解该握手的过程。通过学习这个握手的过程,读者可以了解到阅读器和标签如何进行数据交互和身份认证,标签传达的数据是什么。通信握手过程如图37所示。


图37阅读器与标签的握手过程 


如图37所示,左边是阅读器天线(代表Reader),右边是电子标签(代表Tag)。在Gen2协议中每次的通信握手都是由阅读器发起的,阅读器通过清点命令(Query及其辅助命令 QueryAjust QueryRep)获得标签的句柄(16B的随机数,代表标签在此次清点过程中的身份)。阅读器通过获得的句柄,发送ACK命令(Acknowledge),可以理解为通过“暗号”来获取标签的电子编码信息; 标签返回自己的PC+EPC+CRC信息给阅读器,其中PC是决定EPC长度的标识段,EPC是阅读器需要获得的电子编码信息,CRC是做校验用的。此时阅读器已经获取了所需要的标签EPC数据,如果阅读器需要对标签的其他数据区进行操作,需要再要一次句柄Req_RN(Request Random Number),意思就是再做一次身份认证,标签会再给一个RN16,随后阅读器可以继续发送其他命令,如读、写、锁、杀。可以看到,超高频RFID的整个通信过程非常简单,相比WiFi等其他无线通信技术的数据认证要简单很多,其特点就是快速简单。在多数应用中,只需要完成快速的EPC获取,一般不需要图37中最后那一次握手(Req_RN)。在实际场景中,阅读器可以实现每秒几十个甚至上百个标签的快速识别。图38和图39为单标签的通信握手过程和多标签抗冲突的标签通信握手过程。


图38单标签通信握手 




图39多标签通信握手 


关于数据区的处理本节不做详细讲解,4.3.2节会做详细讲解。
阅读器识别标签EPC所需要的时间是应用项目中大家最关注的问题。若项目中遇到物体快速通过的场景,则要考虑读取一个标签所需的时间。这个时间是由两部分决定的: 超高频 RFID空中接口的通信时间及阅读器的通信时间(如网口,串口的通信时间以及阅读器固件的通信机制,是实时返回还是定时返回等)。一般情况下,空中接口部分读取一个标签的EPC数据的时间不会超过5ms(多标签情况下),当然这个读取时间与BLF等众多空口参数相关,多数情况下选择的BLF通信频率会超过160kHz,具体的时间戳的计算方法这里就不详细介绍了。5ms这个数字非常重要,读者可以通过加上通信时间计算出系统的最快响应时间,从而优化阅读器的工作占空比等参数。
3. Session
超高频RFID空中接口通信协议中,最难理解的参数是Session(翻译为会话层)。如表34所示,Session共有S0、S1、S2、S3这4种会话层。(Session SL与这几个不同,不放在一起介绍。)


表34Session定义




Session标签进入辐射区域标签离开辐射区域

S0无限时间0s
S1500ms~5s
500ms~5s
S2无限时间>2s
S3无限时间>2s

Session描述的是标签的状态跳转的条件,其目的是将场内的标签全部清点完成,针对不同的应用场景采用不同的清点方式,选择不同的Session。
每个标签都有4个会话层,每个会话层都有A和B两个状态,默认的初始状态为A,当标签被清点后变成状态B,当标签离开辐射区域或到达指定时间后状态跳转回A。下面通过一个挑夫数桃子的例子来解释Session的意义。假定所有的超高频RFID标签都是桃子,且有4个挑夫分别为S0~S3,每个挑夫都有两个筐子,分别是A筐和B筐,每个桃子只可能放在其中的一个筐内。默认状态为A筐,可以理解为,无论选哪个挑夫,任何初始的情况都是所有桃子在A筐中。当一个标签读取后(ACK应答后)就会从A筐放入B筐,此处讨论Session的不同,就是讨论的几个挑夫的不同特点。
第一个挑夫(S0)一旦离开筐子(阅读器场强离开标签),所有B筐内的桃子(标签)就都立刻(0s的时间响应)跳回A筐; 如果挑夫不离开筐子(标签一直在场内),则桃子一直留在B筐,当挑夫在A筐内找不到新的桃子,则说明所有的桃子都在B筐中; 
第二个挑夫(S1)把桃子(标签)从A筐放入B筐后开始计时,500ms~5s后自动跳回A筐中,无论挑夫在不在筐边,这个跳回操作都会发生; 
第三个挑夫(S2)和第四个挑夫(S3)的特点是,当离开筐(标签离开场强)后开始计时,超过2s后,桃子回到A筐内。
不同Session中的跳转机制直接影响到标签的清点率。对于不同的应用场景需要选择不同的Session,这样才能达到Gen2协议的最佳效率。关于Session的场景使用推荐如下: 
 S0应用于快速识别场景,如智能交通生产自动化的快速流水线等,主要针对单个标签或少量标签的应用。
 S1应用于有一定批量多标签场景,如一箱服装、几个小的货架管理等。
 S2、S3应用于大量标签场景,如仓库管理等。
在实际应用场景中,选择合适的Session进行操作,才可事半功倍。不同的芯片Session的长度也不同,在实际使用中必须了解清楚。比如Alien Technology的H3芯片中S2的时间长达200s左右。如果一直用S2来读标签,等了一分钟再读标签发现标签的状态还在B没有回来,如果不会使用Select命令让标签从B翻转到A,只能等待200s后再做下一次盘点。
4. Select和 Mask 命令的妙用
Select命令的字面意思是选择,即在大量的标签中选择出所需要特定标签进行操作。Select命令主要有两个功能,其一是针对3.2.3节中Session会话层的A和B进行翻转设置,另一个功能就是针对特定类别标签的选择操作。
在前面的内容中,我们已经了解了超高频 RFID的协议可以支持大批量的标签识别,但是如果标签的数量非常巨大,阅读器工作量效率会变得非常低。例如,在一个仓库中有几万件不同货物,货物上装有超高频RFID标签,我们需要找到一个特定的货物,并把该物品对应标签的数据区进行更改。试想一下,当你在仓库里面打开阅读器对标签进行盘点的时候,成百上千的标签都会返回自己的EPC,应用软件通过EPC号码判断是否为所找的物品。按照这种方式需要盘点整个仓库才有可能完成任务。由于多标签的读取需要时间,仓库管理员需要慢慢对每一个区域进行详细的盘点,人力和时间的消耗都非常大。为了解决这个问题,Gen2协议设计了Select命令,这个命令的作用是只让符合特定规则的一个或一类标签返回数据而其他不符合规则的标签完全不响应阅读器命令,这样的操作方式可以大大提高识别效率。当然Select命令还有许多作用,比如多标签的防冲突识别。
如表35所示,为Select命令字包含的内容。标签的选择是通过Select命令和Query命令共同实现的,先发Select命令再发Query命令。默认情况下Query命令的参数为Sel=00、Target=0。


表35Select命令内容




CommandTargetActionMemBankPointerLengthMaskTruncateCRC16

#of bits4332EBV8Variable116

描述1010000: Inventoried(S0)
001: Inventoried(S1)

010: Inventoried(S2)
011: Inventoried(S3)

100: SL
101: RFU
110: RFU
111: RFU
见表
3600. RFU
01: EPC
10: TID

11: UserMask

起始地址Mask

长度

(bits)Mask
数值
0:关闭
Truncation
1: 启动

Truncation

如表35中Select 命令内容所示: 
Select的命令字Command是1010,这是一个非常短的命令字,说明Select命令是常用命令。
Target是针对Session会话层来描述的,指出Select命令针对的是哪个会话层(S0~S3),在寻找少量标签的时候可以使用任意的会话层。在Target中还存在一个会话层SL,其作用是对标签的状态A和B进行翻转。
Action是执行、动作的意思,其功能是通过SL对标签状态A和B进行翻转。根据标签的数据是否匹配,共有8种不同的翻转情况,如表36所示。可能很多读者不理解为什么只是翻转A和B就有这么多的可能性呢?这是Gen2协议的发明人考虑到了一些复杂的应用场景,并通过Select命令为之提供更高效的多标签解决方案。最常见的Action配置参数为000,它的功能是让匹配(Matching)的标签变成A状态,不匹配(NonMatching)的标签跳转到B状态。当阅读器在多标签盘点时使用该命令,则符合条件的标签响应阅读器命令,不符合条件的标签不做任何应答。


表36Select 命令中Action内容



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的简写,意思为数据存储区,在Select命令中指对比的数据区。根据EPC协议规范,其数据区一共有4个,分别是密码区(RFU)、电子编码区(EPC)、厂商编码区(TID)、用户区(User)。
Pointer是指选择对比的起始地址; Length是指选择对比的数据长度; Mask是指选择对比的数据内容,由于只有8b协议长度,最多可以Mask的数据内容为256b。当使用Select命令时,需要根据需求设置存储区、指向起始地址、选择对比数据长度。
例如,在一个仓库中需要盘点EPC前32b是0A/0B/19/29这组数据的所有标签。此时需要使用Select命令,其命令字配置如下: Target=000(S0速度最快); Action=000; MemBank=01; Pointer=2(EPC区有效地址是从2开始); Length=00010000(32b)。通过上述设置就可以快速地盘点这个批次的所有标签了。
关于Select和Mask的使用特别多,本节再介绍两种高效的使用方法,给它们命名为“排除异己法”和“一休哥数树法”。
在一些项目中,有竞争对手把他们的标签掺在了我们的标签中,我们必须将这些标签剔除出去,这时就使用“排除异己法”。但是这些标签的EPC数据与原有的标签数据是一样的(EPC可以由客户改写)。可以通过对厂商编码区TID区进行SelectMask,只留下自己的标签进行操作。一般情况下,自己提供的同一批次同种标签的TID为相同字段,即使竞争对手使用同样型号的芯片也无法替代。“排除异己法”在国内应用非常多,特别是在智能交通领域,一般电子车牌标签的TID都是由芯片厂家定制的,可以轻松地通过Select命令选择本项目的标签。
“一休哥数树法”主要针对离线环境中需要对标签的数据区进行改写的案例。由于离线操作没有数据库的认证,对大批量的标签进行数据改写,会带来大量的重复操作,同时也无法发现未执行改写操作的标签。因此需要SelectMask命令的帮助,如果一个标签数据区改写完成后在它的RFU区的首位写入1(默认值为0),然后通过Select命令选择该存储位置是0的标签继续进行操作,直到全部标签的RFU区的首位写入1,所有标签停止响应(之所以选择RFU区的首位,是因为这部分的数据一般没有人使用)。至于为什么叫“一休哥数树法”,是小时候看《聪明的一休》得到的创意: 一次将军出了一个难题,要一休把树林里有多少棵树统计出来,一休的方法就是用绳子系在树上,把树林中的树都系上绳子,最后计算绳子的数量就知道有多少棵树,与这个方法异曲同工。
Truncate的使用较为复杂,一般的应用中不启动,应设为0。


视频讲解



3.2.2EPC C1 Gen 2空中接口模拟部分
1. 阅读器的调制方式与编码方式

谈到调制方式,大家一定想到ASK(振幅键控)、FSK(频移键控)和PSK(相移键控)。超高频 RFID的协议中采用的是ASK的调制方式,因为ASK是最简单的调制方式,其解调电路也相对简单。超高频 RFID的电子标签是一个无源标签,通过电磁场获得的能量非常小,无法实现高功耗的ADC解码和DSP数据处理,因此其电路的解调部分要求架构简单、功耗低,采用ASK是最优的选择。
图310给出了阅读器的编码方法——PIE编码。PIE编码是一个非常简单的1比特编码: 0对应的编码是一个标准长度,定义为Tari,在一个Tari周期内翻转一次; 1对应的编码的长度为1.5~2.0Tari。


图310PIE编码图


为什么协议的创造者会选择这么奇怪的编码方式呢?因为标签是一个非常简单的无源器件,其内部不可能有高精度的晶振,且振荡频率不会有几十兆赫兹那么高,那么解码和同步的时候就会存在很大的误差,但如果采用0和1使用不同的长度,标签可以通过用自身的时钟(2MHz左右)计算下一个信号的长度与Tari的区别即可判断这个信号是0还是1。当然这个PIE编码也有它的缺点,就是Tari的长度不能太短,Tari长度太短会引起标签对0和1的判断出错,从而决定了阅读器向标签的通信速率的极限值。
Tari的要求如表37所示,最短长度为6.25μs,最大长度为25μs,其长度误差必须小于1%,且适用于所有的调制方式。1%的误差是对阅读器输出Tari精度的要求,对于一个有源大功率的阅读器来说,这个数字是非常容易实现的。从这些数据可以看出,超高频 RFID的整个系统无论是对标签还是阅读器都要求很低,是一个面向物流的简单通信协议。


表37Tari要求



Tari值Tari值误差容限频谱


6.25μs±1%
12.5μs±1%
25μs±1%PRASK
SSB/DSBASK

经常有读者会询问阅读器向标签的通信速率是多少?这里简单地做一个估算: 假定用最快的速度发送的数据全是0,那么通信速率为1s÷6.25μs=160kbps; 假定用最慢的通信速率发送数据全是1,且符号1的长度为2倍Tari,那么通信速率为1s÷50μs=20kbps。阅读器向标签通信过程中还有前导、校验等,实际的有效通信数据率还要略小一些,不过影响不大,姑且可以认为阅读器的通信速率为20~160kbps。
调制方式SSBASK、DSBASK是通信教科书中常见的调制方式,而PRASK是一种专门为超高频RFID设计的调制方式,主要通过翻转相位来实现调制。如图311(a)所示为传统的ASK(SSB、DSB)波形图; 图311(b)所示为PRASK的波形图,可以看出其相位反转得很快。PIE编码方式是通过高低电平的翻转时间不同实现的,配合上PRASK可以实现更加精确的0和1翻转判断。


图311ASK调制与PRASK调制波形对比


如图312所示,为普通ASK调制与PRASK调制在调制和解调过程中的波形对比。假设阅读器要发送的数据为010,由图可见,两种调制方式的基带波形是完全相同的。阅读器调制后,调制波形变化很大,其中PRASK在低电平位置相位发生明显翻转。标签解调后,0和1的边界在PRASK更为明显。


图312ASK调制与PRASK调制解调波形对比


从这些调制和解调波形可以看出,PRASK在超高频 RFID协议中具有一定的优势。在超高频 RFID刚刚出现时,由于芯片设计不够成熟,一般优先选择PRASK进行编码,以获得更好的效果。但是随着超高频 RFID标签芯片设计技术的不断进步,解码水平不断提高,使用传统的ASK或PRASK调制时解码的精度都不会有太大的差别。
那么在实际项目中选择使用哪个调制方式呢?要解答这个问题,需要从两个方面来对比分析: 一是哪种调制方式标签可以获得更强的能量; 二是哪种调制方式标签可以获得更好的解调。只有标签能获得足够的能量,标签才能够正常工作。刚刚我们分析过现阶段标签解调能力很强,对于两种调制方式性能差别不大。从图311可以看出,PRASK的能量比SSB或DSBASK的能量略强,但是这个差别很小,只有0.1dB左右。通过理论分析SSB比DSB能量小一点,这个差别也非常小。所以读者在使用超高频RFID设备的时候不用太担心调制方式的问题,当遇到标签芯片设计有问题时,可以通过调制方式来弥补。
2. FM0编码和Miller编码
谈到标签的编码方式,可回顾2.1.4节介绍的霍夫曼(Huffman)编码、费诺(Fano)编码、香农费诺埃利斯(ShannonFanoElias)编码、曼彻斯特编码(Manchester Encoding)等多种编码方式。超高频 RFID采用了一种最简单的编码方式FM0编码,如图313(a)所示,0和1的判断依据为在一个时间周期内是否有高低电平翻转(时间周期到达时必须翻转一次不计算在内)。如果有翻转代表的信息为0,没有翻转则代表信息为1,如图313(b)所示FM0编码状态机转换图。如图313(c)所示,阅读器只要监测每一个上升沿和下降沿的时间就可以判断是0还是1,当然这个简单的编码的目的是方便标签的调制。FM0编码还有一个特点,每个周期结束必须做一次翻转,如图313(d)所示的FM0编码时序,同样可以提高系统的容错率,如果标签在系统中出现任何数据问题,阅读器可以及时发现。



图313FM0编码原理图


与此同时,这个特点可以为标签的同步前导提供帮助,如图314所示为标签在FM0编码下的两种不同的前导(两种前导由Query中的TRext决定,作为阅读器同步使用)。其中,有一个符号V。这个V出现前的周期结束时没有进行翻转,与图313(b)中的状态机转换不符,从而这个V就成了一个标志位,标志着后面的数据开始为正式的标签数据的开端。


图314标签FM0情况下的前导


超高频 RFID采用FM0编码最重要的一个原因是冲突检测,当多个标签在同一个时隙发生冲突时,阅读器可以在一个时隙内检测到多个翻转,从而判断出有多个标签发生冲突。发生冲突后将不对数据进行解调,并丢弃数据,继续对下一个时隙的数据进行检测。 
在超高频 RFID的标签编码方式中还有另外一种编码方式名为Miller编码,中文名为米勒编码。Miller编码分为Miller2编码、Miller4编码和Miller8编码,其结构形式和状态机变化如图315所示。


图315标签Miller结构形式和状态机变化


Miller编码的时序图如图316所示,Miller2编码的0和1判断依据为一个周期内其相位是否翻转180°,相位不变表示0,相位翻转180°表示1; Miller4编码和Miller8编码同样是判断时隙中相位是否翻转,只是重复次数不同。从阅读器解调角度,则是判断在一个时隙内,是否存在相位的180°翻转,有相位翻转为1,无相位翻转则为0。


图316Miller编码时序图


经常有读者问,不同的Miller编码就是重复、重复、再重复,这不是浪费时间么,其物理意义在哪里?当然不是浪费时间,其意义在于增强抗干扰能力,提高阅读器的灵敏度。
Miller2编码对比FM0编码相当于通信了2次。在同样噪声环境中,采用Miller2编码灵敏度优于FM0编码。如图317所示,为FM0、Miller2、Miller4和Miller8这4种不同的编码在不同信噪比环境中阅读器的误码率。环境噪声较大时,使用不同的编码方式误码率不同。如在生产制造场景的超高频RFID现场,有大量的噪声干扰,此时的信噪比也许只有5dB,如果采用FM0编码,阅读器的误码率高达10%,系统几乎无法工作; 在同样的环境中采用Miller8编码时,阅读器的误码率仅为0.2%,系统可以稳定工作。当在环境噪声很小,系统信噪比更高的环境中时(信噪比大于15dB),几种编码方式的误码率都很低,从系统稳定工作的角度分析差异不大。


图317不同编码下的信噪比与误码率


通过上述分析可以看出,当环境噪声比较小的时候,选择FM0可以获得更快的标签读取速度; 而在有干扰的环境中一般使用Miller2编码Miller4编码; 在环境非常恶劣的情况才会选择Miller8编码。
许多业内销售人员向客户介绍自家产品性能时,表示其阅读器识别速度可以达到500标签/秒,但这是一个完全没有意义的指标,因为这是他们在实验室中使用FM0编码的测试结果,在具体应用中很少有这么好的信噪比环境。所以大家在使用超高频RFID现场实施的时候一定要了解现场的无线电干扰情况,做相应的测试。尤其是存在大量数据读取和写入的项目,一定要使用Miller4编码或Miller8编码,因为整个通信链路一旦误码,就要重新开始,会浪费更多的时间。
3. BLF标签反向链路频率
反向链路频率(Backscatter Link Frequency,BLF)是标签向阅读器通信的带宽频率,决定了标签的通信速率。如表38所示,为BLF的所有频率列表及其频率的容忍误差。BLF最低的通信带为40kHz,最高通信带为640kHz,且可以在40~640kHz设置任意带宽。


表38BLF频率及其容忍误差



DR: 
参数TRcal/(μs(1±1%)) 
链路频率/kHz
频率误差容
忍度(常温) 
频率误差容
忍度(高低温)
一个反向数据
中的频率漂移 

64/3
33.3640+ / -15%+ / -15%+ / -2.5%
33.3< TRcal < 66.7320 < LF < 640+ / -22%+ / -22%+ / -2.5%
66.7320+ / -10%+ / -15%+ / -2.5%
66.7< TRcal < 83.3256 < LF < 320+ / -12%+ / -15%+ / -2.5%
83.3256+ / -10%+ / -10%+ / -2.5%
83.3< TRcal < 133.3160 < LF < 256+ / -10%+ / -12%+ / -2.5%
133.3< TRcal < 200107 < LF < 160+ / -7%+ / -7%+ / -2.5%
200 < TRcal < 22595 < LF < 107+ / -5%+ / -5%+ / -2.5%

8
17.2< TRcal < 25320 < LF < 465+ / -19%+ / -19%+ / -2.5%
25320+ / -10%+ / -15%+ / -2.5%
25 < TRcal < 31.25256 < LF < 320+ / -12%+ / -15%+ / -2.5%
31.25256+ / -10%+ / -10%+ / -2.5%
31.25< TRcal < 50160 < LF < 256+ / -10%+ / -10%+ / -2.5%
50160+ / -7%+ / -7%+ / -2.5%
50 < TRcal < 75107 < LF < 160+ / -7%+ / -7%+ / -2.5%
75 < TRcal < 20040 < LF< 107+ / -4%+ / -4%+ / -2.5%

这里说的是反向链路频率BLF(kHz)是通信带宽并非通信数据率(Data rate)。数据率是与编码方式相关的,如果选用FM0编码,其通信数据率就等于通信带宽,当选用Miller2编码时,其通信数据率为BLF的一半; 同理Miller4编码和Miller8编码为BLF的四分之一和八分之一,如表39所示。


表39数据率与编码关系图



周期副载波符号数量 调 制 类 型 数据率/kbps

1FM0LF
2MillerLF/2
4MillerLF/4
8MillerLF/8
高速率的BLF与低速率的BLF对比优势是传输的数据速率高,缺点是噪声带宽较大,对阅读器灵敏度要求较高。当阅读器灵敏度较差或环境噪声较大的环境中,高速率的BLF会因为系统信噪比不足引起误码率上升,从而引起系统的识别率下降。此时调整为较低的传输速率则会有更好的识别效果。
灵敏度差异可以通过实际的传输速率的比值计算。假设两个标签A、B分别工作在: Miller 4 BLF=160kHz和FM0 BLF=640kH参数下,则两个标签的通信速率分别为: DRA=160/4=40kbps;  DRB=640kbps。 
ΔDR=640kbps40kbps=16=12dB, 通过计算可知标签A比标签B的抗噪能力好12dB,对于阅读器有更好的适应性。
在实际应用中由于标签性能存在一致性差异,且环境干扰不可控,阅读器不会单独使用高速的BLF与编码FM0的组合。 
4. 协议与标签的识别特性
通过学习本节的知识,可以全面的分析标签的读取速度和效率到底与谁有关。主要与3部分相关: 应用环境影响、射频链路选择及算法与逻辑层面的选择。其中, 
 应用环境: 环境噪声、频带带宽限制、是否为多阅读器场景; 
 射频链路层: 反向链路频率BLF,标签编码方式FM0、Miller、阅读器的编码方式及调制方式; 
 算法与逻辑层: 多标签清点Query、选择SelectMask、会话层Session。
在实际应用中,应根据不同应用环境选择合适的射频链路参数,如表310所示。


表310应用环境对阅读器标签通信速度的影响



应 用 环 境阅读器标签通信速度

环境噪声大
信噪比要求高多阅读器
需要慢速(BLF小),Miller4或Miller8

环境噪声小
频带带宽大少阅读器高速工作(BLF大),FM0或Miller2


 环境噪声: 根据环境中噪声大小选择编码方式,如FM0适合实验室,Miller4和Miller8适合嘈杂环境。
 BLF选择: 标签距离阅读器较远或标签尺寸较小时,对信噪比要求较高,则应选择较低的BLF以保证阅读器的灵敏度要求。
 多阅读器场景: 许多应用中需要多台阅读器在很靠近的环境中,就存在DRM(密集阅读器模式),此时需要选择小带宽的BLF。DRM的频率选择与频带数量有关系,如美国频带数量多达50个,DRM效率高,而欧洲只有4个频带,DRM效率低,只能用LBT方式工作,等待时间长、效率低。
3.3Gen2多标签的算法
多标签算法是大家经常提及的问题,超高频 RFID协议是一个简单协议,其多标签算法基础是比较简单的。基于3.2.1节讲解的Query命令已经可以解决80%的多标签算法问题,一台符合超高频 RFID协议的普通阅读器,对于一般的多标签处理不会有任何问题。由于现在的物联网项目越来越多,客户的要求也越来越苛刻,就需要不断改进多标签算法。本节将分别从工程及算法两个方面进行详细介绍。


视频讲解



3.3.1基于工程场景的多标签防碰撞算法——碰撞读取率A
1. RFID常见多标签算法简介

从13.56MHz频段的ISO/IEC 14443协议、ISO/IEC 15693协议到900MHz频段的ISO/IEC 180006B/C协议,防碰撞协议在现有的技术中一般都基于两种基本算法: 时隙ALOHA算法和二进制树的搜索算法。
其中180006C采用的是时隙ALOHA算法: 应答器(标签)只在规定的同步时隙中才传输数据包。在这种情况下,对所有应答器的同步由阅读器控制。本质上时隙ALOHA算法是一种由阅读器控制的随机时分多址(TDMA)算法。它将信道分为很多时隙,每个时隙正好传送一个分组。对于射频系统,标签只在规定的同步时隙内才能传输数据包,对所有的标签所必需的同步由阅读器控制,但发生碰撞后,各标签仍是经过随机延时后分散重发的。
时隙ALOHA算法较为实用,由于时隙ALOHA算法不关注实际冲突的位数,而只关注是否发生冲突,因此实现较为方便。但在实际系统中,其算法效率相对不高。如果应答器数目过多,时隙数量不够,那么发生冲突的概率增大,需要的时间也过长。因此,当多个应答器在阅读器工作范围内停留时间太短,识别率就会相应变低。
ISO/IEC 14443、15693、180006B采用的是二进制树搜索算法: 如果数据包在传输过程中发生碰撞,阅读器使用二进制树搜索的运算法则和一个比特的数据来解决冲突。因为每个标签本身都有一个地址(ID),所以阅读器可以指定一个特定范围内的地址来读取标签,而这些标签必须对阅读器的询问做出应答,其他标签则表示缄默。这时,如果有两个标签由于同时上传数据而发生碰撞,阅读器可以精确地检测出地址发生碰撞的比特位,并找出对应的标签。依靠二进制树搜索的运算理论,阅读器可以读出所有的标签。
基本的二进制树搜索算法抗干扰能力差,数据容易误读而造成效率低,难以实现。
2. 基于实际工程场景的多标签——清点率介绍
本书中的防碰撞算法结合实际阅读器特性,提出阅读器碰撞读取率这个概念,并结合实际的工程场景,精确计算标签清点的时间期望值,从而大大提高了阅读器的清点率,有利于推动以物流仓储为代表的超高频RFID多标签场景的广泛应用。
该防碰撞算法的模型包括1个阅读器,0个或者多个应答器(标签)。使用的要素包括Q(时隙数标识数据)、A(碰撞读取率)、N(标签的总量)。
(1) 在阅读器对标签清点的通信中,阅读器先向所有标签发Query命令,在Query命令中包含参数Q,Q可以取0~15的任意数值。
(2) 所有标签收到Query命令后会各自从0~2Q-1中产生一个随机数。若标签的随机数为0,则标签立即返回RN16,阅读器可以通过该RN16与这个标签通信。
(3) 当阅读器发送Query后,会连续发2Q-1个Query_rep命令,标签每次收到Query_rep命令后,其随机数减1,直到随机数变为0,返回RN16。
(4) 在该通信过程中,如果标签数量N比较大(比如100),而Q比较小(比如4),那么100个标签每个都从0~15个数字中随机分配一个,必然存在相同的随机数,这样当阅读器发出Query或者Query_rep命令后,两个或多个标签同时返回它们各自的RN16就发生冲突,由于两个或多个标签的数据交叠在一起,阅读器很难分辨数据,因此无法和特定的一个标签进行通信,这就是冲突的产生。
(5) 发生冲突的标签会在下一轮的Query清点中被清点到,已经被清点过的标签则不响应,直到Session翻转,直到将全部的标签清点完毕。
由于技术的进步,阅读器的灵敏度和解调能力不断提高,当遭遇多标签冲突时,阅读器有一定的概率A正确解调一个标签的RN16,从而完成对一个标签的清点,在这里称这个概率A为碰撞读取率。深入研究碰撞读取率,还可以分成2个标签碰撞时读取率为A2,3个标签碰撞时读取率为A3,或者N个标签碰撞时的读取率为AN。当然为了简单分析,在这里对所有的碰撞读取率统一为A,方便大家理解和计算。
为方便后续计算,提出清点率F这个概念,就是单位时间内识别标签的数量。假设一轮清点过程中清点到的标签数量为M,那么F=M/2Q。为了提高清点率,针对不同的标签数量N和当前的阅读器的碰撞读取率A,选择最优的清点参数Q。
如图318所示,在清点过程中,每个时隙都可能出现3种情况: 
(1) 只有一个标签返回RN16,清点到标签; 
(2) 有多个标签返回RN16,发生冲突,有A的概率清点到标签; 
(3) 没有标签返回RN16,没有清点到标签。


图318标签清点示意图


在这3种情况下,在2Q个时隙内的期望值分别为: 
(1) 只有一个标签返回,

2Q-12QN-1×N(32)

(2) 有多个标签返回,

2Q-2Q-12QN×2Q-2Q-12QN-1×N(33)

(3) 没有标签返回, 

2Q-12QN×2Q(34)
那么清点率为(1)+(2)×A: 

F=2Q-12QN-1×N+2Q-2Q-12QN×2Q-2Q-12QN-1×N×A/2Q(35)
3. 基于实际的工程场景的多标签——实例分析 
假设标签数量分别为N=40、N=100和N=200,3个阅读器碰撞读取率分别为0%、10%和30%,即A1=0; A2=0.1; A3=0.3。那么每个阅读器在不同标签环境中所选用的Q的最优值可以用式(35)计算出不同的清点率F,将Q=4~10以及N和A的数值代入后,得到表311。


表311阅读器Q值与标签数量与碰撞概率的关系



标签数量N=40N=100N=200

碰撞概率A1=0A2=0.1A3=0.3A1=0A2=0.1
A3=0.3A1=0A2=0.1A3=0.3
Q=40.2020.2710.4190.0100.1090.30700.1000.300
Q=50.3620.3980.4690.1350.2170.3820.0110.1100.307
Q=60.3380.3510.3770.3290.3750.4670.1360.2180.382
Q=70.2300.2340.2420.3590.3770.4150.3280.3740.474
Q=80.1340.1350.1370.2650.2710.2830.3580.3770.414
Q=90.0720.0730.0730.1610.1630.1660.2650.2710.282
Q=100.0370.0380.0380.0890.0890.0900.1610.1620.166

在实际应用中根据表311选择清点率最高时所对应的Q(表中斜体数字为最优清点率)。在传统的算法中,Q的选择依据为表312(传统算法中未考虑冲突识别率,可以认为A=0)。


表312Q值表


Q012345678910

N0~123~45~89~1617~3233~6465~128129~256257~512513~1024

将传统算法和本书中创新的算法进行对比: 
在标签N=40、A=0的情况下,根据表311计算选择Q=5,而传统算法选择Q=6,那么创新算法效率比传统增加了7.1%。若选择N=200、A=0.3,创新算法选择Q=7,而传统算法选择Q=8,那么创新算法的效率比传统算法提高了14.5%。
现在的超高频RFID阅读器种类繁多,通过对应设备的测试可以发现,每个阅读器的碰撞读取率是不同的。从阅读器的设计角度来讲,是由阅读器的射频链路性能以及基带的解调能力不同导致的。不同的阅读器在使用不同的调制编码方式时其碰撞读取率是不同的。比如Alien Technology的ALR9900+的碰撞读取率A大概为0.3,而低端分离器件的阅读器的碰撞读取率A约等于0。
在实际应用中,应先由阅读器的协议算法控制部分根据标签个数和阅读器的碰撞读取率生成一张类似于表311的映射表,然后根据式(35)计算Q为0~15时所得到的所有清点率,最后选择清点率F最高时所对应的Q,作为这轮清点的Q值; 下一轮清点根据剩下的标签数量继续查表选择清点率最高时对应的Q,直到标签全部清点完毕。


视频讲解



3.3.2基于实际场景的多标签防碰撞算法——动态Q算法
1. 标签数量N与Q的概率分析
3.3.1节的多标签碰撞算法是针对已知固定数量标签场景中所使用的方法。在不知道天线覆盖场内有多少标签时,Q怎么选择,如何最有效率地读取标签,就需要一个可以自动调节的Q算法来实现,称之为动态Q算法。
考虑一下,在标签数量未知的情况下如果Q是固定的一个数字,那么无论Q设什么样的数字都会存在很大问题。比如把Q设为4,如果场内有500张标签,一定会出现碰撞严重导致很难读全; 如果场内标签只有1张或没有,又需要浪费许多时隙时间。这个时候就需要动态Q算法,即阅读器可以根据场内读取的标签数量以及效果进行动态的调整,如果标签多,Q就自动变大; 如果标签少,Q就自动变小。那如何判断场内的标签数量呢?这需要从概率的角度着手进行分析。阅读器对标签的识别体现在每一个时隙上,根据3.2.1节中的分析,在一个时隙内可能发生3种情况,分别是一个标签返回: 读取; 多个标签返回: 冲突; 没有标签返回: 空闲。在不考虑碰撞读取率时(A=0),这3种情况下根据标签数量为N、清点参数Q的清点率F的概率表达式如下: 
(1) 只一个标签返回——读取 

2Q-12QN-1×N÷2Q(36)

(2) 有多个标签返回——冲突

2Q-2Q-12QN×2Q-2Q-12QN-1×N÷2Q(37) 

(3) 没有标签返回——空闲

2Q-12QN(38)

只是通过这样枯燥的算式,发现不了任何规律。不妨假设场内标签的数量为固定的一些数量,选用不同的Q时碰撞和无返回的概率是多少。假定场内的标签数量分别是: N=1、2、5、10、20、50、100、200、500、1000; 动态Q=1、2、3、4、5、6、7、8、9、10。将这些参数代入式(36),得到读取的概率如表313所示; 同理,代入式(37)和式(38)可得到表314和表315。


表313读取Q、N概率表




NQ
1251020501002005001000

10.500.500.160.010.000.000.000.000.000.00
20.250.380.400.190.020.000.000.000.000.00
30.130.220.370.380.200.010.000.000.000.00
40.060.120.240.350.370.130.010.000.000.00
50.030.060.140.230.340.330.130.010.000.00
60.020.030.070.140.230.360.330.140.000.00
70.010.020.040.070.130.270.360.330.080.00
80.000.010.020.040.070.160.270.360.280.08
90.000.000.010.020.040.090.160.260.370.28
100.000.000.000.010.020.050.090.160.300.37


表314碰撞Q、N概率表




NQ
1251020501002005001000

10.000.250.810.991.001.001.001.001.001.00
20.000.060.370.760.981.001.001.001.001.00
30.000.020.120.360.730.991.001.001.001.00
40.000.000.030.130.360.830.991.001.001.00
50.000.000.010.040.130.470.820.991.001.00
60.000.000.000.010.040.180.460.821.001.00
70.000.000.000.000.010.060.180.460.901.00
80.000.000.000.000.000.020.060.180.580.90
90.000.000.000.000.000.000.020.060.260.58
100.000.000.000.000.000.000.000.020.090.26


表315空闲Q、N概率表




NQ
1251020501002005001000

10.500.250.030.000.000.000.000.000.000.00
20.750.560.240.060.000.000.000.000.000.00
30.880.770.510.260.070.000.000.000.000.00
40.940.880.720.520.280.040.000.000.000.00
50.970.940.850.730.530.200.040.000.000.00
60.980.970.920.850.730.460.210.040.000.00
70.990.980.960.920.850.680.460.210.020.00
81.000.990.980.960.920.820.680.460.140.02
91.001.000.990.980.960.910.820.680.380.14
101.001.001.000.990.980.950.910.820.610.38
从表313中可以明显地看到,在标签数量N不同时,不同的Q的读取率是不同的,且读取率比较高的Q一般在log2N附近。如N=10,在Q=3,2Q=8和Q=4,2Q=16之间,此时读取率最高为Q=3时的0.38和Q=4时的0.35。从表313中也可以看到,表格的左下角和右上角的概率基本都是0,左下角为时隙多标签少空闲的概率大导致读取率低; 右上角时隙少标签多碰撞概率大导致读取率低。
在正常的多标签动态算法的过程中如果连续两个时隙的状态都是读取状态,就说明当前的Q与N非常合适,不需要进行Q的调整。
从表314碰撞Q、N概率中可以发现,N越大碰撞概率越大,Q越小碰撞概率越大,该表格的右上角碰撞概率基本都为1,也就是说,要100%发生碰撞,就需要把Q调大。
在正常的多标签动态算法的过程中,如果连续两个时隙的状态都是碰撞状态,就说明当前的Q相对于N太小,需要增大Q。也可以通过表314计算得出结论,假定当前状态为N=10,Q=2,碰撞概率为0.76,连续两次碰撞的概率为0.76×0.76=0.57,此概率大于50%,就需要将Q增大为3。由表311可知,N=10时Q=3或4是最合适的,刚好与之前的结论相吻合。
由表315可知,标签N越多空闲概率越小,Q越大空闲概率越大,该表格的左下角概率值都为1,就是说要100%发生空闲,就需要把Q调小。
在正常的多标签动态算法的过程中如果连续两个时隙的状态都是空闲状态,就说明当前的Q相对于N太大,需要减小Q。读者也可以通过表315计算得出结论,假定当前状态为N=10,Q=5,碰撞概率为0.73,连续两次碰撞的概率为0.73×0.73=0.53,此概率大于50%,就需要将Q减小为4。由表311可知,N=10时Q=3或4是最合适的,刚好与之前的结论相吻合。
2. 动态Q的实例分析
经过上述的算法和概率分析,已经了解了Q变化的基本要领,但是在实际的案例中,阅读器的动态Q是如何设置的呢?我们通过对主流阅读器的动态Q算法研究,总结了一套非常适合工程应用的动态Q策略,其步骤如下: 
(1) Q=0检测场内是否有标签; 
(2) Q=3初始化Q状态识别标签; 
(3) 连续碰撞2次,则Q+1; 连续空闲2次,则Q-1,无连续碰撞和连续空闲则读取识别; 
(4) 连续发3次Q=0 为空,确定全部识别,场中不剩下任何标签; 
(5) 掉电开启下一轮盘点。
该动态算法中,步骤(1)首先发Q=0,看场内是否有标签,会出现3种情况,如果没有标签,则跳转到步骤(5)进行下一轮盘点; 如果有一个标签,则读取该标签数据跳转到步骤(4),确认场内没有标签后再跳转到步骤(5)进行下一轮盘点; 如果场内有多张标签,则跳转到步骤(2)发Q=3进行识别标签,再到步骤(3)~(5)。
这里将步骤(3)和(4)的组合称为基础动态Q策略,这个策略是最常用的动态Q策略,读者也可以开发类似的动态Q策略,比如监控多次识别的结果判断Q是否跳转等,不过实量结果比基础动态Q策略的提升不会超过10%。
假定场内标签数量N=100,但是阅读器未知该信息,此时的多标签动态Q识别过程如下: 
 运行步骤(1)Q=0, 发生冲突、场内存在多个标签(N=100; 时隙M=1); 
 运行步骤(2)Q=3(N=100); 
 运行步骤(3)Q=3时连续两次冲突Q=4(N=100; M=2); 
 运行步骤(3)Q=4时连续两次冲突Q=5(N=100; M=2); 
 运行步骤(3)Q=5时连续两次冲突Q=6(N=100; M=2); 
 运行步骤(3)Q=6时连续进行读取,第一轮读取标签21个,还剩79个(根据表(313)中Q=6、N=100概率给出数据33%×64≈21,实际情况略有不同)(N=79; M=64); 
 运行步骤(3) Q=6时继续进行读取,第二轮读取标签23个,还剩56个(根据表(313)中Q=6、N=79概率为36%×64≈23,实际情况略有不同)(N=56; M=64); 
 运行步骤(3) Q=6时继续进行读取,第三轮读取标签24个,还剩32个(根据表(313)中Q=6、N=56概率为37%×64≈24,实际情况略有不同)(N=32; M=64); 
 运行步骤(3) Q=6时继续进行读取,第四轮读取标签20个,还剩12个(根据表(313)中Q=6、N=32概率为31%×64≈20,实际情况略有不同)(N=12; M=64); 
 运行步骤(3) Q=6时连续两次空闲,Q=5(N=12; M=2); 
 运行步骤(3) Q=5时继续进行读取,第五轮读取标签8个,还剩4个(根据表(313)中Q=5、N=12概率为26%×32=8,实际情况略有不同)(N=4; M=32); 
 运行步骤(3)Q=5时连续两次空闲,Q=4(N=4; M=2); 
 运行步骤(3)Q=4时连续两次空闲,Q=3(N=4; M=2); 
 运行步骤(3)Q=3时继续进行读取,第六轮读取标签3个,还剩1个(根据表(313)中Q=3、N=4概率为33%×8=3,实际情况略有不同)(N=1; M=8); 
 运行步骤(3)Q=3时连续两次空闲,Q=2(N=1; M=2); 
 运行步骤(3)Q=2时继续进行读取,第七轮读取标签1个,还剩0个(根据表(313)中Q=2、N=1概率为25%×4=1,实际情况略有不同)(N=0; M=4); 
 运行步骤(3)Q=2时连续两次空闲,Q=1(N=0; M=2); 
 运行步骤(3)Q=1时连续两次空闲,Q=0(N=0; M=2); 
 运行步骤(4)取连续发3次Q=0 确定全部识别; 
 掉电重复下一轮盘点。
上述识别过程中Q先变大再变小最终将所有标签都识别到,并确认场内没有遗漏的标签。虽然看起来非常烦琐,但是大大提高了识别效率。对识别效率的评估可以通过标签时隙比实现,即总共标签数量与总共时隙的比值,比值越高说明效率越高。标签数量N=100个,时隙数量就是把上述识别过程中的所有时隙M加起来M总=319,那么标签时隙比为100÷319=31.3%,这是一个非常高的效率值。
为了让读者了解动态Q的优势,将其与固定Q算法进行对比。此处采用固定Q的最优方式,假设阅读器已知场内标签数量。在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轮确定所有标签都被识别且M=640,对应的标签时隙比为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轮确定所有标签都被识别且M=448,对应的标签时隙比为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轮确定所有标签都被识别且M=480,对应的标签时隙比为20.8%。
关于其他固定Q的标签时隙比,这里不做更多的计算,但明显可以推论Q大于7时会有更多的空闲,导致M偏大,而Q小于5的会有大量的冲突,同样导致M偏大。在未知场内标签数量的情况下使用动态Q算法会比即使已知场内标签数量的固定Q算法效率高50%。因此应用中合理使用动态Q会大大提高多标签识别的效率和准确性。
3.3.3多标签识别综合解决方案
由于近些年来超高频 RFID的应用场景越来越多,面临多标签识别和环境干扰等诸多挑战,尤其是阅读器厂商在设计和生产阅读器时并不知道客户的最终应用场景。因此阅读器的适应性需要很强,能够根据具体情况在多个场景中自动切换。本节将给出一套完整的解决方案,通过算法调节多个参数最终实现阅读器可以应对绝大多数的标签识别场景。
首先将所有超高频 RFID识别的应用场景和需求总结如下: 
 场内标签数量——没有标签、1个标签、几十个标签、几百个标签或一两千个标签等多种可能性。
 识别率——需要保证每一轮的识别将场中的标签全部清点完毕,不能存在遗漏。
 识别速度——在保证识别率的前提下需要保证尽可能最快的方式实现场内的标签识别。
 现场环境——无论在实验室的良好环境中,还是在恶劣的工厂干扰环境中,都保证最优的识别率和识别速度。
 覆盖范围——许多场景中标签分布比较分散,或标签的位置较差,需要更大的覆盖范围,保证对弱标签的识别效果。
根据上述需求,可以从本章介绍的多个参数中找到解决问题的手段。 
 Session会话层,可以使已经被识别到的标签不再重复响应阅读器的命令。
 BLF链路速率,既可以提供较高的链路速率实现高速识别,又可以提供较低的链路速率实现较高的灵敏度。
 FM0/Miller编码,FM0可以提供高的链路速率实现高速识别,Miller8可以提供较好的抗干扰特性。
 动态Q算法,可以实现不同数量的多标签识别率和最高效的清点率。
 多天线场景: 在多天线的场景中,不仅实现区域的覆盖,同时满足识别率和识别速度(增加多个天线可以增加覆盖范围和识别率,但多天线的场景中有大量的标签是重复覆盖的,需要采用Session解决重复识别的问题)。
上面几条需求看似不可能完成的任务,但经过超高频RFID的技术专家多年的努力,最终找到了完美的解决方案。解决方案如下: 
(1) 配置初始参数Session=1; Target A到B; 初始天线=1。
(2) 配置BLF=640kHz; 编码=FM0; Q=4。
(3) 基础动态Q策略(连续碰撞2次Q+1; 连续空闲2次Q-1,无连续碰撞和连续空闲则读取识别; 直至3次Q=0为空)。
(4) 配置BLF=40kHz; 编码=Miller8; Q=3。
(5) 基础动态Q策略。
(6) 若存在多天线,则跳转为下一个天线重复步骤(2)~步骤(5),直至所有天线轮询一遍,停止盘点。
(7) 配置初始参数Session=1; Target B到A; 初始天线=1。
(8) 步骤(2)~步骤(5)。
(9) 转步骤(6)。
(10) 掉电继续下一轮盘点。
上述策略的步骤为,首先采用最高速率的配置参数组合BLF=640kHz、编码=FM0将场中绝大多数容易识别的标签快速盘点完成,采用初始Q=4是工程经验选择,具有最好的适应性。第二次识别采用系统中抗干扰和灵敏度最高的配置参数组合BLF=40kHz、编码=Miller8将场中的一些信号较弱的标签实现盘点,Q=3的初始值是因为剩下未盘点的标签一般数量较小,采用较小的初始Q足以满足需求。此时再跳转到另外一个天线重复前面的操作,由于所有已经被天线1盘点到的标签已经在Session1跳转到了B状态,新的天线在盘点时不会发出响应,故不会因为重复覆盖而影响盘点速度。当所有天线都完成上述操作后,场内的标签已经全部完成盘点,则进入下一轮反向盘点。最终所有的标签状态又回到了Target A,一次完整的盘点结束。
本节提供的多标签识别综合解决方案是很好的解决方案,如果还要提升系统性能,则需要优化多标签碰撞识别率A和基础动态Q策略,前者可以通过提升阅读器的灵敏度和数字信号处理算法实现,后者可以通过AI学习算法增强也可以使用MATLAB多次仿真取最优策略,但这两者投入较大,对于系统的识别率和识别速度提升空间有限。
3.3节中几种基于Gen2的多标签算法是我们经过多年的研究和许多项目实践经验总结出来的结论,在应用和阅读器的开发中会有帮助。虽然本节有许多计算内容,但都是比较简单的基础计算,如果读者也能自己推导,并根据推导的结果用阅读器和标签进行验证,对这部分知识的理解会更有帮助。



视频讲解



3.4国标超高频 RFID协议
3.4.1国标协议的历史背景

超高频RFID在全球的高速发展,带来了大量的创新应用。然而超高频RFID的主流协议EPC C1 Gen2和相关专利都掌握在美国企业手中。由于我国的一些超高频 RFID应用涉及军用和安全领域,因此迫切需要一个自主知识产权的超高频RFID协议标准,GB/T 297682013应运而生。
该协议的全称为《信息技术 射频识别 800/900 MHz 空中接口协议》英文名为Information technology—Radio Frequency identification—Air interface protocol at 800/900MHz。协议的筹备工作始于2012年,经过全国的超高频 RFID相关企业和单位的拼搏努力编撰完成,其中包含了多个业内公司的核心专利共享以及行业人士的全力奉献。最终于2013年9月18日发布,2014年5月1日实施。
本标准起草单位包括中国人民解放军国防科学技术大学、工业和信息化部电子工业标准化研究院、北京中电华大设计有限责任公司、天津中兴智联科技有限公司、睿芯联科(北京)电子科技有限公司、西安西电捷通无线网络通信股份有限公司、深圳市远望谷信息技术股份有限公司、国家无线电监测中心、北京航空航天大学、上海聚星仪器有限公司、北京同方微电子有限公司、西安电子科技大学、中国物品编码中心、上海坤锐电子科技有限公司。
本标准主要起草人: 李建成、耿力、高林、王宏义、冯敬、杨青、谷晓忱、沈红伟、王立、管超、曹军、王政、杜志强、兰天、宋继伟、金倩、王文峰、夏娣娜、刘文莉、曹国顺、郑黎明、吴建飞、李聪、张兵兵、冯汉炯、宋起柱、张有光、陈柯、吴行军、刘伟峰、王毅、李卓凡、乔申杰、朱正。
3.4.2GB/T 29768国标协议详细内容
GB/T 29768中有大量内容,本节主要针对有特色的部分以及与Gen2协议差异较大的部分进行详解。国标协议中的创新部分为阅读器的编码方式、多标签碰撞算法、安全加密机制。 
1. 工作频率
阅读器工作频率为840~845MHz和920~925MHz,频带内共40个信道,每信道带宽为250kHz,其信道中心频率fc表达为

fc=840.125+0.25n或fc=920.125+0.25n(39)

式中,fc: 信道中心频率,单位为兆赫(MHz); n: 整数,取值范围为0~19。
2. 跳频(FHSS)参数
该标准规范了跳频的频点数量以及驻留时间,驻留时间不可以超过2s。阅读器使用FHSS通信时,应使用式(39)中工作频率规定的40个信道,每信道的最大驻留时间为2s。在一般系统中,一般驻留时间都是小于1s的,从而保障更多的信道被释放和充分利用。
3. 邻信道功率泄漏比
图319给出了阅读器的邻信道功率泄漏比,其主要目的是限制阅读器工作时,对附近信道的干扰。


图319阅读器的邻信道功率泄漏比


阅读器在发射信道R的功率P(R)和其他信道S的功率P(S)的比值应满足下述规定: 
 当|R-S|=1时,10lg(P(S)/P(R))<-40dB; 
 当|R-S|>1时,10lg(P(S)/P(R))<-60dB。
对于左右相邻的两个信道,其输出信号的抑制要求超过40dB; 对于除相邻信道之外的带内信道,其抑制比超过60dB。国标中邻信道功率泄漏要求比FCC苛刻一些,目的是保障多阅读器场景中的系统灵敏度和稳定性。 
4. 数据编码
阅读器使用如图320所示的TPP对基带数据进行编码。符号00的持续时间为2Tc,符号01的持续时间为3Tc,符号11的持续时间为4Tc,符号10的持续时间为5Tc,4种符号的长度允差均为±1%。Tc可以取6.25μs或者12.5μs,长度允差为±1%,阅读器应在一个盘点循环内使用固定的Tc。当数据包的长度为奇数时,则最后一位补0后再进行编码。


图320TPP符号


TPP编码与Gen2采用PIE编码非常相似,只是从1比特编码变成2比特编码,从2种符号变为4种符号。
在超高频 RFID系统中采用TPP编码可以比PIE编码提供更多的正电平载波,也就是说,标签工作时接收到更多的能量,灵敏度会更高。通过计算和实测,在相同标签芯片整流电路系统下,采用TPP编码可以提高0.1dB的灵敏度。
5. 反向链路频率
反向链路频率由启动查询命令中的反向链路速率因子数据域决定,可按照式(310)计算反向链路频率值,反向链路频率具体值见表316。

BLF=1/Tpri=320kHz×K(310)
式中,K为反向链路速率因子。


表316反向链路速率



反向链路速率因子BLF/kHzFT温 度 范 围


1/564
3/7137.14
6/11174.55
1320
2/5128
6/7274.29
12/11349.09
2640-20%~20%-25~60℃

由表316可以看出,GB29768协议中的反向链路频率固定8种,与Gen2协议的多种连续可选不同。在实际应用中这8种链路速率已经足够,再配合FM0/Miller的4组编码可实现32种组合,足够应对所有场景。
6. 多标签算法
多标签的防碰撞使用DDSBT机制如图321所示。在该机制中,标签时隙计数器初始值置为0,根据后续命令逐步调整时隙计数器,当时隙计数器为0时,标签从仲裁状态跳转到应答状态,开始响应阅读器。 














图321多标签防碰撞处理流程图



1) 当标签无回复时 
(1) 在阅读器无法接收到标签回复的时候,首先判断是否结束盘点,如果判据为真,则认为盘点结束,结束的判断方法为阅读器设置盘点结束阈值。阅读器发送启动查询命令时,将盘点结束阈值置为2; 阅读器发送分裂位置为0的分裂命令时,盘点结束阈值加1; 阅读器发送重复查询命令时,盘点结束阈值减1; 阅读器发送分散命令时,盘点结束阈值乘以2后加1; 阅读器发送收缩命令时,盘点结束阈值除以2后取整; 阅读器发送其他命令时,盘点结束阈值不变。如果盘点结束阈值为0,则阅读器认为盘点结束。
(2) 如果不结束盘点,需要判断连续空闲时隙的次数是否达到CIN(连续空闲阈值,典型值为4)。如果连续空闲时隙的次数不小于CIN,则发送收缩命令,所有仲裁和应答状态的标签时隙计数器值除以2后取整。 
(3) 如果连续空闲时隙的次数小于CIN,且上一时隙阅读器发送的是分裂命令,阅读器发送分裂位置为1的分裂命令,所有时隙计数器值为1的标签分裂。 
(4) 如果连续空闲时隙的次数小于CIN,且上一时隙阅读器发送的不是分裂命令,则阅读器发送重复查询命令,所有仲裁和应答状态的标签时隙计数器值减1。

2) 当标签正确回复时 
阅读器接收到标签正确回复的RN11+CRC5,阅读器发送编码获取命令, 标签发送安全模式、编码长度和编码并跳转到确认状态。
3) 当标签发生碰撞时
(1) 当阅读器接收到多个标签碰撞信号的时候,需要判断连续碰撞时隙的次数是否达到CCN。 
(2) 如果连续碰撞时隙的次数小于CCN(连续碰撞阈值,典型值为3),则发送分裂位置为0的分裂命令,处于应答状态的标签分裂,仲裁状态的标签时隙计数器加1。 
(3) 如果连续碰撞时隙的次数不小于CCN,则发送分散命令,所有应答和仲裁状态的标签时隙计数器的值乘以2之后加上1位随机数。
DDSBT机制的多标签算法与Gen2的协议不同,不需要用户再对算法进行二次开发和优化,在标准中已经规定了所有的算法和策略,对于普通开发者来说这是方便的。从系统复杂度看,国标的多标签算法比Gen2协议的复杂一些,阅读器的判断流程也复杂一些,不过这些复杂度对于阅读器和标签的实现与Gen2协议几乎没有差别。从多标签识别数量上看,采用DDSBT 机制的多标签算法的随机数只有11位,而Gen2具有16位随机数,在场内标签数量巨大时,Gen2具有优势。从多标签识别速度看,在Gen2采用较高的多标签策略时,两种的多标签识别效率相差无几。
7. 安全鉴别协议
安全鉴别协议是国标超高频RFID创新出来的,Gen2协议中没有相关内容。安全鉴别协议的目的是保证通信连接的阅读器和标签的身份是安全的,协议中共存在3种鉴别方式,分别是标签对阅读器的单向鉴别协议、阅读器对标签的单向鉴别协议和双向鉴别协议。在鉴别过程中的加密算法协议中提供了最简单的异或加密算法或用户可以采用自建的对称加密算法,如现在的电子车牌和军队应用都是采用了SM7(商用加密7号算法)作为系统的鉴别对称加密算法。 
阅读器和标签的对称加密双向鉴别协议流程见图322。 


图322阅读器和标签的对称加密双向鉴别协议流程


(1) 阅读器发送安全参数获取命令; 
(2) 标签发送安全参数; 
(3) 阅读器用根密钥RK和TID生成鉴别密钥AK,发送请求鉴别命令Req_SAuth; 
(4) 标签生成随机数RNt发送给阅读器; 
(5) 阅读器生成随机数RNr和会话密钥SK,用AK加密RNr‖RNt‖SK得到EAK(RNr‖RNt‖SK),发送双向鉴别命令Mul_SAuth(RNt‖EAK(RNr‖RNt‖SK)); 
(6) 标签首先判断收到的RNt 是否与自己在步骤(4)中产生的RNt 相等,如果相等,则标签用AK解密EAK(RNr‖RNt‖SK)得到RN′r‖RN′t‖SK,比较RN′t和RNt,如果相等,则标签认为阅读器过鉴别,将RN′r发送给阅读器,跳转到开放状态,且会话密钥为SK; 如果不相等,则标签认为阅读器未通过鉴别,发送响应数据包,跳转到仲裁状态。 
(7) 阅读器比较RN′r和RNr,如果相等,则阅读器认为标签通过鉴别,且会话密钥为SK; 如果不相等,则认为标签未通过鉴别。
采用安全鉴别后,整个通信的身份得到识别和鉴别,保证了许多安全领域的要求。不过采用较为复杂的加密算法带来的缺点也很明显,比如芯片尺寸增加导致成本增加,芯片的功耗增加导致灵敏度下降,通信时间增加。在传统的物流领域应用中使用的芯片,一般不会携带该功能。关于安全加密鉴别协议部分是芯片的可选内容,并非系统必需。 
8. 安全通信协议
需要进行安全通信的标签可采用安全通信协议。安全通信协议的目的是保证通信过程中的数据即使被截获,也无法还原有效的传输数据。 
标签在通过安全鉴别后,只响应盘点组命令和安全通信命令。安全通信协议流程见图323。


图323安全通信协议流程


(1) 阅读器生成随机数RNr,用SK加密cmd‖RNr,发送安全通信命令Sec_Com(ESK(cmd‖RNr))。
(2) 标签用SK解密ESK(cmd‖RNr)得到cmd,标签执行cmd中的命令,操作结果为result; 然后标签生成随机数RNt,用SK加密result得到ESK(result)发送给阅读器。
(3) 阅读器用SK解密得到result。
安全通信协议对于有数据交互前关注数据安全的超高频 RFID应用有重要作用,尤其是在应用于大数量存储的重要物品,如军工设备、危险爆炸物等的情况下。
总体来说,GB/T 29768国标协议是有非常重要的历史意义的,并且在许多方面有很大的创新,对我国RFID的发展作出了重要的贡献。 
小结
本章详细讲述了有关超高频 RFID的所有标准及规范,其中3.1节的超高频 RFID无线电射频标准需要完全掌握,3.2节的Gen2空中接口通信协议需要完全理解,3.3节是本书的精华部分,蕴含了行业中最重要的多标签碰撞算法的深入解析以及多标签的综合解决方案,对这部分感兴趣的读者可以深入学习; 3.4节的国标协议,有兴趣的读者可以详读。 
课后习题
1. 下面关于超高频RFID射频规范的描述中不正确的是()。

A. 在中国的超高频 RFID规范中,阅读器不可以在同一个频点连续工作超过2s
B. 中国的超高频 RFID频段带宽比美国的频带带宽小
C. 在中国超高频 RFID阅读器的输出功率大小是有限制的,最大输出功率不能大于2W
D. 中国和美国的超高频 RFID规范中都采用跳频技术
2. 下面关于ERP和EIRP的描述中不正确的是()。
A. ERP 1W比EIRP 1W大
B. 30dBm输出功率的阅读器配套2dBi的天线,相当于EIRP 32dBm
C. 30dBm输出功率的阅读器配套2dBi的天线,约等于ERP 30dBm
D. ERP和EIRP只是中国和美国的不同叫法,大小相同
3. 下面关于LBT和跳频的描述中正确的是()。
A. LBT目的是事先监听信道,减小不必要的干扰
B. LBT是中国标准建议使用的技术手段
C. 超高频RFID系统中使用跳频技术可以加快数据的传输速率
D. 超高频RFID系统中使用跳频技术的目的是增加系统的安全性,防止被监听
4. 下面关于Session的描述不正确的是()。
A. Session1的保持时间与是否掉电无关
B. Session0是应用于高速环境的最佳选择
C. Session2的掉电持续时间长度小于0.5s
D. Session0的掉电持续时间长度为0s
5. 下面关于FM0编码和Miller编码的描述正确的是()。
A. Miller编码就是重复的FM0编码,就是浪费时间,毫无意义
B. 采用Miller编码传输的优点在于系统的抗干扰能力增强
C. 正常情况下阅读器默认采用FM0编码进行识别
D. Miller8编码只有在实验室中才会使用
6. 下面关于BLF的说法正确的是()。
A. BLF是阅读器与标签的通信速率
B. BLF最大值为640kHz, 国内规范中可以使用该数值
C. BLF越小,其频率偏差要求越高
D. BLF是标签自身决定,与阅读器发射的命令无关
7. 关于动态Q的应用中,初始Q=0,场中有10 000个标签,试问动态Q值的变化过程是怎样的? 
8. 请自己设计一套优于基础动态Q策略(连续碰撞2次Q+1; 连续空闲2次Q-1,无连续碰撞和连续空闲则读取识别; 直至3次Q=0为空)的机制。提醒: 比如采集N次统计对于碰撞、空闲、识别的3种状态给予权重,最终加权后提出下一步策略。
9. 请提出一种评测方法,估算3台不同阅读器的碰撞识别率A。
10. 根据国标的多标签算法,当场内标签数量大于211时,系统是否可以正常工作?如果可以,会产生什么现象?