首页> 中国专利> 一种用于RFID系统中的基于分组动态帧及二叉树搜索的多标签防碰撞方法

一种用于RFID系统中的基于分组动态帧及二叉树搜索的多标签防碰撞方法

摘要

本发明公开了一种用于RFID系统中的基于分组动态帧及二叉树搜索的多标签防碰撞方法,该方法包括标签数量估计阶段和标签识别阶段。标签数量估计阶段完成对未识别标签数量的估计;标签识别阶段根据未识别标签数量的估计值选取最优的分组数和每组最优帧长,将标签分配到若干组的帧周期内依次识别,并对每组发生碰撞的时隙中的标签采用二叉树搜索加以识别,进而识别完所有标签。本发明结合了ALOHA算法及二叉树算法的优点,大大降低了识别初期的碰撞时隙和识别后期的空闲时隙数量,结构简单、识别速度快、标签功耗低,非常适合应用于RFID系统中。

著录项

  • 公开/公告号CN101393594A

    专利类型发明专利

  • 公开/公告日2009-03-25

    原文格式PDF

  • 申请/专利权人 中山大学;

    申请/专利号CN200810218611.8

  • 发明设计人 詹宜巨;杨健;蔡庆玲;王永华;

    申请日2008-10-24

  • 分类号G06K7/00(20060101);

  • 代理机构44104 广州知友专利商标代理有限公司;

  • 代理人李海波

  • 地址 510275 广东省广州市新港西路135号

  • 入库时间 2023-12-17 21:40:45

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-12-16

    未缴年费专利权终止 IPC(主分类):G06K7/00 授权公告日:20100602 终止日期:20141024 申请日:20081024

    专利权的终止

  • 2010-06-02

    授权

    授权

  • 2009-05-20

    实质审查的生效

    实质审查的生效

  • 2009-03-25

    公开

    公开

说明书

技术领域

本发明涉及一种应用于射频识别(RFID)系统中的防碰撞方法,尤其涉及一种用于RIFD系统中的基于分组动态帧及二叉树搜索的多标签防碰撞方法。

背景技术

射频识别(Radio Frequency Identification,RFID)是一种具有实时、快速、准确采集等特点的自动识别技术。RFID系统由读写器、标签和应用程序三部分组成,读写器和标签之间采用非接触方式通信。标签有主动、半主动和被动三种,其中被动标签由于其结构简单,成本较低,因而被广泛应用。

由于被动标签结构的简单性,标签在接到读写器指令后会立即响应读写器。但是当多个标签同时响应某个读写器时,标签数据间的相互干扰会导致读写器无法正常读取任何一个标签数据,即发生所谓的标签冲突。传统的标签防碰撞算法可分为ALOHA算法和树形算法两大类。ALOHA算法的复杂度较小,而树形算法则相对较大。这两种算法都存在各自的问题:ALOHA算法虽然复杂度及对标签的要求较低,但存在标签始终无法识别的可能,并且在标签数量庞大时算法的性能不佳,这是由于标签内部寄存器的位数是有限而导致的;树形算法的优点是识别率可达100%,但是以增加算法的复杂度为代价的,这增加了读写器功耗并且减小了标签最大可识别距离。此外,这两种算法还都存在着时隙浪费的现象:ALOHA算法在识别过程后期存在大量的空闲时隙浪费,这是由于帧长或分组数不能在识别过程中随着标签的识别实时调整造成的;树形算法在识别过程前期因同时响应读写器的标签较多而导致碰撞时隙较多,而其中的查询树算法的性能还受到标签ID分布情况的影响较大。

发明内容

本发明的目的是提供一种用于RFID系统中的基于分组动态帧及二叉树搜索的多标签防碰撞方法,该方法可以有效避免标签数据发生的碰撞次数,并且较大程度的降低识别时间和功耗。

为达上述目的,本发明通过采取以下技术方案予以实现:

一种用于RFID系统中的基于分组动态帧及二叉树搜索的多标签防碰撞方法,包括如下步骤:

(1)读写器对未识别标签数量进行估计,并计算该标签数量下的最优分组数和最优帧长:首先,读写器设置初始分组和初始帧长,将标签随机分到所设的若干组内,每组的帧长为所设长度(即每组的帧周期包含的时隙数量);然后,读写器依次将所有分组帧周期的时隙轮询一遍,并统计空闲时隙、单标签时隙和碰撞时隙的数量,据此估计未识别标签的数量,并计算出该标签数量下的最优分组数和最优帧长;

