基于分组寻呼的锁位式双前缀探针防碰撞计算方法与流程

文档序号:20490766发布日期:2020-04-21 22:01阅读:127来源:国知局
基于分组寻呼的锁位式双前缀探针防碰撞计算方法与流程

本发明涉及计算机领域,具体涉及一种基于分组寻呼的锁位式双前缀探针防碰撞计算方法。



背景技术:

rfid(radiofrequencyidentification,rfid)是一种非接触式信息采集技术,它通过射频信号可以自动识别目标对象并进行数据采集,rfid具有可多标签同时识别、识别速度快、信息存储容量大、数据可读写、使用寿命长、环境适应性好、安全性高等优点,因此在生产制造管理、医疗、零售、人员门禁、防伪等方面都具有广泛的应用。rfid系统主要由阅读器(或读写器)、标签和应用系统构成,阅读器作为信息采集终端,利用射频信号对标签进行识别,并与后台应用系统进行通信。当阅读器信号作用范围内有多个标签时,可能有两个或多个标签同时向阅读器发送信息,此时标签信息之间会相互影响使阅读器无法正确识别标签,即发生标签冲突或碰撞。多标签碰撞问题会导致阅读器识别效率降低、漏读率增大、识别时延增加等系列问题,为了降低碰撞概率,增大系统识别率,学者们提出了一系列防碰撞算法。目前,防碰撞算法主要分成两大类,一类是基于aloha的不确定型算法,另一类是基于二叉树搜索的确定型算法。由于aloha类算法易存在标签“饥饿”现象(即部分标签可能不被识别),因此很少用于实际应用中。

经典的二叉树确定型防碰撞算法包括二进制搜索(binarysearch,bs)算法、查询树(querytree,qt)算法、动态二进制搜索算法(dynamicbinarysearch,dbs)、碰撞树算法(collisiontree,ct)等。学者们在经典的树型算法的基础上又提出了一系列改进算法。基于树的退避(tree-basedbackoff,tbb)协议是在识别完当前标签后从当前节点的父节点继续进行识别,而不是从根节点重新访问,这样显著减少了阅读器检测范围内的所有标签的寻呼时间。多叉树查询算法(m-aryquerytree,mqt)使用映射表来仲裁标签之间发生冲突的数据,实现了多叉树的快速识别,mqt算法与传统算法相比,减少了识别所有标签的响应时间,但是其性能很大程度上依赖于标签id的分布和碰撞位的位置。文献提出了锁位的概念,通过将标签的碰撞位进行锁定并提取出来,来大大减少数据传输量。基于锁位方法的动态锁位自适应二进制分裂(dynamicblockingadaptivebinarysplitting,dba)协议是在锁位的基础上根据待识别标签的估计数量自适应地调整时隙数量,从而减少空闲时隙的发生。双前缀探针(dualprefixprobescheme,dpps)算法是一种基于查询树的确定性算法,它引入了双前缀查询,以便在同一时隙中成功识别两个标签,使识别所有标签花费的时间大大减少,并且提高了系统的识别效率,但是该算法在减少数据传输量上方面没有显著改善。因此文献在双前缀算法和锁位思想的基础上提出了锁位式双前缀探针防碰撞算法(lock-bitdualprefixprobeanti-collisionalgorithm,ldpps),其主要思想是:当读写器检测到冲突位时,通过锁位指令提取碰撞位,并通过判断碰撞位的状态选择查询树的叉数,如果存在连续碰撞位则采用四叉树查询,如果是非连续碰撞位则采用二叉树查询,在随后的识别过程中,仅发送碰撞位信息,这样就减少了冗余信息的传输,但是当标签信息量太大或者id太长时,数据传输量仍然很大。



技术实现要素:

本发明的目的就是针对现有技术的缺陷,提供一种基于分组寻呼的锁位式双前缀探针防碰撞计算方法,能够进一步改善rfid系统多标签识别的识别效率。

本发明提供了一种基于分组寻呼的锁位式双前缀探针防碰撞计算方法,其特征在于包括以下步骤:

s1:阅读器进行初始化操作,将空串压入堆栈,并发送通信请求指令,阅读器识别范围内的标签均作出响应,并转到步骤s2;若无响应,阅读器持续发通信请求指令;

