- 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
- 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
- 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
查看更多
ISO18000-6B标准中防碰撞算法的改进
ISO18000-6B标准中防碰撞算法的改进
99单片机工作室 严天华
摘要:本文详细分析了ISO18000-6B标准的防碰撞算法及实际阅读器设计中带来的问题,阐述了改进办法及思路,最后给出了利用该算法的阅读器的软件实现流程。
关键词:ISO8000-6B 防碰撞算法 改进 CRC-16
前言
早期的系统中,1次只能读/写1个射频卡。射频卡之间要保持一定距离,确保一次只有一个卡在读写区域内。很多时候不可避免地会出现多个射频卡进入识别区域时信号互相干扰的情况(即碰撞),应用起来很不方便。但这种应用很难满足越来越多的系统需求。
由于射频卡含有可被识别的唯一信息(序列号),RFID系统的目的就是要读出这些信息。如果只有一个射频卡位于阅读器的可读范围内,则无需其他的命令形式即可直接进行阅读。如果有多个射频卡同时位于一个阅读器的可读范围内,则射频卡的应答信号就会相互干扰形成所谓的数据碰撞,从而造成阅读器和射频卡之间的通信失败。为了防止这些碰撞的产生,RFID系统中需要设置一定的相关命令,解决冲突问题,这些命令被称为“防碰撞命令或算法(anticollision algorithms)”。
ISO18000-6B中防碰撞算法
防碰撞算法由卡片支持的状态机、命令、容错校验机制及命令处理流程综合协同完成。通过硬件或者软件来实现防碰撞算法流程。
卡片的状态及状态切换
(图1)
Power-Off(掉电状态):当阅读仪器不能激活标签时,标签处于该状态。
Ready(准备好状态):当阅读器上电,标签获得波束转化来的电能供内部芯片工作时处于该状态
ID(碰撞状态):当标签试图发送自己的卡号给阅读器时处于该状态。
DataExchange(数据交换状态):当该标签已经被阅读器识别到,并被选择后,处于该状态。
标准中支持的命令序列
ISO18000-6B中规定的强制命令中,实现二进制搜索算法的命令有,
Initialize:收到该命令的卡片,卡片将从ID、DataExchange状态回到Ready状态。
Select:收到该命令的卡片,Ready状态将进入ID状态,ID状态保持ID状态,参与防碰撞命令Fail和Success.
DataRead:接收该命令的卡片,将从其他状态直接进入DataExchange状态
Fail:处于ID状态的卡片会接受该命令,卡片内部计数器如果不等于0则加1,否则应该其卡号给阅读器。
Success:处于ID状态的卡片会接受该命令,卡片内部计数器减1,如果结果为0则返回其卡号给阅读器。
标准中卡片与阅读器间通讯校验机制
卡片与阅读器间采用CRC-16容错校验机制,。
卡片防碰撞处理流程(参考ISO/IEC 18000-6:2004(E))
反碰撞基本处理流程就是根据标签的状态及标签支持的命令序列进行处理的,将碰撞而找到的标签切换到数据交换状态,让该卡不再参与防碰撞过程的命令,从而实现将一大堆卡片一张一张找出的过程。
反碰撞软件算法基本流程如下:
阅读器可以使用GROUP_SELECT 和 GROUP_UNSELECT命令来定义所有或者部分进入感应区的标签参与碰撞过程。可以使用相关命令来运行防碰撞算法。
对于碰撞算法,标签在硬件上应该具有以下两个硬件:
? 一个8位计数器
? 一个产生0或1的随机发生器
开始,一组标签通过GROUP_SELECT命令进入ID状态并设置其内部的计数器为0。可以使用GROUP_UNSELECT命令让一部分标签返回到READY 状态,其他的能够被选择.
按上述描述选择后,可以循环执行下面的流程:
所有处于ID状态的标签,其计数器将为0,标签会应答其ID号给阅读器。
如果超过1个标签传送, 则阅读器就会收到错误的响应。就需要继续发送FAIL command 命令.
对于接收到FAIL命令的所有标签,如果其计数器不为0,则自动加1,他们将远离应答其ID号的状态。
对于接收到FAIL命令的所有标签,如果其计数器为0,将产生一个随机数。如果随机数为1,则其计数器加1,否则保持计数器为0,并应答其ID号给阅读器
可能会出现以下4种情况的一种:
超过1个标签应答,则执行FAIL命令,回到步骤2(情况1)
如果所有标签产生的随机数为1,则没有应答,阅读器什么也收不到.阅读器会发送SUCCESS命令. 所有计数器减1, 对于计数器为0的标签则应答其ID号. 一般情况会回到步骤2. (情况2)
如果只有一个标签应答其ID号,并且接收正确, 阅读器应该发送带ID号的DATA_READ 命令给相应标签. 标签收到DATA_READ 命令后切换到 DATA_EXCHANGE 状态并应答其数据
阅读器应该发送SUCCESS命令,所有ID状态的标签的计数器减1.
如果只有一个计数
文档评论(0)