技术科普

当前位置:首页>技术与支持>技术科普
全部 850 方案下载 1 技术科普 14 协议标准 7 开发包下载 1 行业资讯 827

RFID超高频电子标签的防冲突算法(SR)分析

时间:2016-04-19   访问量:1745
超高频读写器IMPINJ E710模块超高频天线RFID手持机ISO18000-6C/EPC CLASS1 G2RAIN RFIDEPC Gen2 V2

问题背景:高速运动的标签群能不能读全

在正常情况下,当读写器识别范围内存在大量静止的电子标签时,读写器可以通过防冲突算法完成所有标签的识别工作。但当标签群运动起来并达到一定速度时,能否在有限时间内把标签读完就成了问题——这里的关键因素是防冲突算法。本文讨论的场景是:高速运动的标签群源源不断地笔直经过超高频读写器的识别范围。能否有效完成快速移动标签群的读取,直接影响系统的稳定性与可靠性,而未来用于高速运动标签群的超高频自动识别系统会越来越多,因此这一课题既有前瞻性也有现实意义。

现实中一个典型例子是:满载货物的货车通过读写器识别范围时,要求系统快速有效地读取货车上所有货物的物品信息。货车通过的速度直接影响系统的工作效率——快速通过能节约大量时间和成本,但速度越快,留给射频识别的时间窗口就越短。这就形成了一个矛盾:想让系统效率高,就要容许较高的通过速度;而速度一高,漏读风险随之上升。要在这两者之间找到平衡点,必须理解防冲突算法在动态场景下的行为。

超高频RFID读写器用于高速运动电子标签群识别

超高频频段与协议体系

射频识别利用射频信号通过空间耦合实现无接触信息传递,并通过传递的信息识别目标。RFID 的工作频段分为低频(LF)、高频(HF)、超高频(UHF)与微波(MW),其中超高频 RFID(860 到 960MHz)具有读写速度快、识别距离远、抗干扰能力强、标签体积小等优点,因此在物流与工业领域被广泛应用。国际上有三个主要的 RFID 技术标准体系组织:全球产品电子编码中心(EPC Global)、ISO/IEC,以及日本 Ubiquitous ID Center(UID)。ISO/IEC 18000 是基于物品管理的 RFID 国际标准,按频率不同分为 7 个部分,其中 ISO/IEC 18000-6 规定超高频频段,针对 860 到 930MHz 的无线接触通信空气接口参数。ISO/IEC 18000-6 系列包括 Type A、Type B、Type C 三类标准,主要区别在于标签识别中的编码方式以及防冲突算法。

防冲突算法的技术路线:从Aloha到时隙算法

防冲突算法是射频识别系统中的多路存取法,是系统实现标签快速识别的关键。当两个或两个以上标签同时发送数据时会产生数据干扰,这种干扰称为标签冲突;因此系统中必须建立有效的仲裁机制来避免冲突发生。目前在 RFID 系统中使用最广泛的防冲突算法大多基于时分多址(TDMA):每个标签在某个时隙占用信道与读写器通信,一旦产生冲突就暂时退避,重新选择时隙再次通信,从而实现防冲突。

常用的防冲突算法大多基于 Aloha——一种无规则的时分多址算法。Aloha 规定标签周期性地向读写器发送数据,而数据传输时间只占整个周期的一小部分,标签传输之间有很长的停歇,因此有一定概率使两个标签落在不同时隙传输数据,从而避免冲突。基于 Aloha 又出现了多种改进算法:时隙 Aloha、帧时隙 Aloha、动态帧时隙 Aloha 等。Type C 所采用的防冲突算法是随机时隙防冲突算法,其本质与帧时隙 Aloha 机制相同。

超高频RFID电子标签用于列车追踪与定位

随机时隙防冲突算法(SR)的工作过程

随机时隙防冲突算法(SR)的帧长度为 2 的 Q 次方,并且该机制会根据标签的应答情况调整 Q 值,改变下一个识别周期的时隙数,让未识别标签重新选择。调整逻辑很直观:当一帧中出现过多的冲突时隙时,说明参与的标签太多、时隙不够分,读写器会提前结束该帧并选择一个更大的 Q 值发送给标签群;当一帧中出现过多的空闲时隙时,说明参与的标签太少、时隙有富余,读写器会提前结束该帧并选择一个较小的 Q 值。通过这种"冲突就加时隙、空闲就减时隙"的反馈,算法让时隙数量始终贴近实际标签数量。

