一种k比特连续碰撞位检测分裂树RFID标签防碰撞算法的制作方法

文档序号:20443438发布日期:2020-04-17 22:34阅读:406来源:国知局
一种k比特连续碰撞位检测分裂树RFID标签防碰撞算法的制作方法

本发明属于射频识别技术领域,特别涉及一种k比特连续碰撞位检测分裂树rfid标签防碰撞算法。



背景技术:

射频识别(rfid)技术是物联网感知层中的关键技术。它通过反向散射阅读器发射的信号来识别存储在标签中的数据。典型的rfid系统通常由一个阅读器和许多标签组成,每个标签都覆盖有唯一标识符(uid)。当多个标签同时回复时,因为所有标签共享同一无线信道,将发生标签碰撞。标签碰撞不仅会降低带宽利用率,而且也会增加识别延迟。

现存的标签防碰撞方法主要分为两类,基于aloha与基于分支树方法。基于aloha的方法也被称为不确定性方法。它的本质是当标签碰撞发生时,阅读器要求发生碰撞的所有标签随机延迟一段时间在重新参与下次识别。由于随机选择时间延迟,因此存在标签饥饿问题,导致不能完全识别所有标签。目前的基于aloha的方法研究是主要侧重于动态帧时隙(dfsa)方法。dfsa动态调整帧的长度以实现最佳的系统效率。但是,在接近最佳帧长度之前,这些方法的系统效率非常低。

基于分支树的方法则是一种确定性方法,它可以保证识别所有标签。当前基于分支树的方法为了提高识别效率都采用基于曼彻斯特编码的方法检测碰撞信息。例如碰撞树(collisiontree,ct)、碰撞窗口树(collisionwindowtree,cwt)、多前缀查询方法(dualprefixprobingscheme,dpps)和mct(m-arycollisiontree)等。ct使用碰撞检测方法,检测到第一个碰撞位将碰撞标签划分到两个子组,尽管ct极大的减少了空时隙,但它仍然会产生许多碰撞时隙,这会增加识别时间。

cwt使用二进制碰撞树和启发式位窗策略,减少了标签端传输的信息位。相比ct,cwt可以减少识别时间和标签端传输的信息位。然而cwt仍然需要多个时隙和查询命令,这些时隙与查询命令会浪费很多查询命令中的头部信息。dpps和mct通过使用更多的碰撞位信息将冲突标签划分成更多的子组,它们有更高的时间效率和传输更少的信息比特。但它们依然消耗很多时间去识别所有标签。



技术实现要素:

本发明的目的是针对目前分支树算法中存在识别时间周期长、传输信息比特数多的问题提出了一种k比特连续碰撞位检测分裂树rfid标签防碰撞算法,通过利用连续多比特碰撞位信息k,将碰撞标签划分到2k个子组中,动态地调节每个碰撞时隙的子组大小。为了实现该目的,本发明所采用的主要步骤是:

步骤1:初始化命令队列q:阅读器初始化命令参数pre=ε,k=0,然后向所有标签发送查询命令query;

步骤2:收到query命令且与前缀pre相匹配的标签,进入传输状态,并选择一个时隙数g,没有匹配前缀pre的标签则等待下一query命令;进入传输状态的标签,当g=0时,回复剩余id信息,否则,等候qrep命令,每收到一个qrep命令,进入传输状态的标签的g值都减一,当g值为0时,回复剩余id信息,否则继续等待qrep命令;

步骤3:判断时隙状态:标签在不同时隙做出响应后,阅读器检测每个时隙碰撞情况,如果检查到只有一个标签回复,则直接识别一个标签;如果检查到只包含一个碰撞比特位,由于标签id具有唯一性,所以可以直接识别两个标签;如果检查到没有标签回复,则这个时隙是一个空时隙;如果检查到两个以上的标签回复(即发生标签碰撞),则分别更新pre与k的值,并将(pre,k)推入命令队列中;

步骤4:判断命令队列:判断命令队列是否为空,若不为空,取出队列第一个元素,形成新的命令参数,发送查询命令query(pre,k),转置步骤2);若命令队列为空,整个识别过程结束。

本发明提出的k比特连续碰撞位检测分裂树rfid标签防碰撞算法已经通过matlab实现,附图4为验证本发明方法性能的仿真结果。由于可以利用接收到的碰撞信息,不断调整分组大小,本方法可以有效的减少标签发生碰撞次数与总共需要发送命令次数。该方法充分考虑了阅读器发送命令次数、传播时延以及阅读器端与标签端发送的信息比特数3个重要性能指标,dqta方法较其它分支树算法在性能有明显提高,更适用于标签防碰撞协议。

附图说明

图1为本发明的rfid标签防碰撞算法伪代码示意图;

图2为本发明的阅读器和标签之间的系统传输模型;

图3为本发明中收到阅读器query命令后的标签操作;

