正常情况下读写器某一时刻只能对磁场中的一张射频卡进行读写操作。但是当多张卡片同时进入读写器的射频场时,读写器怎么办呢?读写器需要选出唯一的一张卡片进行读写操作,这就是防冲突。

防冲突机制是非接触式智能卡特有的问题。在接触式智能卡的操作中是不存在冲突的,因为接触式智能卡的读写器有一个专门的卡座,而且一个卡座只能插一张卡片,不存在读写器同时面对两张以上卡片的问题。常见的非接触式智能卡中的防冲突机制主要有以下几种:

1.面向比特的防冲突机制。

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张。

2.面向时隙的防冲突机制

ISO14443B中使用这种防冲突机制。这里的时隙(timeslot)其实就是个序号。这个序号的取值范围由读写器指定,可能的范围有1-1、1-2、1-4、1-8、1-16。当两张以上卡片同时进入射频场,读写器向射频场发出卡呼叫命令,命令中指定了时隙的范围,让卡片在这个指定的范围内随机选择一个数作为自己的临时识别号。然后读写器从1开始叫号,如果叫到某个号恰好只有一张卡片选择了这个号,则这张卡片被选中胜出。如果叫到的号没有卡片应答或者有多于一张卡片应答,则继续向下叫号。如果取值范围内的所有号都叫了一遍还没有选出一张卡片,则重新让卡片随机选择临时识别号,直到叫出一张卡片为止。

这种办法不要求卡片有一个全球唯一序列号,所以卡片的生产数量没有限制,但是理论上存在一种可能,就是永远也选不出一张卡片来。

Felica采用的也是这种机制。

3.位和时隙相结合的防冲突机制

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时,这种防冲突机制等同于面向比特的防冲突机制。

另外需要说明的是,TTF(Tag Talk First)的卡片一般是无法防冲突的。这种卡片一进入射频场就主动发送自己的识别号,当有多张卡片同时进入射频场时就会发生不读卡的现象。这时只有靠卡片的持有者自己去避免冲突了。

转载于:https://www.cnblogs.com/worldsing/p/3267986.html

射频识别技术漫谈(5)——防冲突【worldsing 笔记】相关推荐

  1. 射频识别技术漫谈(6-10)

    射频识别技术漫谈(6)--通讯协议概述 通讯协议是通讯的双方或多方在交流时遵守的规矩,包括谁先发起通讯,先交流什么,后交流什么,一方如何问,另一方如何答等.在这里通迅的双方指的是读写器和卡片. 首先是 ...

  2. 射频识别技术漫谈(32)——曼侧斯特码与FM0编码的防冲突原理

    [转自]http://blog.sina.com.cn/s/blog_9ed067ad0102vyl6.html 在RFID技术中,从低频的125KHz.134.2KHz到高频的13.56MHz,再到 ...

  3. 射频识别技术漫谈(28)——基于MF1射频卡的酒店门锁设计

    [转自]http://blog.sina.com.cn/s/blog_9ed067ad0101dupi.html 电子门锁是现代星级酒店管理电子化.智能化的重要电子设备.相较于传统的机械锁,基于RFI ...

  4. 射频识别技术漫谈(3)——能量、调制

     http://blog.sina.com.cn/s/blog_9ed067ad0100xrss.html 无源和免接触是非接触式IC卡相对于接触式IC卡的两大特点.无源是指卡片上没有电源,免接触 ...

  5. 射频识别技术漫谈(27)——CPU卡概述

    [转自]http://blog.sina.com.cn/s/blog_9ed067ad01018h0z.html 智能卡按安全级别可以分为三类:存储器卡.逻辑加密卡和CPU卡,其中CPU卡是安全级别最 ...

  6. 射频识别技术漫谈(14)——S50与S70存取控制【worldsing笔记】

    存取控制指符合什么条件才能对卡片进行操作. S50和S70的块分为数据块和控制块,对数据块的操作有"读"."写"."加值"."减值 ...

  7. 射频识别技术漫谈(29)——射频接口芯片TRF7960

    [转自]http://blog.sina.com.cn/s/blog_9ed067ad0101fdhv.html TRF7960系列是TI推出的载波为13.56MHz.支持ISO15693.ISO14 ...

  8. 射频识别技术漫谈(30)——PN512的寄存器设置

    [转自]http://blog.sina.com.cn/s/blog_9ed067ad0101fz1r.html PN512是NXP推出的一款低功耗.支持多协议的13.56MHz射频接口芯片.在主动模 ...

  9. 三天搞定射频识别技术(二)2.3寻卡防冲突选卡

    寻卡防冲突 /******************************************************************************* //功 能:寻卡 //参数 ...

最新文章

  1. Webservice soap wsdl区别之个人见解
  2. python中list是什么意思_python中list和list [:]有什么区别?
  3. Apicloud开发之V7包继承AppCompactActivity后云编译资源找不到的解决办法
  4. linux免费计费系统下载,思谷电话计费系统 Linux版
  5. 闲鱼:3月24日至3月30日冻结涉欺诈用户1.8万个
  6. react项目在配置webpack的时候问题
  7. Fritzing软件绘制Arduino面包板接线图传感器模块库文件170
  8. 一位程序员社畜的2021闲读书单!
  9. php避免超卖,thinkphp防止超卖
  10. android 仿美团日历,仿小米日历 纵享丝滑切换的周月效果
  11. 小学期云效能训练营-Day04
  12. iTween EaseType 效果
  13. ABAP select options 和 parameters在同一行
  14. Hbuilder中如何快速输入注释标签_vscode中20个让人眼前一亮的插件
  15. jtag的emu0与emu1_谁特么告诉你EMU就是1分钱就能赚75美元?
  16. DCDC开关电源电磁兼容(五)EMI滤波器的设计步骤(内有每一步如何设计详解)
  17. DCGAN训练小记(断点继续练习)
  18. 自己动手作PPPOE服务器
  19. 令人叹为观止的10大3D打印机应用
  20. 【模拟电子技术Analog Electronics Technology 27】—— 非正弦波发生电路参数的详细计算分析(阈值电压和周期)

热门文章

  1. 安装双系统误删Windows引导,0xc0000098解决方案
  2. 状态机在分布式系统中的应用
  3. linux和windows哪个好用,Windows 1709和1803版本哪个好用
  4. DIV布局之道四:clear:both清除DIV两侧浮动详解
  5. Arduino------红外控制舵机风扇
  6. 理解“same-site“ 和 “same-origin“
  7. 补习系列-SpringBoot 整合Shiro 一指禅
  8. Ubuntu MySQL 亚马逊_亚马逊EC2 ubuntu下安装mysql远程无法连接问题o
  9. 黑马程序员,黑马论坛------Android24期,毕业143天,100%全部就业,平均薪水8415元!
  10. 创建 sencha ExtJS 6或7 项目的几种方法