s2:阅读器接收的标签作出的响应数据信息并进行译码,根据译码结果判决是否产生数据碰撞;如果没有发生数据碰撞,则只有一个标签响应阅读器,阅读器识别该标签,并跳转到步骤s8;如果发生数据碰撞则转到步骤s3;

s3:根据s2中的译码结果,阅读器确定发生碰撞的位置,并将碰撞位设置为1,非碰撞位设置为0,形成锁位分组指令的uid值;

s4:阅读器初始化数组,并发送锁位分组指令;标签将发生碰撞的比特位进行锁定,并删除未发生碰撞的比特位,锁定的比特位位形成标签新的id号并回传给阅读器;

s5:判断标签碰撞位计数器值指示数,若不为0,则不存在,跳转到步骤s7;若为0,则存在,阅读器发送寻呼指令,阅读器根据回送的数据信息判决是否发生数据碰撞。如果没有发生数据碰撞,即阅读器成功识别该标签,跳转到步骤s7;如果有数据碰撞,转到步骤s6;

s6:阅读器检测发生碰撞的比特位是否为单碰撞位,如果是,那么阅读器分别将碰撞位置“0”和“1”识别这两个标签,转到步骤s7;如果不是单碰撞位,阅读器发送查询码对标签进行双时隙查询;在查询过程中采用后退策略并不断更新查询码,直到堆栈为空,此时转到步骤s7;

s7:将数组的下标索引值进行加一操作,然后判断标签碰撞位计数器值指示数是否越界,如果越界转到步骤s5;否则转到步骤s8。

s8:阅读器识别完作用范围内的所有标签,识别过程结束。

上述技术方案中,步骤s4包括以下步骤:阅读器根据标签的返回的碰撞计数器值cn,设置ac[cn]=0。采用霍夫曼最佳编码思想,识别顺序从碰撞最多分组开始,将数组ac的下标索引值cns设为0。

上述技术方案中,步骤s5包括以下步骤:判断ac[cns]是否为0,即判断第cns组标签是否存在,若不为0,则不存在,跳转到步骤s7;若为0,则存在,阅读器发送request(uid,cns)寻呼指令,第cns组标签对此通信请求指令全部进行响应,响应的标签在第s4步形成的新的id的基础上删除连续“1”构成最新的id号,然后将此新id号回送给阅读器用于识别,阅读器根据回送的数据信息判决是否发生数据碰撞。如果没有发生数据碰撞,即阅读器成功识别该标签,跳转到步骤s7;如果有数据碰撞,转到步骤s6。

上述技术方案中,步骤s6包括以下步骤:阅读器检测发生碰撞的比特位是否为单碰撞位,如果是,那么阅读器分别将碰撞位置“0”和“1”识别这两个标签,转到步骤s7;如果不是单碰撞位,阅读器发送查询码request(ε,0,1)对标签进行双时隙查询,其中ε为未发生碰撞的查询前缀。若时隙0标签发生碰撞,将’ε1’压入堆栈,同时ε值进行更新,此时的ε值为’ε0’,并继续发送request(ε,0,1)查询标签,若时隙0持续碰撞,则不停的将更新后的’ε1’压入堆栈同时更新’ε0’值,直到时隙0里没有发生碰撞,当前时隙0里的标签被识别。然后在此时的ε值对应的时隙1里对标签进行查询,若有碰撞,更新ε值,继续对时隙1里的标签进行双前缀查询,若无碰撞,判断堆栈是否为空,若为空,转到步骤s7,若不为空,从堆栈里取值赋给ε,继续发送request(ε,0,1)进行查询。即在查询过程中采用后退策略并不断更新查询码,直到堆栈为空,即第cns组标签全部识别完毕,此时转到步骤s7。

上述技术方案中,步骤s7包括以下步骤:将cns进行加一操作,然后判断ac[cns]是否越界,即将cns与数组最后一个数的下标cl进行大小判断,如果cns<cl,转到步骤s5;否则转到步骤s8。

上述技术方案中,阅读器第一次向标签发送读取数据请求时所发出的请求指令request(111…11),其中1的个数与标签id长度相同;标签收到此命令后,将自身id与111…11进行比较,小于此值则向阅读器回复自身id信息,故阅读器识别范围内的所有标签收到此命令均作出响应,回应id信息。

