适用于RFID系统的增强型四叉树防碰撞算法的制作方法

文档序号:11156278阅读:951来源:国知局
适用于RFID系统的增强型四叉树防碰撞算法的制造方法与工艺

本发明涉及一种适用于RFID系统的增强型四叉树防碰撞算法,属于无线射频识别中的标签防碰撞技术。



背景技术:

无线射频识别技术(Radio Frequency Identification, RFID)是二十世纪90年代兴起的一种非接触式自动识别技术,其基本原理是利用射频信号和空间耦合(电感或电磁耦合)传输特性实现对被识别物体的自动识别。它是通过射频信号自动识别目标对象,获取相关数据,无需人工接触、无需光学可视即可完成信息输入及处理,并且操作简单快捷。射频识别技术应用范围很广,主要应用于军事、工业生产及日常生活等各个领域。

射频识别系统的构成为:标签、阅读器、计算机网络。在 RFID 系统应用中,当多个电子标签工作在同一频率,处于同一个阅读器作用范围内时,在没有采用多址访问控制机制情况下,将几乎同时响应阅读器的指令而发送信号,这样就会产生信号争用问题。信号互相干扰,阅读器不能正确接收数据,也就不能正确识别电子标签,使得阅读器发生判断错误,认为这个标签不在自己的作用范围内或无法正确读取信息,即发生了碰撞。同时多个阅读器之间工作范围重叠也将造成碰撞,阅读器之间的防碰撞问题容易解决,主要研究标签之间防碰撞问题,避免碰撞的方法就被称为防碰撞算法。在很多应用中系统的性能很大程度上取决于系统的防碰撞算法,因此为了保证 RFID 系统能够正常高效的工作,研究防碰撞算法是非常必要的。

根据电子标签工作频段之不同,人们提出了不同的防碰撞算法,总结为随机性防碰撞算法和确定性防碰撞算法两大类,其代表性算法分别为 Aloha法和二进制搜索法。基于Aloha算法是一种随机性防碰撞算法,原理简单,易于操作,但在一定的时隙范围内,系统对标签的全数识别存在概率性,标签容易产生错判、漏判、“标签饿死”现象,主要包括纯Aloha算法、时隙Aloha算法、帧时隙Aloha算法、动态帧时隙Aloha算法及改进算法。二进制防碰撞算法是确定性算法,不会产生“标签饿死”现象,对标签理论上有100%的识别率,主要包括二进制搜索算法、动态二进制搜索算法、后退式二进制算法、跳跃式动态二进制算法及其自适应算法、各类改进算法。

申请人曾对防碰撞算法进行深入研究,并提出一种多叉树防碰撞算法,即中国专利号为ZL201310133747.X公开了适用于RFID系统的多叉树防碰撞算法;算法步骤包括算法约定、初始化前缀堆栈、检测碰撞、选择搜索方式、确定前缀、判定前缀堆栈,最终使前缀堆栈为空,算法结束。该发明利用读写器判断碰撞位相邻的个数情况,自适应地选择无空闲时隙的八叉树或四叉树或二叉树的搜索方式,加快了搜索速度,在判断出存在三个相邻碰撞位后立即截断其后数据的传输,利用计数器在若干个比特的传输时间内反馈相邻碰撞位中的最低位,不仅减少了数据的传输,降低了能量消耗,而且消除了空闲时隙,缩短了识别时间。



技术实现要素:

本发明的目的在于针对现有技术中存在的整个查询过程阅读器查询次数多,传输比特数多等不足之处,提供了一种适用于RFID系统的增强型四叉树防碰撞算法。该方法是面向RFID四叉树算法的增强型防碰撞算法,先提取碰撞位,形成新的标签,再一律采用效率较高的动态四叉树搜索算法。大幅度减少了查询次数与传输比特数,提高了吞吐率,较少了识别时间,特别是在标签数目、位数较多的时候优势更加明显,显著提高了系统的防碰撞性能。

本发明采用的技术方案如下:

一种适用于RFID系统的增强型四叉树防碰撞算法,约定每个标签ID为唯一,包括以下步骤:

步骤1)初始化查询堆栈:初始化阅读器的前缀堆栈,使之为空,然后阅读器向工作范围内的所有标签发送含查询序列的请求命令REQUEST(NULL),所有标签响应并返回自身ID给阅读器;

步骤2)检测碰撞位:阅读器利用曼彻斯特编码对每一个标签返回的ID信息解码,识别出碰撞位,将 j 位长度的查询序列中所有碰撞位置 1,其他位置 0,形成新的命令发送给标签,标签接收到此命令后将自身 ID 与该命令进行比对,提取出标签ID数字为1的对应位形成新的 k 位标签 ID ,供后续步骤的碰撞识别过程中动态四叉树搜索方式使用;