SR 算法的命令包括 Query、QueryAdjust、Query Rep 等,主要参数是时隙计数参数 Q。协议中的 Q 值决定了防冲突所用的时隙数,读写器通过向标签发送相应命令改变标签状态,完成防冲突工作。协议规定标签有三种状态。当系统上电或信道空闲时,读写器发送 Query 命令启动清点周期,初始化一个识别周期并决定哪些标签参与本轮:命令中包含时隙计数参数 Q,接收到 Query 命令的标签在 0 到 2 的 Q 次方减 1 的范围内选择一个随机数并置入时隙计数器。选到 0 值的标签变为应答状态并响应读写器,回答一个 16 位随机数;没有选到 0 值的标签变为仲裁状态,等待下一条 QueryAdjust 或 Query Rep 命令;没有进入本轮识别周期的标签保持休眠状态。

处于仲裁状态的标签每接收到一条 Query Rep 命令,时隙计数器就减一,当计数器减到 0000h 时标签转变为应答状态并响应读写器。有一种特殊情况需要处理:当时隙计数器值为 0000h、标签已经应答但没有得到确认时,标签会变为仲裁状态,并且在接收到下一条 QueryRep 命令时时隙计数器减一变为 7FFFh,以此来防止它随后应答,直到标签接收到 Query Adjust 命令或者进入下一个识别周期。这一机制保证了在 2 的 Q 次方减 1 条 QueryRep 命令之内,所有标签至少应答一次。当多个标签的时隙计数器同时达到 0000h 并同时应答时会产生冲突;当所有标签的时隙计数器都不等于 0000h 时,读写器接收不到任何响应。面对这两种情况,读写器需要重新选定 Q 值,依据的正是自适应 Q 算法。

自适应Q算法

自适应 Q 算法的逻辑是:当某一时隙出现冲突或者无响应的情况时,相关的计数值会增大或减小,然后对其取整得到新的 Q 值。如果 Q 值发生变化,读写器发送 Query 命令更新 Q 值,并让标签重新选择时隙计数器;如果 Q 值未变,则继续发送 QueryRep 命令,让所有标签的时隙计数器减一。通过根据标签冲突与无响应情况动态改变 Q 值、进而改变时隙数,算法实现自适应防冲突。这套机制在标签数量固定的场景下表现良好,问题恰恰出在标签数量持续变化的动态场景。

超高频RFID电子标签用于无人零售批量识别

面对高速标签群的不足

在高速运动标签群通过识别范围的场景下,必须注意读写器范围内的标签是动态变化的——随时都有新标签加入识别范围,从而影响防冲突处理。对 ISO18000-6 Type C 防冲突算法过程的研究表明,该算法在面对快速标签群时并未做有效的处理。根据算法的工作过程:读写器发送 Query 命令开启清点周期后,高速运动的标签群进入识别范围并上电进入休眠状态;读写器在范围内选择部分标签进入清点周期,未被选中的标签保持休眠等待下一个周期;上一个周期结束后,读写器再发 Query 命令开启新周期,此时范围内已有新加入的标签,读写器会从所有标签中再次随机选择部分标签进入清点周期。问题就在这里——新标签的加入导致部分旧标签可能始终无法进入清点周期、无法被识别到,随后就离开了识别范围。另一种情况是标签进入清点周期后应答发生冲突或未收到回复,时隙计数器由 0000H 减一变为 FFFFh 以避免随后应答;此时若冲突或无响应导致 Q 值变化,所有标签可重新选择时隙、获得再一次被识别的机会;但若 Q 值未变,该标签就要等本轮周期结束,再与新进标签一起争取下一次机会,同样存在无法进入清点周期直到离开识别范围的几率。

可以把这一过程量化。假设运动标签群的速度为 v,标签在读写器识别范围内的运动距离为 d,则标签在识别范围内的时间为 t = d / v;再假设读写器进行一轮标签读取的时间为 T、标签被识别所需的周期数为 n(n 为正整数),那么当 n 与 T 的乘积大于 d / v 时,就会出现标签来不及被识别的情况。这一表达式说明:要通过速度越快,可用的时间窗口越短,对算法收敛速度的要求就越高。此处需要说明,本项目原始资料中将该式写为 t = v / d,与物理含义不符——时间应为距离除以速度,本文已按正确关系表述,请留意原文档的相应位置。

两种改进思路

针对高速运动标签群的识别,主要问题在于新标签与旧标签争抢进入清点周期的机会,而旧标签在识别范围内停留的时间有限。解决问题的切入点是让旧标签比新标签拥有更多进入清点周期的机会,或者直接不允许新标签与旧标签竞争,等旧标签完成识别后再开始新标签的识别工作。据此提出两种方法。