上述技术方案中,根据权利要求1所述的基于分组寻呼的锁位式双前缀探针防碰撞计算方法,其特征在于选择指令select(idx)用于选择在一个识别周期内唯一与阅读器通信的标签,idx取值为标签与阅读器通信时,阅读器发送的查询前缀后的剩余id号;读取数据指令read-data(idx),idx取值同select(idx)中的idx,读取被选择标签的数据信息;去活指令unselect(idx),idx取值同select(idx)中的idx,标签数据被阅读器正确读取后,阅读器发送此命令对标签进行去活处理,让标签静默,静默后的标签对后续通信请求指令不进行响应。

上述技术方案中,锁位分组指令request(uid,1)用于读写器根据曼彻斯特编码的特点对标签进行译码,从而判断碰撞位并锁定它们,碰撞位将其设置为“1”,非碰撞位设置为“0”,从而构成uid值;在接收到锁位分组指令后,标签提取并锁定与uid“1”值相对应的位置,并删除“0”对应的位置信息,锁位之后的id号作为标签的新id号进行后续的分组处理。同时,标签将自身新id号从最高位开始逐位与“1”进行“and”操作,若结果为“1”,标签计数器加1,若结果为“0”,则过程结束;,具有相同从最高位开始连续“1”数量的标签,具有相同的标签计数器值,记为cn(countnumbers),默认cn值相同的标签即为同一组,记为第cn组,标签对此命令返回新id值;读写器设置一个标签碰撞位计数器值指示数组其中,cl(collisionlength)值为(k为标签id号位数);其中,初始化表示第cn组无标签,若第cn组有标签,则设置ac[cn]=0。

上述技术方案中,寻呼指令request(uid,cns),其中uid值为查询前缀,具有相同cns值的计数器的标签响应该命令;响应的标签在锁位分组指令形成的新的id的基础上删除连续“1”构成最新的id号,然后将此新id号回送给阅读器用于识别。

上述技术方案中,双前缀查询指令request(ε,0,1),ε取值为标签最高碰撞位之前的全部数据,阅读器通过两个时隙依次识别ε后碰撞最高位为0和最高位为1的标签。ε随标签返回值而更新。

本发明在锁位双前缀探针防碰撞算法的基础上,提出了一种基于分组寻呼的锁位式双前缀探针防碰撞计算方法(group-pagingforlock-bitdualprefixprobescheme,gp-ldpps)。该算法使用曼彻斯特编码特点来确定碰撞位,并通过锁位指令提取碰撞位,再根据碰撞位的信息进行分组,分组之后采用双前缀探针的方式来识别标签。通过将标签地对标签进行分组,减少碰撞时隙数,减少空闲时隙数和数据传输量。

附图说明

图1是本发明流程示意图

图2是本发明的具体实施例流程示意图

图3是本发明和ct算法、mqt算法、dpps算法、ldpps算法的总时隙数的理论值的比较

图4是本发明和ct算法、mqt算法、dpps算法、ldpps算法的算法吞吐率的50次均值比较

图5是本发明和ct算法、mqt算法、dpps算法、ldpps算法在相同条件下的识别效率

具体实施方式

下面结合附图和具体实施例对本发明作进一步的详细说明,便于清楚地了解本发明,但它们不对本发明构成限定。

假设标签id长度为8位,阅读器识别范围内有8个标签,分别为:a:10101010,b:11001001,c:10001010,d:11101010,e:10101111,f:10001101,g:11001110,h:11101100。识别过程如图2所示。

其中,本发明采用的具体实施例的方法如图1所示,包括以下步骤:

阅读器发送request(11111111)指令,a、b、c、d、e、f、g、e、h全部响应并返回自身的标签号,阅读器经过译码可知它们的第2、3、6、7、8位均发生碰撞,于是阅读器将碰撞位设置为1,非碰撞位设置为0,构成uid值为01100111。

阅读器设置数组此时k为8,故并初始化数组ac=[a0,a1,…,a7]=[1,1,…,1]。阅读器发送request(uid,1)指令,所有标签将碰撞位锁定后构成新id,分别为a:01010,b:10001,c:00010,d:11010,e:01111,f:00101,g:10110,h:11100,其中a、c、e、f首位起连续‘1’的个数相同都为0个,b、g的个数为1个,d为2个,h为3个,故ac=[a0,a1,a2,a3,a4,a5,a6,a7]更新为[0,0,0,0,1,1,1]。且默认a、c、e、f为第0组,同理默认b、g为第1组,d为第2组,h为第3组。分组完毕后,标签全部返回新id给阅读器,阅读器初始化cns值为0。