(2)读写器以最优分组数和最优帧长为参数开始新一轮轮询,依次对当前组帧周期的每个时隙内的标签进行识别:读写器按最优分组将未识别标签重新随机分组,每组的帧周期长度为最优帧长,开始轮询后,读写器对每个时隙状态进行判断,若为空闲时隙,则直接进入下一时隙,若为单标签时隙,则识别该标签,然后进入下一时隙,若为碰撞时隙,则采用二叉树搜索识别出该碰撞时隙内所有的标签,然后进入下一时隙,直到当前组帧周期结束;

(3)读写器将最优分组数递减1,并以最优帧长和更新后的最优分组数开始新一轮轮询,依次对当前组帧周期的每个时隙内的标签进行识别,直到最优分组数递减至0。

步骤(1)中所述的标签按所设分组数进行分组的具体过程为:读写器将所设分组数、所设帧长和一个随机数插入到修改指令,并发送给标签,收到该指令后,标签根据该指令中的随机数和标签ID产生一新的随机数,并将其对指令中的分组数取余,只有余数为0的标签才在当前组的帧周期内活动,从而实现标签的分组;标签还根据该指令中的所设帧长随机产生一不大于该参数的正整数作为标签所属时隙存储,只有轮询到该时隙时,该标签才允许响应读写器。

步骤(1)中所述的未识别标签数量的估计的具体过程为:计算出当前帧长、不同标签数量下,空时隙数、单标签的时隙数和碰撞时隙数的期望值,与相应统计值距离最近时的标签数量即被认为是识别过程开始时的未识别标签的数量,减去单标签时隙计数便是当前未识别标签的数量。

步骤(1)中所述的计算最优分组数和最优帧长的具体过程为:当未识别标签数量不大于最大帧长时,设置帧长等于未识别标签数量,并设置分组数为1;当未识别标签数量大于最大帧长时,将标签分组且每组帧长等于最大帧长,其中分组数采取倍增或减半的更改方式,且由k=nk/354决定,其中分组数k取大于0的整数,nk为该分组数下的标签数量的上限。

步骤(2)中所述的碰撞时隙内的二叉树搜索识别的主要步骤为:

1)读写器发送C指令,该指令包含了读写器的层数寄存器值;

2)读写器判断层数寄存器值,若小于0,表明该二叉树所有标签都已被识别,则退出该子程序,若大于等于0,则等待标签回复;

3)在某时隙中,读写器接收到的标签回复数据有以下三种情况:若无信号,则将读写器中层数寄存器值减1,并发送I指令,并转入步骤2);若回复数据有效,则在识别该标签,并将其状态设为已识别后,将读写器中层数寄存器值减1,并发送I指令,转入步骤2);若回复数据无效,则将读写器中层数寄存器值加1,转入步骤1)。

与现有技术相比,本发明具有如下优点和有益效果:

(1)首次提出将标签分为若干组分批次识别。本发明在识别标签前先对标签进行分组,每组内均为一个独立的识别过程,在帧长不变的前提下提高了标签数量庞大时的系统性能。

(2)首次提出在发生碰撞的时隙内部嵌入二叉树搜索算法完成该时隙内碰撞标签的识别。本发明在当前时隙发生碰撞时,立即调用二叉树搜索算法完成对该时隙内所有碰撞标签的识别,然后再进入下一时隙。这样做的优点是:保证低复杂度的前提下使识别率达100%,不需要读写器针对当前组帧周期内所有碰撞标签额外再分配新的帧周期,同时降低了识别初期的碰撞时隙数和识别后期的空闲时隙数。

(3)本发明充分利用读写器的内存和计算能力,所述RFID系统对标签的要求低,只需在标签内增设右移一位的简单电路和一与门用于实现分组,增设一层数寄存器用于实现二叉树搜索识别,且若所述层数寄存器为N位,则可识别该碰撞时隙内的标签数量的理论值为读写器中则需设置一个当前时隙寄存器,一个最优帧长寄存器,一个当前分组寄存器,一个碰撞层数寄存器,一个空闲时隙寄存器,一个单标签时隙寄存器,一个碰撞时隙寄存器,结构简单,易于施行。

(4)提高系统吞吐率,缩短识别时间。由于采用了将标签分组、以及碰撞时隙内部采用二叉树搜索识别,降低了识别初期的碰撞时隙数和识别后期的空闲时隙数,提高了系统吞吐率,缩短了识别时间。

(5)降低标签功耗。由于设置标签首先发送其ID的前m位(m远小于标签ID位数)响应读写器,接收到读写器的确认信息后才再次发送完整的标签ID,大为降低了标签的功耗。

总体来说,本发明结合了ALOHA算法及二叉树算法的优点,通过采用标签分组识别和碰撞时隙内二叉树搜索识别等策略降低了识别初期的碰撞时隙和识别后期的空闲时隙数量,结构简单、识别速度快、标签功耗低,非常适合应用于RFID系统中。

附图说明

图1为本发明方法执行过程示意图。

图2为读写器识别所有标签的流程图。

