井下RFID定位系统的读写器防碰撞技术研究
射频识别技术(RFID) ,又称电子标签,是一种非接触式自动识别技术。它利用射频(Radio) 方式进行非接触双向通信, 以达到目标识别和数据交换目的,无需人工干预。基本的RFID 系统(见图1) ,由射频卡标签(Tag) ,RFID 读写器(Reader Writer De2vice) ,天线(Antenna) 以及应用支撑软件等组成。
图1 RFID 系统
注:虚线框代表可选项
1 读写器碰撞分析
读写器的碰撞其实是频率干扰问题。在实际应用中,由于RFID 系统本身作用距离较小,读写器相互间比较靠近,尤其是在UHF 以上频段还存在传输的多径问题,这样来自一个读卡器的信号很可能受到另外一个或多个读写器的干扰,出现读写器碰撞,造成对标签信息读取失败。
图2 读写器与读写器间的干扰
(1) 读写器与读写器之间的干扰 这指的是当一个读写器发射较强的信号与一个射频标签反射回的微弱信号相干扰时,就引起了读写器与读写器之间的干扰,如图2 所示。读写器R1 位于读写器R2 干扰区。从射频标签T1 反射回的信号到达读写器R1 ,很容易被读写器R2 发射的信号干扰。这种干扰即使2 个读写器阅读范围没有重叠也有可能产生。
(2) 多个读写器对标签的干扰 是指当多个读写器同时阅读同一个标签时引起了多读写器到标签间的干扰,如图3 所示,2 个读写器阅读范围重叠。从读写器R1 和R2 发射的信号可能在射频标签T1处产生干扰。在这种情况下,标签T1 不能解密任何查询信号并且读写器R1 和R2 都不能阅读T1。因为读写器冲突,读写器R1 能阅读标签T2 和T3 ,但是不能阅读标签T1 ,因此,读写器R1 指示2 个射频标签存在而不是3 个。
图3 读写器到射频卡间的干扰
图4 读写器冲突使载波侦听无效
从上可见,除了误操作外,读写器防碰撞从根本上说就是避免频率干扰。因此,如何找到一种分配有限的频率资源的算法,使得这种碰撞减到最小就成了REID 应用最为关键技术。
2 二进制搜索算法
二进制搜索算法的方法类似于在天平中采用的逐次比较方法。通过多次比较,不断筛选出不同的序列号,时分复用地进行读写器和射频卡之间的信号交换,以一个独特的序列号来识别射频卡为基础。为了从一组射频卡中选择其中之一,读写器发出一个请求命令有意识地将射频卡序列号传输时的数据碰撞引导到读写器上,即通过读写器判断是否有碰撞发生。如果有碰撞,则缩小范围进行进一步的搜索。
二进制搜索算法由一个读写器和多个射频卡之间规定的一组命令和应答规则构成,目的在于从多卡中选出任一个实现数据通信。该算法有3 个关键要素: (1) 选用适当的基带编码(易于识别碰撞) ; (2)利用射频卡卡序列号唯一的特性; (3) 设计一组有效的指令规则,高效、迅速地实现选卡。
2. 1 曼彻斯特编码
为了快速稳定地实现防碰撞操作,读卡器必须能够对射频卡返回数据时发生碰撞的位置进行比特级的检测,采用曼彻斯特(Manchester) 编码方式可以方便地实现碰撞检测。该编码的特点是通过在位持续时间中间电平的跳变来表示数值位,其中下降沿编码表示逻辑1 ,上升沿编码表示逻辑0 ,如果没有电平跳变则视为非法数据,调制后在每一位只有高电平部分有副载波信号。当2 个或多个射频卡同时返回其唯一的序列号时,一定会在某一位(或某几位) 上有不同的值,叠加之后上升沿和下降沿相互抵消,以至无电平跳变,读写器判断该位出现碰撞。图5 为2 个射频卡序列号的Manchester 编码及出现碰撞的示意图。
图5 2 个射频卡序列号的Manchester 编码及其位碰撞的示意图
2. 2 防碰撞指令规则
(1) REQUEST(SNR) 发送一序列号作参数给射频卡。标签把自己序列号跟接收的序列号比较,如果小于或等于,则此标签返回其序列号给读写器。这样可以缩小预选的射频卡范围,如果大于则不响应。
(2) SELECT(SNR) 用某个(事先确定的) 序列号作为参数发给标签。相同序列号的标签将以此作为执行其他命令的切入开关,即选择这个标签。具有其他序列号的射频卡只对REQUEST 命令应答。
(3) READ - DATA 选中的标签将存储的数据发送给读写器。
(4)UNSELECT 取消事先选中的标签,使该标签进入“无声”状态。在该状态下标签对收到的RE2QUEST 命令不作应答。为了重新激活标签,将标签移出读写器的作用范围再进入,以实行复位。
2. 3 动态二进制搜索算法
动态二进制搜索算法考虑的是在UID 位数不变的情况下,尽量减少传输的数据量,使传送时间缩短,提高RFID系统的效率。其改进思路是把数据分成两部分,收发双方各自传送其中一部分数据,可把传输的数据量减小到一半,达到缩短传送时间的目的。
通常序列号的规模在8 字节以上。为选择一个单独的射频卡,每次都不得不传输大量的数据,效率非常低。根据二进制搜索算法的思路进行改良,可以减少每次传送的位数,也可缩短传送的时间和防碰撞执行时间。具体动态二进制搜索算法的步骤如下:
(1) 读写器第1 次发出一个完整的UID 位数码N ,每个位上的码全为1 ,让所有射频卡都发回响应。
(2) 读写器判断有碰撞的最高位数X ,把该位置0。然后传输N~ X 位的数据后即中断传输。射频卡接到这些数据后马上响应,回传的信号位是X -1~1。即读卡器和射频卡以最高碰撞位为界分别传送前后信号。传递的总数据量可减小一半。
(3) 读写器检测第2 次返回的最高碰撞位X′是否小于前一次检测回传的次高碰撞位数。若不是,则直接把该位置“0”;若是,则要把前一次检测的次高位也填“0”。然后向射频卡发出信号。发出信号的位数为N~ X′,射频卡接收到信号这一级信号出现小于或等于相应数据时后马上响应,回传的信号只是序列号中最高碰撞位后的数,即X - 1~1 位。若射频卡返回信号表示无碰撞,则对该序列号的射频卡进行读P写处理,然后使其进入“不响应状态”。
(4) 重复步骤(1) ,多次重复后可完成射频卡的交换数据工作。
3 二进制搜索算法性能分析
3. 1 实现该算法的技术关键
实现该算法的前提是能辨认出在读写器中数据碰撞比特的准确位置,因此必须有合适的位编码方法,Manchester 编码具有这方面的优点。为了能够检测出多张卡的存在,每张卡的返回数据必须具有唯一性,且所有卡在传送其序列号时必须同步。
3. 2 重复操作的次数
重复操作的平均次数L 取决于读写器作用范围内射频卡总数N ,其对应关系为:L ( N) = log N/ log 2 + 1
3. 3 数据传输时间
数据传输时间主要取决于射频卡序列号长度和循环次数,如果一次传输完整的序列号所需时间为T ,防碰撞的循环次数为N ,则每次都完整传输序列号的通信时间:t = TN
当采用动态二进制搜索算法时,由于射频卡发生碰撞数据位置是等概率分布的,当每一位都发生碰撞时, N 为最大值,此时, t = ( N + 1) TP2 ,该结果表明,动态算法可减少传输数据所需时间,最高可减少50 %。
4 结语
防碰撞是RFID 技术中的一项重要技术。本文提出的二进制搜索算法,在设计和实现上兼顾了读写器和射频卡通信的速度和可靠性,根据这一算法进行编程,结构比较简单,容易实现防碰撞功能,使得读写器碰撞得到有效的控制。采用动态二进制搜索方法可进一步提高执行防碰撞的速度,实现高效率的控制,因此这种算法具有广泛应用的价值。