GEN2协议基本设置 ~解密应用程序
EPC global Gen2协议的设定使其能够适应各种各样的应用,它允许操作者对每个其中的每个参数都进行调整,以满足在特定场景下的优化要求。ThingMagic读写器满足即开即用的特性,其默认的配置可以满足绝大部分常规场景下的应用,许多用户不必进行复杂的Gen2设置。而对于那些必须对GEN2进行配置的用户,本文档提供的信息将帮助他们更简便的对ThingMagic读写器进行性能优化。
简介:
对于应用EPC global Gen2技术的新用户来说,很常见的一点是,他们无法立即实现读写器和标签厂家技术规格书中所描述的性能。虽然有些差异可能是由于厂家是在极端理想环境下测量出的结果,但更可能的原因是读写器并没有得到最优化的配置,特别是与EPC global Gen2(“Gen2”)协议相关的设置。
了解Gen2设置选项的意义,并对其进行优化,从而能够提高RFID总体系统性能,达到接近厂家提供的技术参数水平。这是应用者普通的要求,本应用说明将解释每个相关Gen2设置的目的和影响,然后逐步优化它们,以获得最佳结果。
要了解Gen2设置的相关性,必须先了解UHF RFID的基本工作原理。在底层,读卡器为标签工作提供能量,与此同时再与标签进行通信。这就好比两个人在不同的两个山顶上,其中一个人只有手电筒(代表读写器),另一个人只有镜子(代表标签)。如果他们试图在晚上从一个山顶发送信息到另一个山顶,拿着手电筒的人可以就通过打开或关闭手电筒来发送信息。如果打开手电筒代表的的数据“1”,关闭手电筒代表数据“0”,那么在多次开关手电筒后,就可以得到一串“0101”这样的数据,通过事先约好的定义,就可以很好的把信息传递过去了。但当他想得到回应时,只有镜子的人因为没有光,所以不能发送信息,这就需要带手电筒的人一直保持手电筒打开,这样带镜子的人通过控制镜子什么时候反射光,什么时候不发射光,来达到同样的传递数据“0”“1”的效果,完成信息的传递。在这个系统中,真正的挑战是,可能还有许多人在其他山顶上,也有镜子,并随时准备将消息发送回“读写器”,这个时候就需要Gen2协议进行优化设计,以便能处理这种复杂情况下的通信。
管理标签行为的设置都是由读写器在与一个或多个标签通信时发送的消息来控制的。这些设置不会持续很长时间。有些持续一次与读写器的通讯,有些直到所有标签都通讯完成,有些直到标签断电,有些持续一段固定的时间。然而,几分钟后,Gen2协议将重置所有标签,使它们都回到默认状态,以便第二个读写器在检索到标签时自动知道标签处于什么样的初始状态。
Gen2协议的设置比较多,但总体可以将它们分为三类:
1、控制读写器与标签通信方式的设置
2、控制标签与读取器通信方式的设置
3、控制标签响应方式的设置,以避免标签通讯间的相互干扰、冲突
此外,当要对Gen2选项进行设置时,应首先明确需要对RFID性能的哪些方面进行优化。典型的选择有:
1、最远的读取距离
2、最短时间读取到区域内的每一个标签
3、最短时间读取到区域内快速经过的单个标签
4、在最短时间内读取到最大量的标签
最后一种情况(4)在实际应用中很少需要,把它与其他情况一起提出,是因为它通常是用户在实验室环境中测试读写器时尝试做的第一件事。也经常被用来表征一个读写器性能优劣的重要参数值。
当然,实际应用中可能还需要尽量减少不利条件对性能造成的负面影响,例如,当许多读写器位于非常近的位置时,减少读写器与读写器之间的干扰,也变得很重要。Gen2的设置在这方面也有优化方案。
读写器到标签的设置
虽然与Gen2设置没有直接关系,但发射功率对于RFID技术能否成功应用是一个至关重要的因素,这里必须简单介绍一下。
为了在读写器和标签之间进行成功的通信,标签必须从读写器发出的信号中获得能量并激活。如果标签不能获得能量,则将一直处于休眠状态,那么它不能响应读写器的指令,因此标签与读写器将根本无法发生通信。要获得最大性能,请始终将读写器配置为在本地法规允许的最大发射功率,并选用法规允许的最大增益的天线。(在FCC规定的地区,当读写器发射功率水平为+30dbm,圆极化天线的最大增益为9dbic,线极化天线的最大增益为6dBiL。)
在读写器到标签的通信中,有两个主要的Gen2控制参数,“Tari”和“链接速率”。在前面手电筒和镜子的类比中,如果通信“协议”是摩斯电码,“Tari”将控制一个点(或符号)的长度,而链接速率将控制点和符合的发送速度。和摩斯电码一样,数据的最大发送速度也受到点和符号长度的限制。简单来说,“Tari”值越大,那么在相同时间内传输的数据量就少,也就是数据的传输速率就越慢;而“Tari”值越小,相同时间内传输的数据量就大,也就是数据的传输速率就越快。ThingMagic的算法将这两个Gen2设置一起调整,当用户选择较小的Tari时,链接速率会自动增加,反之则自动减小。这里列举ThingMaic提供的三对匹配数据,当Tari值为6.25 usec、12.5 usec和25 usec,ThingMagic reader会自动将其与160kbps、80 kbps和40 kbps的链接速率配对。
那么,如何选择Tari值(前后链接速率)呢,主要考虑的因素有以下两个:
1.是否会经常给标签写数据?
---Gen2协议的设计是旨在最小化从读卡器到标签的通信的时间(在盘存周期中,信息发送的时间是非常短的)。如果只需要获得标签的EPC,那么Tari/linkrate就只是可被优化的一般因素-因为它们的改变不会对性能产生太大影响。但如果执行的是标签写入操作,那么减少Tari(以增加链接速率)将可以显著的提升性能。
2.这个区域内还有很多其他的读写器吗?
---不用太多说明,如果信道的间隔很近,则信道上的高速通信可能与相邻信道进行干扰。如果该区域中存在其他读写器,并且随着打开更多读写器,第一个读卡器的性能就可能会出现降低,这就是系统正在经历相邻读写器之间的信道干扰。这种情况在北美(FCC)频段情况可能会好一些,因为它包含50个间隔良好的频道,但在只有4个频道的欧盟地区,这可能成为一个比较大的问题。在这种情况下,就可以尝试增加Tari值,以降低链接速率,以此查看第一个读卡器的性能是否能有所改善。
标签到读写器的设置
标签使用的信号调制方法与读取器用于与标签通信的方式略有不同。
通常可以使用两种设置来控制标签到读写器的通信方法,即链接频率(称为“反向散射链接频率”以清楚地将其与读写器到标签的链接速率区分开来)和“M”值。反向散射链路频率(通常缩写为“BLF”)和“M”值均会改变标签与读写器进行通讯的方式。
BLF是原始信号速率。ThingMagic读写器支持的数据速率为250 kHz和640 kHz。标签与读写器之间的数据传输,从底层看实际上就是数据“0”和数据“1”的发送。GEN2协议规定了表征数据“0”的符号,那么M值实质上就是控制这种符号重复的次数。M为2表示每个符号重复两次来代表数据“0”,其它的以此类推。ThingMagic读写器支持1(FM0)、2、4和8的M值。
当没有重复(M=1)时,这是最初始的状态,简称为“FM0”,相对于其他几种情况,这种没有太需要说明的特性。 Gen2协议提供的这个选项,用来对同一个数据的传输,允许使用多个重复符号的表示,以最大限度地提高读写器可以解码标签中非常弱的信号的机会。这就好比人们在嘈杂的房间里低语时,如果同一个词他们重复多说几遍,那我们能听到听懂的几率就更大一些。所以,当“M”≥2时,RFID读写器更有机会解码那些微弱的标签信号。但也因为传输同样的数据,M≥2时,需要重复多个符号,因此,就需要更多的时间,由此就会带来通讯速率的下降。M值越高,接收微弱信号的能力越强,也就是我们通常所说的接收灵敏度越高,但同时通讯速率会下降,读取标签的速度会下降。
ThingMagic读写器器目前支持640kHz的BLF和FM0的“M”值,以实现最高的标签到读写器的数据速率,这样可以实现大约每秒400个标签的读取。或者可以将250khz的BLF与FM0、2、4或8的“M”选项组合。在BLF=250khz和M=8时,标签读取速率降至每秒约100个标签,但灵敏度就可以接近于安装了辅助电池的标签,相比于640 kHz / FM0设置,增加的灵敏度几乎可以使读取距离增加一倍。当然在选择这些值时,还需要考虑一些额外的因素。比如在存在多个读写器的情况下,从读写器到标签通信的较高数据速率,增加了读写器与读写器之间干扰的可能性,从标签到读写器的较高速率也会导致不必要的相邻信道干扰。如何平衡这些问题将在优化一节中讨论。
标签关键设置
剩下的Gen2设置控制了标签对读写器响应的速度和频率。如果区域内的所有标签都立即对读写器响应,则它们的响应将发生冲突,读写器将几乎无法解码任何标签的响应。为了避免这种情况,Gen2协议提供了一个随机的槽计数器,标签可以在各自的槽计数器状态下对读写器进行响应。
读写器向标签发布它将给它们响应的槽计算器的数量(根据它发送的“Q”值计算)。每个标签在这个范围内随机选择一个的数字,并将这个数字装入槽计数器中。读写器根据标签选择的槽计数器值进行响应。当选择的值为“0”的标签将立即与读写器进行应答,其它标签进行仲裁状态,等待下一轮的盘存。读写器完成与槽计数器为“0”的标签应答后,将发送下一条盘存指令,原有的标签自动将自己槽计数器中的值进行“减1”操作,“减1”操作完成后,值为“0”的标签与读写器进行应答。依次循环,直到所有的标签都与读写器完成应答。
读写器发布的“Q”值是一个0到15之间的数字。
*槽计数器的数量是2的Q次方。时间槽数量随着“Q”值的增加而迅速增加:1、2、4、8、16等。
如果“Q”太大,则许多响应机会都将得不到回应,那么盘存周期将花费更长的时间。
如果“Q”太小,一个或多个标签将更有可能在同一时间段内响应,从而导致在所有标签响应之前必须运行多个盘存周期。在极端情况下,如果区域中的标签多于可用的槽计算器,则总是会发生响应冲突,并且盘存周期永远不会成功完成。理想的槽计算器数约为区域内标签数量的1.5倍左右。如果标签数量可变,用户可以将ThingMagic 读写器的Q值设置为自适应Q值(读写器会根据标签的响应情况进行Q值的自动调整,如果有很多冲突,则增加“Q”, 如果有太多未响应的时间槽,则减少“Q”)
Gen2还有两个附加设置,用于控制标签是否以及多久参与一次盘存周期。
最初设置响应队列时,读写器还会向所有标签发送另外两条信息:
(1)他们应该延迟多长时间才能重新做出回应(称为“会话”值),以及(2)他们应该处于哪种状态(“A”或“B”) 来参与盘存周期。“A”状态表示标签尚未响应盘存周期。“B”状态表示标签响应了盘存周期。会话设置确定标签在返回“A”状态之前在“B”状态等待的时间,以便它们能够再次参与盘存周期。
“会话”设置控制标签对盘存周期的响应频率,它具有4个选项,其中有两个选项的作用是相同的。
会话“ 0”:准备在RF功率下降时再次响应
会话“ 1”:准备在第一次响应后0.5到5秒内再次响应
会话“ 2”或“ 3”:至少2秒钟不要再次响应
会话设置的选择几乎总是基于区域中预期的标签数量。对于ThingMagic的默认设置,标签读取速度约为每秒200个标签。 在默认配置下,如果区域中最多有100个标签,则可以配置使用S0;S1对应于区域中的1到400个标签,如果区域中的标签数量大于400个标签,则S 2或S3较为适合。
ThingMagic的“目标”设置仅在强制标签更频繁的重新响应时才有意义。 有两个相关的选择,“ A”和“ A然后B”。 “ A”表示阅读器始终处于检索“ A”状态的标签。 会话周期内保持在“ B”状态的标签将被忽略。 “ A然后B”告诉读写器读取处于“ A”状态的所有标签,然后读取处于“ B”状态的所有标签,并继续重复此过程。 处于“ B”状态的标签将响应“ B”查询,并立即返回其“ A”状态,无论会话计时器上是否还有时间。 这种加快的读取速率仅在两种情况下有用:
(1)应用程序需要多次读取相同的标签,以确定标签的身份之外的更多信息,例如,如果试图通过监视标签的返回信号电平来确定标签是否正在靠近或远离天线。
(2)用户试图通过反复读取较少的标签来评估读写器在多标签情况下的表现。
优化Gen2设置
这里将提供一个逐步实现预期结果的创建过程。
(1)将读写器的发射功率设置到最大(通常是法规允许的最高值)实现可能的最大读取距离(Tari=6.25 usec,BLF=250 kHz,M=8)。将标签放置在应用系统所需的最大读取距离上,并确保可靠读取所有标签。
(2)为预期的标签数量设置“ Q”值和会话值(2 ^ Q应大于标签数量的1.5倍)。如果标签的数量变化很大,请使用ThingMagic“自动Q值”设置。
(3)设置会话值。 最大距离的BLF和M设置将每秒读取约100个标签,因此如果预计最多50个标签,则会话应设置为“S0”,如果预期最多200个标签,会话应设置为“S1”,如果预期字段中有更多标签,会话应设置为“S2”(或“S3”)。
(4)现在确定这些设置是否满足对标签读取速率(或读取通过该区域内快速移动的标签的速度)的要求。如果读取速率(或单标签读取时间)太慢,请开始减小“ M”值(将BLF保持在250 kHz),直到达到所需的读取速率为止。 (如果FM0和250 kHz不足,请尝试FM0和640 kHz。)现在再次检查所需距离处的系统性能,以确保标签仍可得到可靠读取。如果仍然正常,请保留这些设置。否则,您将必须确定M和BLF的最佳折衷值,以平衡读取距离和读取速率。
(5)如果应用系统需要它,请添加更多具有相同设置的读写器。在其他读写器工作时检查第一个读写器的性能。如果没有变化,请保留其设置。如果其性能下降,则可能会发生读写器之间的干扰。首先在所有读卡器增加Tari,以查看是否有帮助(此更改将对其他性能因素的影响最小)。如果不起作用,请尝试降低BLF并增加M值,以查看是否解决问题。如果是这样,则必须选择BLF和M值,这些值将提供一个可接受的水平,以减少读写器之间的干扰、读取速率和读取距离。
(6)如果应用系统需要一些标签进行重复响应,请使用“ S0”并保留target =“ A”设置。如果该区域中有足够数量的标签,请使用“S1”或“S2”,但如果需要这些标签比会话计时器所允许的速度更快重新响应,请使用target =“ A然后B”设置。
此时,Gen2设置将得到优化,并且系统将以最高性能运行。如果您仍然遇到困难,可以从ThingMagic获得其他支持资源。