图3为Estimation子程序示意图。

图4为Binary Selection子程序示意图。

图5为标签响应读写器修改指令示意图。

图6为标签响应读写器C指令示意图。

图7为标签响应读写器I指令示意图。

具体实施方式

下面结合附图和具体实施方式对本发明做进一步的详细说明。

(1)读写器识别所有标签的流程

如图2所示,首先,根据具体应用的需要设定分组数初始值和帧长初始值,这里设定分组数初始值为1、帧长初始值为64。根据以上设定,读写器设置帧长计数值counter=64、当前组数寄存器group=1,并清零空闲时隙寄存器、单标签时隙寄存器和碰撞时隙寄存器。随后读写器发出修改指令,该指令中包含了以上设定的分组数、帧长及读写器生成的一随机数,并发送I指令开始当前帧周期,然后等待标签回复。

在某时隙中,读写器接收到的标签回复数据有以下三种情况:若无信号,表明无标签回复,则将空闲时隙计数c0加1;若回复数据无效,表明有碰撞发生,则将碰撞时隙计数ck加1;若回复数据有效,表明有单个标签回复,则将单标签时隙计数c1加1,并识别该标签。

读写器时隙寄存器值自减1,并判断其是否为0,若不为0,则读写器发送I指令进入下一时隙,并等待标签回复。若读写器时隙寄存器值为0,则认为当前帧周期结束,判断碰撞时隙计数ck是否为0,若为0,则认为所有标签都已被识别,结束整个识别过程,若不为0,则调用Estimation子程序估计出当前未识别标签的数量,并计算出该标签数量下的最优分组数G和最优帧长L。

读写器设置当前时隙寄存器counter=L,设置当前分组寄存器group=G,并存储最优帧长L到最优帧长寄存器,接着读写器发送修改指令和I指令,并等待标签回复。

在某时隙中,读写器接收到的标签回复数据有以下三种情况:若无信号,则读写器无操作;若回复数据有效,则读写器识别该标签;若回复数据无效,则读写器调用Binary Selection子程序完成对该时隙内所有碰撞标签的二叉树搜索识别。

读写器时隙寄存器值自减1,并判断其是否为0,若不为0,则读写器发送I指令进入下一时隙,并等待标签回复。若读写器时隙寄存器值为0,则认为当前组的帧周期结束,将读写器当前分组寄存器值递减,并判断其是否为0,若不为0,读写器将最优帧长寄存器值和更新后的当前分组寄存器值插入修改指令,并发送,然后等待标签回复,若为0,则表明所有分组的帧周期都已结束,则结束整个识别过程。

(2)未识别标签数量的估计及最优分组数和最优帧长的选取

该部分功能由Estimation子程序实现,根据统计得到的空闲计数c0、碰撞时隙计数ck及单标签时隙计数c1估计未识别标签的数量,并计算该标签数量下的最优分组数和最优帧长。其流程图见图3所示。

1)估计未识别标签的数量

由于对未识别标签数量估计准确度将直接影响到其后的标签分组数和帧长的确定,进而影响到整个系统的性能指标。定义向量c={c0,c1,ck},分别表示统计的空时隙数、单个标签的时隙数和碰撞时隙数;定义a={a0,a1,ak},分别表示空时隙数、单个标签的时隙数和碰撞时隙数的期望值。由切比雪夫不等式,随机变量X的随机试验结果总落在其期望值附近,所以当向量和距离ε达到最小时n的取值即可被看作标签数量最佳估计值。

ϵ(L,c0,c1,ck)=minn[(a0L,n-c0)2-(a1L,n-c1)2-(akL,n-ck)2]---(1)

式(1)中,L,n分别代表帧长和标签数,则有r个标签占有的时隙数的期望值为可用下式得到:

arL,n=L·nr·(1L)r·(1-1L)n-r(rn)---(2)

在搜索ε最小值的过程中,确定n的取值范围为[c1+2ck,2(c1+2ck)]。这是由于有c1个单标签时隙和ck个碰撞时隙的系统当中至少存在c1+2ck个标签,即n的下限应为c1+2ck;而上限则由仿真试验结果确定。

得到ε最小时的n后,将其减去c1便得到当前未识别标签的数量。

2)最优分组数和最优帧长的选取

系统最大吞吐率在满足帧长与未识别标签数相等时得到,因此采用以下分组数和帧长选取策略:设置最大帧长为256个时隙,当未识别标签数量不大于最大帧长即n≦256时,设置帧长等于未识别标签数量,并设置分组数为1;当n>256时,将标签分组且每组帧长均为256。考虑到分组数的倍增或减半可由数据左移或右移简单实现,故分组数采取倍增或减半的更改方式,则分组数由下式决定:

a1256,nk256=a1256,n2k256(k=1,2,...)---(3)