阅读器判断ac[cns]是否为0,此时ac[0]=0,故发送request(uid,0)指令,第0组标签全部响应,它们删除连续‘1’形成新的id号,此时第0组标签的id号为a:1010,c:0010,e:1111,f:0101并发送给阅读器进行回应。阅读器进行译码后可判断出第0组标签它们的第1、2、3、4位均发生碰撞,开始进行双前缀查询。

第0组标签最高位发生碰撞故此时查询前缀ε为空,阅读器发送指令request(ε,0,1),所有标签冲突,于是阅读器将查询前缀ε更新为0,并继续发送指令request(0,0,1),成功识别c、f。然后将查询前缀更新为1,阅读器发送request(1,0,1)指令,成功识别a、e,第0组标签识别完毕。

第0组标签全部识别完毕后,阅读器将cns进行加1处理,cns值更新为1,并将cns与cl值进行大小判断,看是否cns>cl值,此时cns=1,cl=7,cns>cl不成立,故同步骤(3)~步骤(4)进行第1组标签识别,依次识别出b、g标签。然后cns值更新为2,识别出d,最后更新cns值为3,识别出d。当cns值为4~7时,ac[cns]=1,该分组无标签,转到步骤(6)。

所有标签均被识别,识别过程结束。

上述计算过程中,假设在阅读器的识别范围内有n个标签,它们被分为x组,每组标签的个数占标签总个数的pi,阅读器为了全部识别它们总共需要发出的寻呼次数为q(n),识别过程中第i组发生碰撞的次数设为ci(n),第i组的寻呼次数设为qi(n)。那么可以得到:

ci(n)=npi-1(1)

q(n)=2n-x+2(2)

证明:由树形数据传输特点可知,算法的识别过程类似于一颗二叉树,所有节点代表寻呼次数,非叶子节点代表发生碰撞,叶子节点代表标签数量,故有

qi(npi)=ci(n)+npi(3)

而在双前缀算法中,碰撞节点包含可识别的碰撞和完全碰撞,一个碰撞节点必然会产生两个子节点,总时隙数为1+2ci(n),故有

qi(npi)=1+2ci(n)(4)

由(3)(4)可得式(1)。又即可得式(2)。

假设有n个电子标签,每个标签具有k比特的长度,其中阅读器第一次接收到标签的信息经过译码判断出的碰撞位有m位,那么m的范围为二叉树算法中有type1型和type2型两种树节点,其中type1型节点属于碰撞节点,这类标签除自身信息外,信息首尾分别有一个null(占5个比特位),并且需要1比特周期来处理校验接收到的数据。type2型节点属于标签节点,这类标签在type1型标签的基础上,额外需要2个比特周期来记录电子标签id信息。

在搜索树的过程中,当标签数量不少于2个时,读写器第一次发出的数据指令是k比特,标签第一次返回的数据也是k比特,以后每次寻呼过程中,阅读器和电子标签发送的比特数的范围均为为[0,m]比特。因此,设l1为阅读器的第一次寻呼指令中处于type1型标签所用的寻呼周期,为(2k+21),设l2为阅读器第二次锁位指令中处于type1型标签所经历的时钟周期,为(k+m+21)。标签分成x组后,设每组标签的个数占标签总个数的pi,第i组发生的碰撞位个数为mi,设l3为分组后的type1型标签总比特长度,在以后的查询中,每组处于type1型标签都需要经历[m+21-mi]个时钟周期,故l3为设l4为分组后的type2型标签总比特长度,type2型的标签需要经历(m+23-mi)bit周期,故l4为所以在整个通信过程中,gp-ldpps算法标签和阅读器需要传输的总比特长度l为:

在防碰撞算法中,识别特定数量的标签所需的总时隙数e(nt)是一个重要参数,假设系统内待识别标签有n个,被分为x组,pi表示为每组标签的个数占标签总个数的百分比,由式(1)可得:ci(n)=npi-1,故有

识别效率反映了有效数据传输时间与总传输时间的比值,其式如下:

nslots=ns+nc+nic+nhi(8)