步骤3)确定查询前缀:此时所有碰撞位连在一起,直接采用动态四叉树搜索,此时阅读器先发送XOR命令给标签,并依据标签返回消息从REQUEST(00)、REQUEST(01)、REQUEST(10)、REQUEST(11)确定新的查询命令;

步骤4)查询前缀入栈:将新的查询命令压入堆栈,按由栈底到栈顶的顺序发送给标签,符合查询命令的标签响应;

步骤5)判断查询堆栈:判断堆栈命令是否为空,若不为空,则返回步骤3)继续识别;若为空,则整个识别过程结束。

本发明进一步说明,所述步骤2)中通过曼彻斯特编码识别出标签碰撞位后,通过阅读器发送的相与命令提取1所对应的位,形成新的k位标签 ID ,把标签所有碰撞位连在一起后,再采取动态四叉树搜索方式。

本发明进一步说明,所述步骤3)中阅读器发送XOR命令给标签,根据标签响应结果,阅读器发送不同的查询前缀给标签:

若结果只有1,则阅读器发送查询前缀REQUEST(00,DH)、REQUEST(11,DH)给标签,然后标签将查询前缀与自身高两位进行比对,最高两位是00的标签返回自身ID给阅读器进行下一步的识别,最高两位是11的标签也返回自身ID信息给阅读器进行下一步的识别;

若结果只有0,则阅读器发送查询前缀REQUEST(01,DH)、REQUEST(10、DH)给标签;

若结果既有0又有1,则阅读器发送查询前缀REQUEST(01,DH)、REQUEST(10、DH)、REQUEST(00,DH)、REQUEST(11,DH)给标签。

本发明的优点:

1.首先利用曼彻斯特编码检测出所有标签的碰撞位,在提取所有碰撞位形成新的标签,不仅大大较少了无用比特位的传输,节省了查询过程时间,更利于下一步对标签的识别过程。若标签 ID 位为128 位、256 位或者更多,此精简步骤的优势就能够得到更明显的展示出来。

2.对标签的识别过程中由于引入了碰撞位XOR运算命令,避免产生多余的空闲时隙,所以本发明在进行四叉树搜索时每层搜索里最多只比二叉树搜索多一个空闲时隙;大大减少了空闲时隙数,缩短了查询时间,提高了系统性能。

附图说明

图1.本发明的适用于RFID系统的四叉树防碰撞算法流程图。

图2.阅读器发送Request(NULL)指令后标签响应示意图。

图3.阅读器发送相与指令(01100101)后标签响应示意图。

图4.阅读器发送XOR指令后标签响应示意图。

图5.阅读器发送Request(00,11)指令后标签响应示意图。

图6.阅读器发送Request(01,11)指令后标签响应示意图。

图7.阅读器发送Request(00,01)指令后标签响应示意图。

图8.阅读器发送Request(01,01)指令后标签响应示意图。

图9.阅读器发送Request(10,01)指令后标签响应示意图。

图10.阅读器发送Request(11,01)指令后标签响应示意图。

图11.阅读器发送Request(10,11)指令后标签响应示意图。

图12.阅读器发送Request(11,11)指令后标签响应示意图。

具体实施方式

下面结合附图图1~12和具体实例对本发明进一步说明。

首先进行约定:标签ID唯一、DH为当前相邻碰撞两位中的最高位。其次引入以下命令:

(1)REQUEST(请求)命令: 包含REQUEST(NULL)、REQUEST(prefix,DH)。当阅读器发送REQUEST(11111111)给标签时,标签将自身ID与之相比对,小于REQUEST(11111111),则返回给阅读器自身ID;反之,标签不响应。prefix 表示阅读器向标签发送的查询前缀,采取二叉树时为0和1,采取四叉树时为00、01、10、11。DH表示当前两碰撞位的最高位。

(2)SELECT(选择)命令: 阅读器发送命令给标签时,标签将自身ID与查询命令做对比,若小于等于查询命令则返回自身ID给阅读器,继续识别过程;反之,则不响应。

(3)READ-DATA(读取数据)命令:被SELECT命令选中的标签,阅读器向这些标签发送READ-DATA命令,然后标签返回给阅读器自身ID信息。

(4)UNSELECT(休眠)命令:标签发送自身ID后,阅读器成功识别该标签,然后发送UNSELECT休眠指令给该标签使其屏蔽阅读器的以后发送的任何指令,除非它离开该阅读器工作范围。

(5)XOR(异或)命令:提取出碰撞位形成新的标签后,阅读器依次向当前最高两位发送XOR命令。然后标签返回给阅读器异或后的结果。若结果只有1,则阅读器发送查询前缀REQUEST(00,DH)、REQUEST(11,DH)给标签;若结果只有0,则阅读器发送查询前缀REQUEST(01,DH)、REQUEST(10、DH)给标签;若结果既有0又有1,则阅读器发送查询前缀REQUEST(01,DH)、REQUEST(10、DH)、REQUEST(00,DH)、REQUEST(11,DH)给标签。成功避免了四叉树中的空闲时隙,减少了传输比特数。

