从图2可以看到,阅读器首先发送读指令,处于射频区域的多个标签收到指令,立即在随后多个时隙中随机选择一个将信息上传给阅读器,并且标签在一个周期循环时隙内完成数据上传。增加时隙数量可降低RF终端发生冲突的概率,但是信道大部分时间将处于空闲状态,使得防冲突识别速度变慢。反之,减少时隙数量导致射频终端冲突明显增加。运用时隙算法的关键在于寻找一个有效的折衷方案,使得防冲突的可靠性和速度满足要求。随着RFID系统复杂程度的加大,防冲突的可靠性显著降低,冲突不可避免,所以这种没有检测恢复机制的抗冲突算法仅适用于简单系统。
3 二进制搜索防冲突算法
ALOHA算法由于效率低,实际RFID系统并未采用,而是采用更加高效的二进制搜索算法。二进制搜索算法灵活,不会发生防冲突失败情况。对于N个应答器发生冲突的情况,最多只需要N-1次防冲突循环就能准确识别出适合的应答器。二进制搜索算法的基本思想是阅读器判断出发送应答器的序列号产生数据冲突位置。然后强制命令在冲突位置发送信息为"0"或"1"的应答器退出冲突。当N-1个应答器退出冲突后信道则被剩下的一个应答器完全占有并由阅读器识别出。
为了防止数据冲突的发生,首先确定发生冲突的数据比特位的具体位置。这里使用Manchester编码如图3所示。这种编码通过电平的上升沿和下降沿表示高、低电平。上升沿为逻辑"1",下降沿为逻辑"0",不存在状态不变的情况。因此数据传输过程中检测到编码状态不跳变,则认为在数据传输过程中发生了冲突。两个发生冲突的数据比特位必定有一个为逻辑"0",另一个为逻辑"1",这样Manchester码的上升沿和下降沿相互抵消,使接收器在持续时间内接收到状态持续不变的副载波信号,即出现状态不跳变,这在Manchester编码中是不允许的,可以肯定该处出现了冲突。因此可以用这种方法按位跟踪发生冲突的数据比特位的具体位置。
当应答器进入射频区域时,阅读器开始针对所有的应答器进行检测识别。其工作进程主要有如下五个状态:
POWER OFF(断电)状态:应答器尚未获得能量(未进入阅读器工作区),而处于断电状态,因此也不能发射副载波:
IDLE(空闲)状态:应答器进入阅读器工作区,电磁场激活获得能量,形成电压,进入空闲状态,同时能对已调制的信号解调,并识别来自阅读器的RE-QUEST命令和WAKE UP命令;
READY(就绪)状态:当接收到一个有效的REQA或WAKE UP命令时,进入就绪状态,在该状态采用防冲突方法,用UID(惟一标识符)从多张IC卡中选择出一张应答器,此时该张应答器就进入ACTIVE(激活)状态;
ACTIVE(激活)状态:在本状态完成本次应用(一次交易)所要求的全部操作;
HALT(停止)状态:阅读器完成一次交易后,处于停止状态。
应答器各状态间的转换图如图4所示。
4 改进后的防冲突算法实现步骤
这里采用SEL+NVB方式传输。SEL为指令码,其代码为93;NVB的前半字节表示字节数,后半字节表示冲突的位置。
改进后的算法具体实现步骤如下:
第1步:阅读器分配SEL值,选定反冲突类型和级联级数;
第2步:阅读器分配给NVB值'20'(定义了阅读器将发出命令迫使场内所有应答器响应完整的序列号);
第3步:阅读器发出SEL和NVB命令;
第4步:场内所有应答器以完整序列号响应;
第5步:假定场内的应答器都有唯一的序列号,
则当多个应答器响应时,就会发生冲突。如果无冲突,第6步到第10步可以跳过。
第6步:阅读器确认第一个冲突的位置X并记录下来。
第7步:阅读器分配NVB值,其中NVB前半字节为该命令的字节数,后半字节为冲突X的位置。
第8步:阅读器发出SEL和NVB,要求应答器中第X位为'1'的作出响应。
第9步:只有该部分序列号中第X位为'1'的应答器才会发出它们序列号剩余的部分。
第10步:若有冲突发生,第6~9步重复执行。
第11步:若无冲突发生,阅读器为NVB分配一个值'70'。
第12步:阅读器发出SEL和NVB,要求应答器传送完整的序列号。
第13步:应答器传送完整的序列号、闻读器收到后完成对该标签的识别工作。
改进后的防冲突算法流程图如图5所示。
5 改进后防冲突算法的仿真与实现
改进后主要实现Manchester码和防冲突算法。Manchester码是一种适合传输的基带码型,是实现防冲突检测所采用的码型。Manchester编码可用两个不同相位的二进制码代替一个二进制码。而防冲突算法则是采用编写程序进行算法验证。实验证明,算法正确。
6 结束语
改进后的二进制防冲突算法能够将射频区域内的多个应答器准确地识别出来,并且使系统的传输数据量和传输时间大大减少,有效节省了传输信道,这是其他算法难以达到的。因此,改进后的二进制防冲突算法比其他算法更准确、更高效地解决射频识别系统中的标签应答数据冲突问题。