上式的含义为:随着标签数量的增大,当分组数为k时的系统效率下降到与分组数为2k时的系统效率相等时,则在下一个读周期将分组数倍增。由此可以得到分组数由k→2k时的标签数量nk为:

nk=354k(k=1,2,...)        (4)

(3)碰撞时隙内的二叉树搜索识别

该部分由Binary Selection子程序实现,其流程图见图4所示,主要步骤为:

1)读写器发送C指令,该指令包含了读写器的层数寄存器值。

2)读写器判断层数寄存器值,若小于0,表明该二叉树所有标签都已被识别,则退出该子程序,若大于等于0,则等待标签回复。

3)在某时隙中,读写器接收到的标签回复数据有以下三种情况:若无信号,则将读写器中层数寄存器值减1,并发送I指令,并转入2);若回复数据有效,则在识别该标签,并将其状态设为已识别后,将读写器中层数寄存器值减1,并发送I指令,转入2);若回复数据无效,则将读写器中层数寄存器值加1,转入1)。

上述碰撞时隙内的二叉树搜索识别的过程较为复杂,这里结合图1加以说明:图1中第1组的第i+6个时隙为碰撞时隙,读写器将对其内部的三个标签采取分裂操作,标签将各自的时隙寄存器随机选择0或1的增量,这里有1个标签选择了0,而另外2个选择的都是1,并将各自的层数寄存器值变为1,表示标签在该二叉树中处在第1层。读写器首先考察表示选择0增量的左孩子结点,该结点内由于仅有1个标签,因此可成功被识别。接着,读写器转向表示选择1增量右孩子结点。由于右孩子结点中的两个标签时隙寄存器值仍相同,标签碰撞依然存在,因此读写器将对这两个标签再次分裂操作,这一次两个标签同时选择了0,即同时落在了当前结点的左孩子结点中,且各自层数寄存器值变为2。读写器仍首先考察当前结点的左孩子结点,发现仍存在标签碰撞,于是第三次分裂操作,这次这两个标签分别选择了0和1,其层数计数器值变为3,因此读写器可依次对其成功识别。接着,读写器返回到上一层即第2层,继续识别该层右孩子结点中的标签,发现无标签后再次返回到上一层即第1层,发现完成识别的已经是该层的右孩子结点,于是完成对该碰撞时隙的识别。图1中,φ表示时隙内无标签响应,·的数量表示时隙内相应标签的数量。以图1为例,其第1组的第i个时隙为空时隙,第i+1个时隙为单标签时隙,因此读写器均可完成这两个时隙的识别。第i+2个时隙为有两个标签的碰撞时隙,因此需要在该碰撞时隙内部再采用二叉树递归过程。

(4)标签响应不同读写器指令的流程

读写器发送的指令有三种:修改指令、C指令和I指令。修改指令用于将标签按所设分组数随机分组和随机产生标签所属时隙;C指令用于将发生碰撞的标签将的时隙寄存器值随机加0或1,将未发生碰撞的标签的时隙寄存器加1;I指令用于将所有活动的标签的时隙寄存器值减1,即进入下一时隙。

1)标签响应读写器修改指令的流程

如图5所示,标签接收到读写器修改指令后,根据该指令中的随机数和标签ID产生一新的随机数,并将其对指令中的分组数取余,只有余数为0的标签才可以在当前组的帧周期内活动,这样便实现了标签的分组;标签还在该指令中的帧长范围内随机选择一个正整数作为标签所属时隙,并存入标签的时隙寄存器内。完成以上操作后,标签等待下一读写器指令。

2)标签响应读写器C指令的流程

如图6所示,标签接收到读写器C指令后,将该指令中的读写器的层数寄存器值与标签的层数寄存器值比较,若相等,则表明该标签处在二叉树当前的碰撞结点中,则将标签时隙寄存器值随机加0或1,并将标签层数寄存器值加1,该操作将标签随机分配到当前二叉树结点的两个孩子结点中;若不相等,则说明该标签处在二叉树其他结点中,仅将其时隙寄存器值加1,以抵消正确识别一个标签后所有其他标签将时隙寄存器减1的操作。完成以上操作后,标签等待下一读写器指令。

3)标签响应读写器I指令的流程

如图7所示,标签接收到读写器I指令后,将标签时隙寄存器值递减1,若为0,则响应读写器,具体操作为:标签先发送ID的前m位测试当前时隙状态,若读写器成功接收该测试信息,表明当前时隙仅有该标签响应读写器,则读写器发回反馈信息,标签接收到该信息后发送完整的ID信息,并将标签状态设置为已识别,此后标签将不再响应任何的读写器指令。若标签时隙寄存器值不为0,表明未轮询到该标签所属时隙,则标签等待下一读写器指令。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号