下面通过一个例子详细阐述识别过程:

设在阅读器工作范围的标签有:G:00111000、H:01011001、I:01111100、J:00111100、j:00111101、L:00111001,共6个EPC码为8位的待识别标签,ID号最左边为最高位是第七位,最右边为最低位是第零位。

步骤1)初始化查询堆栈:初始化阅读器前缀堆栈,使之为空,阅读器向工作范围内的所有标签发送含查询序列的请求命令REQUEST(NULL),在此例中为REQUEST(11111111),标签进行比对,序列号均小于它,所有标签响应,返回自身ID给阅读器;

步骤2)检测碰撞位:阅读器利用曼彻斯特编码对标签返回的ID信息解码,识别出碰撞情况为0××11×0×,第六位、第五位、第二位、第零位分别发生了碰撞,阅读器根据此时标签的碰撞情况重新发送相与命令(0110 0101)给标签,标签收到命令后将此命令与自身ID进行相与运算,并提取标签ID数字1对应的位信息,就形成新的标签信息返回阅读器;上述G、H、I、J、j、L六个标签此时对应的新标签信息分别为:A(0100)、DH(1001)、C(1110)、D(0110)、E(0111)、F(0101);由于第七位、第四位、第三位和第一位没有发生碰撞,这四位的信息已由阅读器进行保存,现在的标签ID变成了4位的,相当于把最初8位ID中的碰撞位全部提取出来,现在所有碰撞位连在了一起,下面开始动态四叉树搜索方式识别;

步骤3)确定查询前缀:阅读器发送XOR命令给当前最高两位进行异或运算,分为三种情况;

第一种:若结果只有1,则阅读器发送查询前缀REQUEST(00,DH)、REQUEST(11,DH)给标签,然后标签将查询前缀与自身最高两位进行比对,最高两位是00的标签返回自身ID信息给阅读器进行下一步的识别,最高两位是11的标签也返回自身ID信息给阅读器进行下一步的识别;

第二种:若结果只有0,则阅读器发送查询前缀REQUEST(01,DH)、REQUEST(10、DH)给标签;

第三种:若结果既有0又有1,则阅读器发送查询前缀REQUEST(01,DH)、REQUEST(10、DH)、REQUEST(00,DH)、REQUEST(11,DH)给标签;

在本例中,标签第2位和第3位进行异或,结果为0和1,则阅读器把查询前缀REQUEST(01,11)、REQUEST(10、11)、REQUEST(00,11)、REQUEST(11,11)压入堆栈,当前最高碰撞位为第三位。

步骤4)查询前缀入栈:将新的查询命令压入堆栈,按由栈底到栈顶的顺序发送给标签,符合查询命令的标签响应;

具体识别过程如下:

a)REQUEST(00,11)出栈,无标签响应。

b)REQUEST(01,11)出栈,标签A、D、E、F发生碰撞并返回给阅读器第2位、第3位的信息,阅读器继续发送低两位XOR命令给标签,结果为0和1,阅读器发送查询前缀REQUEST(01,01)、REQUEST(10、01)、REQUEST(00,01)、REQUEST(11,01)给标签。REQUEST(00,01)出栈,只有标签A与查询前缀相同,所以只有A响应阅读器,则阅读器成功识别标签A,读取A的ID信息,使其休眠。

c)REQUEST(01,01)出栈,只有标签F与查询前缀相同,所以只有F响应阅读器,则阅读器成功识别标签F,读取F的ID信息,使其休眠。

d)REQUEST(10,01)出栈,只有标签D与查询前缀相同,所以只有D响应阅读器,则阅读器成功识别标签D,读取D的ID信息,使其休眠。

e)REQUEST(11,01)出栈,只有标签E与查询前缀相同,所以只有E响应阅读器,则阅读器成功识别标签E,读取E的ID信息,使其休眠。

f)REQUEST(10,11)出栈,只有标签B与查询前缀相同,所以只有B响应阅读器,则阅读器成功识别标签B,读取B的ID信息,使其休眠。

g)REQUEST(11,11)出栈,只有标签C与查询前缀相同,所以只有C响应阅读器,则阅读器成功识别标签C,读取C的ID信息,使其休眠。

步骤5)判断查询堆栈:判断查询堆栈是否为空,若为空,整个识别过程结束;若不为空,返回Step3)继续识别。

最后应说明的是,本发明是经过多位标签防碰撞算法技术人员长期科学研究经验积累,并通过创造性劳动创作而出。先提取碰撞位,形成新的标签,再一律采用效率较高的动态四叉树,大幅度减少了查询次数与传输比特数,提高了吞吐率,较少了识别时间,特别是在标签数目、位数较多的时候优势更加明显,显著提高了系统的防碰撞性能。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1