图4为验证本发明方法性能的仿真结果。

具体实施方式

下面结合附图和实施例对本发明作进一步详细描述。

首先定义在本发明中使用的符号、函数和命令如表1所示。

表一符号定义

1、以上述条件为基础,本发明提出的k比特连续碰撞位检测分裂树rfid标签防碰撞算法的具体实施步骤为:

步骤1:在识别进程的开始,阅读器首先初始化pre=□,k=0,并且广播查询命令query(pre,k)开始第一帧;

步骤2:标签收到query命令后,参照附图3,标签端将执行以下步骤:

①匹配阶段:标签首先比较它的前lpre比特长度的id和匹配前缀pre。如果匹配成功,标签进入传输状态并参与当前帧;否则,匹配失败并等待下一query命令;

②索引阶段:处于传输状态的标签检查第lpre比特位置之后的k个比特信息,即(dp+1...dp.+k),并将其转换为时隙索引g。

g=bin2dec(dp+1,dp+2,...,dp+k)(1)

③回复阶段:如果g=0,则标签回复剩余的id信息(dp+k+1...dl)。否则标签等待阅读器的qrep命令,每收到qrep命令,g值减一,标签只有当g=0的时候才回复剩余标签id信息给阅读器。

步骤3:阅读器在每时隙收到标签的回复,确定当前时隙的状态。将时隙情况分为以下四种情况:

①单一时隙:如果只有一个标签回复,阅读器识别标签并回复标签id,id=pre||dec2bin(g,k)||(dp+k+1,dp+k+2,...,dl)其中||为连接操作。

②可识别两个标签时隙:如果接收的信息只包含一位碰撞比特,因为每个标签是独一无二的,所以我们可以直接识别一个标签在一个时隙中。例如,阅读器收到的剩余id信息是“10x101”,其中“x”表示碰撞比特,两个被识别的标签为:

③空闲时隙:如果阅读器在这一时隙没有收到信息,则它是一个空闲时隙。

④碰撞时隙:当超过两个标签同时回复在一个时隙中,阅读器检测第一个碰撞比特的位置和在这个位置后的连续碰撞比特位数。阅读器可以获得命令参数。例如,如果收到的信息是“1xx0x1”,帧参数可以更新为pre1=pre+dec2bin(g,k)+1,k1=2,并且阅读器将(pre1,k1)推入队列中。

步骤4:当前帧实行完所有时隙后,阅读器检测队列q是否为空,如果q为空,整个识别过程结束,否则,阅读器从队列q中获取参数(pre,k)并且开始下一帧。

2、dqta的仿真及性能比较。

本节通过仿真比较dqta与现有的ct和dpps算法的性能。在仿真中取k的最大值为3,评估dqta在以下三个方面的性能:(1)标签识别中平均碰撞时隙数;(2)标签识别过程中阅读器端与标签端平均发送信息比特数;(3)标签的平均识别时间。

(1)碰撞时隙数

由于碰撞时隙比空闲时隙花费更长的时间,所以给出了碰撞时隙数的比较结果在图4a中。应该注意的是,在dpps中,每个时隙包括两个连续碰撞响应,实际上是一帧有两个时隙,并且在第二个时隙之前没有qrep命令。为了公平起见,我们认为这两个时隙的每一个时隙状态都视为一次独立的标签反应。我们从图4a中可以看出dqta算法识别标签时需要最少的碰撞时隙数。

(2)传输信息比特数目

在三种协议中,帧结构和在每个时隙中发送的信息是不同的。只考虑碰撞时隙不足以评估这些协议的整体性能。识别时间也高度依赖于传输信息位数,因此给出了比较传输信息位数结果图。

阅读器端的信息传输位数如图4b所示,我们可以看出dqta花费最少阅读器端信息比特数。与ct和dpps相比,dqta阅读器信息比特数分别减少了64%和35.7%。这是因为dqta根据连续碰撞比特位数将碰撞的标签划分到多分组中。在每组中我们只需要一个query()命令和几个短qrep命令。这极大的节约了阅读器端传输的请求命令信息位数。虽然dpps只需要一个query()命令,但它比dqta需要更多的帧,导致阅读器端传输更多的信息位。ct有更多的碰撞时隙且没有帧结构,所以它在阅读器端花费最多的信息比特数。

标签端的信息传输位数结果如图4c,dqta在标签端花费最少的信息比特传输数。因为dqta中将碰撞时隙分成更小的分组并且产生更少的碰撞时隙数。因此dqta协议标签端传输的信息数最少。

(3)识别时间

平均时间的仿真结果如图4d所示,可以看出dqta平均识别一个标签只需要1.2ms,而ct与dpps各自需要1.43ms与2.08ms。与dpps和ct相比,dqta的时间增益分别约为16%和42.3%。

本发明申请书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。

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