第一种是基于标签到场时间的解决方案。标签进入射频范围内上电后,标签内的到场计时器开始计时,计时值为 t;读写器选定一个适当的计时值 T,在发送 Query 命令开始清点周期的同时发送 T;标签把自己的计时值与读写器要求的 T 作比较,据此决定是否参与本轮清点。这样,先到场的标签获得优先被识别的机会,缓解了"新标签插队"的问题。第二种是基于标签到场点名的办法。在某一时刻系统启动、读写器开始发送 Query 命令进入清点周期之前,先发送点名命令,让识别范围内的标签由休眠状态进入到场状态;之后只选择处于到场状态的标签进入清点周期,待所有到场标签完成识别再进行新一轮点名。这种方案可以完全解决新旧标签的竞争问题,代价是增加了一次点名交互,对静止或低速场景会略微降低效率,因此更适合车速较高的通道类应用。上海营信信息在车辆与通道类项目的方案设计中,会按现场通过速度评估是否需要在标准协议之外补充这类调度策略。

超高频RFID电子标签用于货车进出与货物批量读取

小结

针对高速运动标签群这一特定背景,本文研究了 ISO18000-6 Type C 标准的随机时隙防冲突算法(SR):该算法通过自适应调整 Q 值与帧长,在标签数量相对稳定的场景下能高效完成识别;但在标签群持续进出识别范围时,新标签的加入会使部分旧标签始终无法进入清点周期,从而产生漏读。在不改变原有算法本质的前提下,基于到场时间与基于到场点名是两种可行的改进方向——前者给先到标签以优先权,后者彻底隔离新旧标签的竞争。对工程实施而言,关键判断依据是时间窗口与算法收敛时间的比较:窗口充裕就用标准算法,窗口紧张就需要补充调度策略。

常见问题

什么是标签冲突?为什么必须处理?

当两个或两个以上标签同时向读写器发送数据时,信号在空间中叠加,读写器无法正确解析任何一方,这种情况称为标签冲突。若不处理,可能出现两种情况:要么读到错误数据,要么反复读不到标签。因此 RFID 系统必须建立有效的仲裁机制,把标签的应答在时间上分散开,这就是防冲突算法的作用。

SR算法的Q值是怎么调的?

根据冲突与空闲两类信号反向调整。一帧中出现过多冲突时隙,说明标签多、时隙不够,读写器提前结束该帧并选一个更大的 Q 值;出现过多空闲时隙,说明标签少、时隙富余,则选一个更小的 Q 值。Q 值变化后,读写器发送 Query 命令更新 Q 并让标签重新选择时隙计数器;Q 未变则继续发 QueryRep 让所有标签的时隙计数器减一。

标签为什么要变成7FFFh?

这是为了给其他标签让出应答机会。当标签的时隙计数器为 0000h、已经应答过但未得到读写器确认时,若它立即再次应答会造成重复冲突。协议规定此时标签转回仲裁状态,并在收到下一条 QueryRep 时把时隙计数器减一变为 7FFFh,也就是一个很大的值,让它在后续很多条 QueryRep 内都不会应答;直到收到 Query Adjust 命令或进入下一个识别周期,才重新获得参与机会。上海营信信息在分析读卡异常时,会特别检查这一类"长时间无应答"的标签是否受该机制影响。这个设计保证了 2 的 Q 次方减 1 条 QueryRep 之内所有标签至少应答一次。

为什么静止标签读得好,运动起来就漏读?

因为静止场景下标签集合是固定的,算法有足够多的轮次慢慢收敛,漏掉的标签下一轮还会在。而标签群运动时集合持续变化:新标签不断加入,旧标签停留时间有限。清点周期每轮随机选择参与标签,旧标签可能连续几轮都没被选中,等不及就离开了识别范围。加上标签移出射频范围后无法再被读到,这些漏读就无法补救。

怎么判断项目需不需要额外的调度策略?

可以用时间窗口与算法收敛时间的比较来判断。先测出标签在识别范围内的停留时间(运动距离除以通过速度),再测出算法在真实标签数量下完成一轮识别所需的时间与轮次,若两者接近或前者更小,说明标准算法可能来不及收敛,需要引入到场时间或到场点名这类调度策略;若时间窗口明显充裕,则标准算法足够,不必增加额外交互。

上一篇:超高频6B与6C(EPCglobal UHF Class 1 Gen 2)标准的区别

下一篇:RFID电子标签技术是什么?在哪些行业有成功应用?