注重版权,若要转载烦请附上作者和链接
作者:Joshua_yi
链接:https://blog.csdn.net/weixin_44984664/article/details/109704772
文章目录
一、引言
(二)RFID技术
无线射频识别即射频识别技术(Radio Frequency Identification,RFID),是自动识别技术的一种,通过无线射频方式进行非接触双向数据通信,利用无线射频方式对记录媒体(电子标签或射频卡)进行读写,从而达到识别目标和数据交换的目的,其被认为是21世纪最具发展潜力的信息技术之一。
无线射频识别技术通过无线电波不接触快速信息交换和存储技术,通过无线通信结合数据访问技术,然后连接数据库系统,加以实现非接触式的双向通信,从而达到了识别的目的,用于数据交换,串联起一个极其复杂的系统。在识别系统中,通过电磁波实现电子标签的读写与通信。根据通信距离,可分为近场和远场,为此读/写设备和电子标签之间的数据交换方式也对应地被分为负载调制和反向散射调制。
(二)RFID多标签冲突问题
RFID读写器正常情况下一个时间点只能对磁场中的一张RFID卡进行读或写操作,但是实际应用中经常有当多张卡片同时进入读写器的射频场,读写器怎么处理呢?读写器需要选出特定的一张卡片进行读或写操作,这就是标签防碰撞。
防碰撞机制是RFID技术中特有的问题。在接触式IC卡的操作中是不存在冲突的,因为接触式智能卡的读写器有一个专门的卡座,而且一个卡座只能插一张卡片,不存在读写器同时面对两张以上卡片的问题。常见的非接触式RFID卡中的防冲突机制主要有以下几种。
二、面向比特的防冲突机制
高频的ISO14443A使用这种防冲突机制,其原理是基于卡片有一个全球唯一的序列号。比如Mifare1卡,每张卡片有一个全球唯一的32位二进制序列号。显而易见,卡号的每一位上不是"1"就是"0",而且由于是全世界唯一,所以任何两张卡片的序列号总有一位的值是不一样的,也就说总存在某一位,一张卡片上是"0",而另一张卡片上是"1"。 当两张以上卡片同时进入射频场,读写器向射频场发出卡呼叫命令,问射频场中有没有卡片。这些卡片同时回答"有卡片"; 然后读写器发送防冲突命令"把你们的卡号告诉我",收到命令后所有卡片同时回送自己的卡号。 可能这些卡片卡号的前几位都是一样的。比如前四位都是1010,第五位上有一张卡片是"0"而其他卡片是"1",于是所有卡片在一起说自己的第五位卡号的时候,由于有卡片说"0",有卡片说"1",读写器听出来发生了冲突。 读写器检测到冲突后,对射频场中的卡片说,让卡号前四位是"1010",第五位是"1"的卡片继续说自己的卡号,其他的卡片不要发言了。 结果第五位是"1"的卡片继续发言,可能第五位是"1"的卡片不止一张,于是在这些卡片回送卡号的过程中又发生了冲突,读写器仍然用上面的办法让冲突位是"1"的卡片继续发言,其他卡片禁止发言,最终经过多次的防冲突循环,当只剩下一张卡片的时候,就没有冲突了,最后胜出的卡片把自己完整的卡号回送给读写器,读写器发出卡选择命令,这张卡片就被选中了,而其他卡片只有等待下次卡呼叫时才能再次参与防冲突过程。 上述防冲突过程中,当冲突发生时,读写器总是选择冲突位为"1"的卡片胜出,当然也可以指定冲突位为"0"的卡片胜出。 上述过程有点拟人化了,实际情况下读写器是怎么知道发生冲突了呢?在前面的数据编码中我们已经提到,卡片向读写器发送命令使用副载波调制的曼侧斯特(Manchester)码,副载波调制码元的右半部分表示数据"0",副载波调制码元的左半部分表示数据"1",当发生冲突时,由于同时有卡片回送"0"和"1",导致整个码元都有副载波调制,读写器收到这样的码元,就知道发生冲突了。 这种方法可以保证任何情况下都能选出一张卡片,即使把全世界同类型的所有卡片都拿来防冲突,最多经过32个防冲突循环就能选出一张卡片。缺点是由于卡序列号全世界唯一,而卡号的长度是固定的,所以某一类型的卡片的生产数量也是一定的,比如常见的Mifare1卡,由于只有4个字节的卡序列号,所以其生产数量最多为2的32次方,即4294967296张。
三、面向时隙的防冲突机制
ISO14443B中使用这种防冲突机制。这里的时隙(timeslot)其实就是个序号。这个序号的取值范围由读写器指定,可能的范围有1-1、1-2、1-4、1-8、1-16。当两张以上卡片同时进入射频场,读写器向射频场发出卡呼叫命令,命令中指定了时隙的范围,让卡片在这个指定的范围内随机选择一个数作为自己的临时识别号。然后读写器从1开始叫号,如果叫到某个号恰好只有一张卡片选择了这个号,则这张卡片被选中胜出。如果叫到的号没有卡片应答或者有多于一张卡片应答,则继续向下叫号。如果取值范围内的所有号都叫了一遍还没有选出一张卡片,则重新让卡片随机选择临时识别号,直到叫出一张卡片为止。 这种办法不要求卡片有一个全球唯一序列号,所以卡片的生产数量没有限制,但是理论上存在一种可能,就是永远也选不出一张卡片来。 Felica采用的也是这种机制。
四、位和时隙相结合的防冲突机制
ISO15693中使用这种机制。一方面每张卡片有一个7字节的全球唯一序列号,另一方面读写器在防冲突的过程中也使用时隙叫号的方式,不过这里的号不是卡片随机选择的,而是卡片唯一序列号的一部分。 叫号的数值范围分为0-1和0-15两种。其大体过程是,当有多张卡片进入射频场,读写器发出清点请求命令,假如指定卡片的叫号范围是0-15,则卡片序列号最低4位为0000的卡片回送自己的7字节序列号。如果没有冲突,卡片的序列号就被登记在PCD中。然后读写器发送一个帧结束标志,表示让卡片序列号最低4位为0001的卡片作出应答;之后读写器每发送一个帧结束标志,表示序列号的最低4位加1,直到最低4位为1111的卡片被要求应答。如果此过程中某一个卡片回送序列号时没有发生冲突,读写器就可选择此张卡片;如果巡检过程中没有卡片反应,表示射频场中没有卡片;如果有卡片反应的时隙发生了冲突,比如最低4位是1010的卡片回送卡号时发生了冲突,则读写器在下一次防冲突循环中指定只有最低4位是1010的卡片参与防冲突,然后用卡片的5-8位作为时隙,重复前面的巡检。如果被叫卡片的5-8位时隙也相同,之后再用卡片的9-12位作为时隙,重复前面的巡检,依次类推。读写器可以从低位起指定任意位数的序列号,让卡号低位和指定的低位序列号相同的卡片参与防冲突循环,卡片用指定号前面的一位或4位作为时隙对读写器的叫号作出应答。由于卡片的序列号全球唯一,所以任何两张卡片总有某个连续的4位二进制数不一样,因而总能选出一张卡片。需要指出的是,当选定的时隙数为1时,这种防冲突机制等同于面向比特的防冲突机制。
五、确定性标签防冲突算法
(一)简介
目前在给出的关于RFID系统的ISO/IEC标准中,应用的确定性标签防冲突算法如下:
在ISO 14443标准中,TYPE A中使用的是二进制树搜索算法。
在ISO 18000-3标准中,MODE2使用的是FTDMA算法。
在ISO 18000-6标准中,TYPEB使用的是二进制树搜索算法。
(二)二进制树型搜索算法(BS)
二进制树型搜索算法(Binary Search)属于时分多路算法的一种,按照递归的方式遇到有冲突发生就进行分枝,生两个子集。当这些分枝越来越细,直到最后分枝下面只有一个信息包或无剩余信息包。若在某时隙发生冲突,所有的包都不再占用信道,直到冲突问题解决。如同抛一枚硬币一样,这些信息包随机的分为两个分枝,在第一个分枝里,是抛0面的信息包,在接下来的时隙内,主要解决这些信息包发生的冲突,如果再次有冲突,则继续按前述分为两个分枝,过程不断重复,直到某个时隙为空或是成功完成一次的数据传输,然后返回上一个分枝,这个过程遵循First-in Last-out的原则,先处理完成第一个分支,再来传输第二个分枝,也就是抛1面的信息包。
二进制搜索算法是利用逐步减少发生冲突的位的方法来完成对标签的识别的。阅读器必须能够准确地发现发生冲突的位是该算法的前提条件。因此,在该算法中,标签的返回信号的编码方式使用了Manchester编码。在Manchester编码方式中,每个信号比特中间引入跳变来同时代表不同数值和同步信息。一个负电平到J下电平的跳变代表逻辑"O",而一个正电平到负电平的跳变则代表逻辑"l"。在数据传输过程中"没有变化"的状态是不允许的。因此,当一个阅读器收到标签的返回信号后,如果发现某些位信号的状态没有发生改变,那么阅读器就能够判断这些位一定发生了相互之间的冲突。
(三)基于位仲裁的二进制树算法(BBT)
在基于位仲裁(Bit Binary Tree)的二进制树算法中,所有的处于阅读器读写范围内的未被阅读器识别的标签在开始时候都处于激活状态(并不是指这些标签都是主动式标签,而是由阅读器发送命令激活)。所有的这些标签都将参加仲裁过程。但是在一个仲裁过程的进行当中,如果有新的标签进来,不参加本次仲裁的过程。但是,当此次仲裁过程结束后,这些新进来的标签可以参加下一个仲裁过程。一次完整的仲裁过程的定义是:从一次仲裁开始,到一个标签被阅读器所识别的整个过程。算法的核心思想是:收到阅读器的读写信号之后,在阅读器读写范围内的所有处于激活状态的标签都发送给阅读器一个位(O或者1,是标签识别码(D)的一位,一般从高位开始)。阅读器收到标签返回信号后,如果发现没有冲突,也就是标签返回的都是0或者都是l,阅读器将存储该位信息;而如果阅读器发现标签返回信号之间有冲突存在,即返回信号中既有0也有1,阅读器将选择发送0的一组标签或者发送l的那组标签继续本次仲裁的过程。一旦阅读器选了某组,另外一组在接下来的仲裁过程中将不苒发送信号给阅读器。本次仲裁过程一直持续到有某个标签被识别。被识别出的标签将不参加下面的仲裁过程。本次仲裁过程结束之后,如果仍有标签未被识别