其中n是标签的数量,tid表示传输标签完整id所需的时间,nslots表示传输所有标签所需的总时隙数,包括成功时隙数ns、碰撞时隙数nc、可识别的碰撞时隙数nic和半空时隙数nhi,tcmd表示为在一个时隙内阅读器查询命令所用的时间,text表示通信协调时间,tdata表示一个时隙内标签有效数据的传输时间。吞吐率等于标签数量与寻呼次数的比值,反映了阅读器单位时间内识别标签的能力,是rfid系统中一个重要的性能指标,故此算法的系统吞吐率为:

本具体实施例采用matlab编程对算法进行仿真,对算法在理想信道条件下的总时隙数、吞吐率、识别效率进行分析比较。本实验基于epcglobalclass1generation2和iso18000-6标准,将由单个阅读器和多个rfid标签组成的多标签识别系统进行防碰撞算法实验。随机生成id长度为96bit的电子标签,阅读器识别范围内的标签数量从0个增加到1000个,同时,每个标签的编号在整个系统中都是唯一的。假设所有实验组的标签id号都为均匀分布,即每个标签id的每一位都以相同的概率获得值“0”或“1”,但其中没有任何两个标签的编号相同。

图3为gp-ldpps算法和ct算法、mqt算法、dpps算法、ldpps算法的总时隙数的理论值的比较,从图3中可以看出,随着标签数量的增加,算法之间的差异变得越来越大,lddp算法和gp-ldpps算法的性能优势随着标签数的增多也变得愈发明显。lddp算法是性能较为优异的rfid防碰撞算法,在总时隙数上与本文所提的算法很近似,但是gp-ldpps算法的总时隙数理论值仍略小于lddps算法,因此理论上更进一步减少了时隙开销。

在不考虑控制字节和校验冗余条件下,图4为算法吞吐率的50次均值。从图中可以看到gp-ldpps算法的平均吞吐率达到了91.5%,相对于ct算法、mqt算法、dpps算法,分别提高了80%、40%、10%。尽管ldpps算法结合了锁位和dpps算法的优势,在吞吐率方面要高于其他算法,已经是表现很好的防碰撞算法,但是通过实验可知,本文提出的gp-ldpps算法的吞吐率较之于ldpps算法,仍要略高一些。通过计算得知,gp-ldpps算法的吞吐率比ldpps算法提高了约为2%,当阅读器在查询标签时,可以使搜索效率进一步提高。

识别效率反映了算法的时间性能,图5显示了gp-ldpps算法和ct算法、mqt算法、dpps算法、ldpps算法在相同条件下的识别效率,当标签数不同时,同一算法的识别效率略有差异,但是总体上差异不大。从图中可以看出,gp-ldpps算法的识别效率在0.51左右,ct算法、mqt算法、dpps算法、ldpps算法的识别效率分别在0.35、0.42、0.45、0.48左右。因此,和其他算法相比,gp-ldpps算法更加有效的提高了系统的识别效率。

基于二进制树的锁位式双前缀探针算法(ldpps)在总时隙数、吞吐率、识别效率等方面都优于以往算法,但是当标签数目太大时,识别大量标签仍然存在一定的复杂度。因此,本发明在ldpps算法的基础上进行改进,提出了一种基于分组寻呼的锁位式双前缀探针防碰撞算法(gp-ldpps),通过将标签进行预分组寻呼来进一步缩减通信信息量和减少寻呼次数。仿真结果表明,新算法有效减少了数据传输量,提高了识别效率,使阅读器工作效率提高,减少了查询次数,能够让标签更快的全部成功被识别。

本发明利用锁位指令提取碰撞位形成新id,计数标签新id编码首位起连续“1”的数量,计数值相同的标签为同一组,用标签碰撞位计数器值指示数组表示各组有无标签;然后根据标签碰撞位计数器值指示数组中的每组有无标签情况,依次采用锁位式双前缀探针方法来识别每组标签,直到识别完所有标签。所述锁位式双前缀探针方法是利用曼彻斯特编码特点来确定碰撞位,并通过锁位指令提取碰撞位,再根据碰撞位的信息进行分组,分组之后采用双前缀探针的方式来识别标签。通过分组查询,以减少了总时隙开销减小碰撞分析了新算法的寻呼次数、总时隙数、传输时延等性能,并在总时隙数、吞吐率和识别效率这三个方面对算法进行了仿真。仿真结果表明,gp-ldpps与ldpps算法相比,减少了总时隙开销,并将吞吐率提高了2%左右,能够进一步改善rfid系统多标签识别的识别效率。

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

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