RFID系统中多电子标签防碰撞改进算法

  射频识别(RFID)技术是一种非接触式的自动识别技术,通常由读写器、电子标签和计算机数据管理系统三部分组成,通过DSRC短程通信技术进行数据传输和交换。RFID系统工作时,如果遇到两个以上电子标签都在读写器信号的覆盖范围内,则各个电子标签会同时对读写器发出信号,从而造成各电子标签间数据的碰撞,使读写器不能正常读取各个电子标签内的有关数据,这就是RFID系统中的多路存取问题。因此只有解决好电子标签的碰撞问题,才能使RFID系统正常工作,而解决电子标签防碰撞问题的关键是优化的防碰撞算法。

  现有的RFID防碰撞算法都是基于TDMA算法,可划分为Aloha防碰撞算法和基于二进制搜索BS(Binary search)算法两大类。Aloha是一种随机接入算法,这种算法多采取“标签先发言”的方式,即标签一旦进入阅读器的阅读区域就自动向阅读器发送其自身的ID,随即标签和阅读器间开始通信。在标签发送数据的过程中,若有其他标签也在发送数据,将发生信号重叠从而导致完全冲突或部分冲突,阅读器检测接收到的信号来判断有无冲突。如果发生冲突,阅读器将发送命令让标签停止发送,随机等待一段时间后再重新发起查询。该算法特点是:算法简单、便于实现,适用于低成本RFID系统。但是由于该算法的时隙是随机分配的,当大量标签并存时,帧冲突严重。而基于BS算法是通过多次比较,不断筛选出不同的标签号,时分复用地进行读写器和射频卡之间的信号交换,以一个独特的序列号识别射频卡为基础。为了从一组射频卡中选出其中的一个,读写器需要发出一个请求命令,有意识地将射频卡序列号传输时的数据碰撞引导到读写器上,即让读写器来判断是否发生碰撞。如发生碰撞,则缩小范围进行进一步搜索。这类算法虽然识别效率高,但是算法比较复杂,识别时间较长。本文在二进制防碰撞算法的基础上提出一种改进的防碰撞算法。

  一,两种典型的二进制防碰撞算法的分析

  1.1二进制搜索算法

  实现BS算法系统的必要前提是能够辨认出在读写器中数据冲突位的准确位置,因此必须选用合适的编码。曼彻斯特编码能够按位识别出碰撞位,这样可以根据碰撞的位置,按一定的规则重新搜索标签。因此,使用曼彻斯特编码是实现二进制搜索防碰撞算法的必要前提。BS算法的工作流程如下:

  (1)电子标签进入读写器的作用范围时,读写器发送命令REQUEST(≤11111111),所有满足此条件的电子标签响应此命令,并将自己的EPC号传给读写器。

  (2)读写器对比电子标签响应的EPC码相同位数上的数,根据Manchester编码规则,若出现不一致现象,即可判断出该比特位有碰撞。

  (3)当确定有碰撞后,将此次发生碰撞的最高位置“0”,最高碰撞位之前的比特位不变,最高碰撞位后的所有比特位都置“1”,并产生新的请求命令REQUEST,依次排除序列号大的标签,直到读写器对比电子标签响应的序列号中相同位数上的数完全一致时,则说明无碰撞。此时,使用选择命令(SELECT)选出一个唯一的标签。

  (4)选出唯一的标签后,使用READ-DATA命令完成读写器与该电子标签的数据交换。并使用选择命令(UNSELECT)进入“无声”状态,此时在读写器范围内不再响应(重新进入读写器范围可再次响应)。为了重新激活电子标签,必须进行复位操作。

  (5)重复前4个步骤,并选择剩余的电子标签数据交换。多次循环后即可完成所有电子标签的读取。

  1.2动态二进制搜索算法(DBS)

  在BS搜索算法中,从读写器和单个电子标签的数据流可以看出,读写器发出的请求命令中,最高碰撞位后的所有比特位都被置“1”,对标签的识别不能提供任何的信息。而标签返回的数据中,最高碰撞位以前的比特位及最高碰撞位不包含给读写器的补充信息,因为这些位是已知且给定的,属于多余的重复信息。基于此人们提出了动态二进制搜索算法(DBS),当读写器检测到碰撞后,下一次读写器在请求命令中只发送搜索序列号中的最高位和最高碰撞位之间的部分作为搜索依据,然后中断传输,所有在与最高位和最高碰撞位之间的部分相同的电子标签响应并送回它们序列号的剩余各位,即最高碰撞位之后的比特位作为应答。因此,DBS算法避免了序列号中多余部分的传输,数据传输时间明显缩短。DBS算法较BS算法在传输数据量和所需时间上可减少50%。