背景技术
在射频识别(RFID)的实际应用中,很多情况下,在射频场中存在一个阅读器对应多个电子标签的情况,但是,当阅读器同时清点多个标签时,就会出现信道争用的现象,并且多个标签就会发生碰撞,致使标签无法将信息正确发送给阅读器。因此,需要采取一定的机制避免碰撞或减少碰撞的发生。
在现有的RFID国际标准ISO18000-6中,A类和C类采用时隙(ALOHA)算法、B类采用二进制树(Binary Tree)算法解决上述的碰撞问题。并且,ALOHA和Binary Tree都是基于时分多路访问方式。
Binary Tree方法的基本思想与二进制树的深度优先遍历类似,Binary Tree方法将处于碰撞的标签分裂成左右两个子集0和1,先查询子集0,若没有冲突,则正确识别标签,若仍有冲突,则再分裂,将子集0分为00和01两个子集,依次类推,直到识别出子集0中的所有标签;之后,再按此步骤查询子集1,直到识别出子集1中的所有标签。
如图1所示,是采用ISO18000-6TypeB多标签接入时阅读器与标签交互流程图。其防碰撞的过程为:阅读器发送开始清点指令,使所有标签开始回复,标签在收到指令后,由随机数发生器生成0或1,这样就将标签分成随机数为0和随机数为1的两个子集,与二叉树对应,这里我们称之为左分支(0分支)和右分支(1分支);随机数为0的标签,即处在左分支的标签,立即回复,占了优先回复的先天优势,而随机数为1的标签,即处在右分支的标签,将计数器值设为1,必须等待左分支回复完才能执行分裂回复;若没有碰撞并回复成功,则阅读器发送指令确认,并使得标签计数器值减1;若标签碰撞,阅读器发送指令,使计数器为0的标签,即左分支的标签重新分裂,计数器非0的标签,即右分支的标签计数器值加1;如此循环直到所有标签全部成功回复。
根据二进制树防碰撞算法的原理,在第一个非碰撞时隙之前,所有的清点过程均为碰撞,每次碰撞产生随机数的过程将确定标签被清点的先后顺序。因此,第一个非碰撞时隙之前将成为此轮清点的基础。例如,如果产生0,1的标签个数比较均匀,那么此轮清点效率就比较高。尤其对于预先分裂防碰撞算法,这一过程分裂的好坏,对之后的清点影响甚大。
由二进制树的清点流程可知,在第一个非碰撞时隙以前,阅读器多重复的发送失败确认指令,使碰撞的标签分为左右两个分支,直到阅读器收到正确的回复信息或没有收到回复信息。
从对ISO18000-6B类协议防碰撞过程的描述可以看出,此过程总是首先致力于解决0分支的碰撞,让其分裂,直到0分支只剩下一个标签,即,二进制树的叶子节点,将其清点出来之后,才开始处理1分支的标签,处理完1分支之后依次处理2,3,...,n分支,即,总是从左到右顺序进行分裂清点。
可以看出,相关技术中的标签分裂过程存在以下问题:在0分支分裂时,非0分支的多个标签始终不分裂,一直在等待0分支标签清点完成。这样,在0分支清点完成之后,后续分支会浪费很多时间执行和0分支类似的分裂过程,多标签的清点效率非常低。然而,目前尚未提出解决上述问题的技术方案。
发明内容
考虑到上述问题而做出本发明,为此,本发明的主要目的在于提供一种标签分裂方法和装置,以解决相关技术中存在的多标签清点效率低的问题。
根据本发明的一个实施例,提供了一种标签分裂方法。
该方法包括:设置用于对多个标签进行分裂的第一分裂规则和第二分裂规则;在阅读器开始对多个标签进行清点后的特定时隙到达前,根据第一分裂规则对多个标签中未成功清点的标签进行第一分裂处理;在特定时隙到达后,根据第二分裂规则对多个标签中未成功清点的标签进行第二分裂处理。
其中,第一分裂规则包括:第一触发条件,其中,包含有第一预定阈值;第二分裂规则包括:第二触发条件、分裂起始位置、分裂长度,其中,第二触发条件中包含有第二预定阈值,其中,在特定时隙到达前,连续发生碰撞的次数达到第一预定阈值的情况下确定执行第一分裂处理,在特定时隙到达后,连续发生碰撞的次数达到第二预定阈值的情况下确定执行第二分裂处理,分裂起始位置用于指定执行第二分裂处理的开始时隙,分裂长度用于指定执行第二分裂处理的时隙数量。
此外,根据第一分裂规则对多个标签进行第一分裂处理具体包括:在满足第一触发条件的情况下,对多个标签中未成功清点的标签进行全分裂。
此外,根据第二分裂规则对多个标签进行第二分裂处理具体包括:在满足第二触发条件的情况下,从分裂起始位置开始,对之后连续的分裂长度所指定的时隙数量的时隙处的未成功清点的标签进行分裂。
另外,在进行第一分裂处理或第二分裂处理之前,进一步包括:阅读器向多个标签中未被成功清点的标签发送清点指令;接收到清点指令的标签根据其时隙计数器值确定进行回复或不进行回复;并记录在进行回复的标签向阅读器发送的回复信息发生碰撞次数,并在碰撞次数满足第一触发条件或第二触发条件的情况下,将未成功清点的标签确定为执行第一分裂处理或第二分裂处理的标签。
其中,特定时隙为预先指定的时隙、或多个标签所在时隙中最早为非碰撞的时隙。
其中,未成功清点的标签为以下标签:回复信息出现碰撞的标签及等待清点的标签。
根据本发明的另一实施例,提供了一种标签分裂装置。
该装置包括:设置模块,被配置为设置用于对多个标签进行标签分裂的第一分裂规则和第二分裂规则;第一处理模块,用于在阅读器开始对多个标签进行清点后的特定时隙到达前,根据第一分裂规则对多个标签进行第一分裂处理;第二处理模块,用于在特定时隙到达后,根据第二分裂规则对多个标签中未成功清点的标签进行第二分裂处理。
其中,第一分裂规则包括:第一触发条件,其中,包含有第一预定阈值;第二分裂规则包括:第二触发条件、分裂起始位置、分裂长度,其中,其中,第二分裂规则中包含有第二预定阈值,其中,在连续发生碰撞的次数达到第一预定阈值的情况下确定执行第一分裂处理,在连续发生碰撞的次数达到第二预定阈值的情况下确定执行第二分裂处理,分裂起始位置用于指定执行第二分裂处理的开始时隙,分裂长度用于指定执行第二分裂处理的时隙数量。
其中,特定时隙为预先指定的时隙、或多个标签所在时隙中最早为非碰撞的时隙。
通过本发明的上述技术方案,更好的实现了非0分支动态预先分裂,减少了标签回复碰撞次数,从而大大提高了标签清点效率。并且在标签数目较大的时候,清点效率仍然保持在很高水平。
具体实施方式
方法实施例
在实际应用中,第一个被清点的标签,从一定程度上代表射频场中的标签的分裂程度:在第一个非碰撞时隙之前,射频场中的标签处于集中状态,而阅读器通过失败确认指令,使射频场中的标签分为左右两个分支,如果下一时隙仍为碰撞,则继续将左分支中的标签分为左右两个分支,直到收到标签正确回复。
因此,在防碰撞算法中,可以考虑在第一个非碰撞时隙之前,采用一种分裂方法,解决标签集中状态,使其快速分裂开;同时在第一个非碰撞时隙之后,采用一种分裂方法,避免标签过度分裂。
同时,第一个非碰撞时隙还可以作为获得射频场内标签数量的一种信息,因为从概率角度讲,每次标签分裂都是等概率的,所以,综合第一个被清点时的分裂深度和广度信息,可以预估计射频场内标签数量。
因此,在本实施例中,提供了一种标签分裂方法。
图3是根据本发明方法实施例的标签分裂方法的流程图,如图3所示,根据本实施例的标签分裂方法包括:步骤S302,设置用于对多个标签进行分裂的第一分裂规则和第二分裂规则;步骤S304,在阅读器开始对多个标签进行清点后的特定时隙到达前,根据第一分裂规则对多个标签中未成功清点的标签进行第一分裂处理;步骤S306,在特定时隙到达后,根据第二分裂规则对多个标签中未成功清点的标签进行第二分裂处理。
也就是说,考虑在第一个非碰撞时隙之前,采用一种预先分裂方法(即,第一分裂规则),针对标签过于集中的分布,使其在每次碰撞分裂中,实现相对恰当的分裂。在特定时隙到达后(处理第一个非碰撞时隙之后),合理的选择另一种预先分裂方法(即,第二分裂规则),基于标签已经部分分裂的情况,实现相对恰当的分裂。
其中,第一分裂规则包括:第一触发条件,其中,包含有第一预定阈值;第二分裂规则包括:第二触发条件、分裂起始位置、分裂长度,其中,第二触发条件中包含有第二预定阈值,其中,在特定时隙到达前,连续发生碰撞的次数达到第一预定阈值的情况下确定执行第一分裂处理,在特定时隙到达后,连续发生碰撞的次数达到第二预定阈值的情况下确定执行第二分裂处理,分裂起始位置用于指定执行第二分裂处理的开始时隙,分裂长度用于指定执行第二分裂处理的时隙数量。
此外,根据第一分裂规则对多个标签进行第一分裂处理具体包括:在满足第一触发条件的情况下,对多个标签中未成功清点的标签进行全分裂。其中,全分裂为预先分裂的一种特殊形式,即射频场内的所有未清点标签,不管计数器值为多少,均进行分裂,即产生随机数。
此外,根据第二分裂规则对多个标签进行第二分裂处理具体包括:在满足第二触发条件的情况下,从分裂起始位置开始,对之后连续的分裂长度所指定的时隙数量的时隙处的未成功清点的标签进行分裂。
另外,在进行第一分裂处理或第二分裂处理之前,进一步包括:阅读器向多个标签中未被成功清点的标签发送清点指令;接收到清点指令的标签根据其时隙计数器值确定进行回复或不进行回复;并记录在进行回复的标签向阅读器发送的回复信息发生碰撞次数,并在碰撞次数满足第一触发条件或第二触发条件的情况下,将未成功清点的标签确定为执行第一分裂处理或第二分裂处理的标签。
其中,特定时隙为预先指定的时隙、或多个标签所在时隙中最早为非碰撞的时隙。当然,也可以是第二个或之后的某个非碰撞时隙。
其中,未成功清点的标签为以下标签:回复信息出现碰撞的标签及等待清点的标签。
下面,根据附图对上述方法的处理过程进行详细的说明。图4是根据本发明方法实施例的标签分裂方法的详细处理过程的流程图。如图4所示,具体包括以下步骤:
步骤401,阅读器选择处于有效射频场区域的标签;阅读器发送选择指令,所有标签收到选择指令后进行条件匹配,满足条件的标签进入清点过程;
步骤402,阅读器发送开始清点指令,同时开始在规定的时隙上接收来自标签的信号;
步骤403,标签收到开始清点指令后,初始化自身信息,将计数器设置为0,并且计数器值为0的标签回复阅读器。
步骤404,阅读器判断在规定时隙内的接收情况,具体地共有三种情况,一为正确接收标签的回复信息,二为无标签回复信息,第三种为碰撞错误信息,如果是正确回复信息或者无回复信息,转入步骤405,如果是碰撞错误信息,转入步骤408;
步骤405,判断是否所有标签已成功回复,如果是,则处理结束;否则,执行步骤406;
步骤406,阅读器向标签发送成功确认指令,并进入下一个时隙接收;
步骤407,当标签收到成功确认指令时,标签标识(ID)符合正确发送回复信息的标签(即,success命令参数的标签)回复确认成功后离开清点过程,并不再响应与清点相关的指令,ID不符合success命令参数的标签(即计数器值不为0的标签或未成功发送回复信息的标签),计数器值减1,并且,执行步骤410;
步骤408,如果阅读器在规定时隙内错误接收标签的回复信息,则认为多个标签回复,发生碰撞,向标签发送失败确认指令,并进入下一个时隙接收;
步骤409,标签收到失败确认指令时,计数器值为0的标签重新选择随机数,进行分裂,其他计数器值非0的标签如果满足预先分裂规则,则进行分裂,否则根据碰撞情况和自身信息来修改计数器值,执行步骤410;
步骤410,计数器值为0的标签回复阅读器,转入步骤404;
其中,在阅读器端记录连续碰撞信息,进一步包含如下步骤:
在步骤402中,在阅读器增加碰撞计数器(Collision count),并初始化为0;
在步骤404中,阅读器增加碰撞计数器清0操作;
在步骤408中,阅读器在规定时隙内错误接收标签回复信息,判断是否在第一个被清点的标签之前,是的话则使标签按照第一个非碰撞时隙之前的分裂规则进行分裂,称之为前分裂规则(上述第一分裂规则);否则,使标签按照第一个非碰撞时隙之后的分裂规则进行分裂,称之为后分裂规则(上述第二分裂规则)。
在步骤409中,如之前所述,预先分裂规则由三个信息组成:连续碰撞的次数,预分裂的起始位置、以及预分裂的长度。
具体地,连续碰撞次数指的是当标签端连续收到多少次失败确认指令之后,才进行预分裂操作,此处,连续碰撞次数用m表示,即,当标签端连续收到m次失败确认指令之后就进行预先分裂,m为自然数。
预分裂的起始位置指的是当非0标签进行预先分裂时,以处于第几个时隙的标签才开始分裂,之前时隙的非0标签不进行预分裂。例如,预分裂的起始位置为n,则意味着只有时隙计数器大于n的非0标签才进行分裂,n为自然数。
预分裂的长度指的是非0标签进行预分裂的时隙个数,例如,预分裂的长度为len,则着从预分裂起始位置开始,向后到第len个时隙之间的标签进行预分裂,len为自然数。
第一个非碰撞时隙之前,预先分裂规则为连续碰撞次数为m时进行全分裂,即预分裂的起始位置为1,不限制预先分裂的长度。当碰撞计数器等于m,计数器值为0的标签,重新选择0/1随机数,进行分裂,选择0的标签计数器不变,选择1的标签计数器加1;其它计数器值(表示为count)的标签,进行分裂,选择0的标签计数器值加count,选择的标签计数器值加count+1。
在第一个非碰撞时隙之后,预先分裂规则为连续碰撞次数m,预分裂的起始位置n,预先分裂的长度len。当碰撞计数器等于m,计数器值为0的标签,重新选择0/1随机数,进行分裂,选择0的标签计数器不变,选择1的标签计数器加1;计数器值小于n的标签,计数器值加1;计数器值大于等于n,并且小于n+len的标签,可表示为n+i(i=0,1,2......len),重新选择0/1随机数,进行分裂。选择0的标签计数器值加i+1,选择1的标签计数器值加i+2;其他的标签,计数器值加len+1。如果碰撞计数器不等于m,则计数器为0标签,重新选择0/1随机数,选择进行分裂,选择0的标签计数器不变,选择1的标签计数器加1;其他的标签计数器加1。
并且,可以根据清点标签情况,改变预先分裂规则,即改变连续碰撞的次数,预分裂的起始位置,和预分裂的长度这三个参数中的任意一个值或几个值。
下面结合三个具体实例以及附图对上述过程进行举例说明。
实例1
在本实例中,前分裂规则采用连续碰撞次数为2(即,上述第一阈值)时进行全分裂;后分裂规则配置为连续碰撞次数为3(即,上述第二阈值),预分裂的起始位置为3,预先分裂的长度为8。
如图5所示,在第一个非碰撞时隙之前,当连续碰撞次数2时,标签进行全分裂,若设标签计数器值为count,count为整数,则标签预分裂之后,选择0的标签计数器值加count,选择1的标签计数器值加count+1;第一个非碰撞时隙之后,当连续碰撞次数3次时,标签计数器值大于等于3,并且小于11的标签,可表示为3+i(i=0,1,2......7,即,3至10,一共8个),重新选择0/1随机数,进行分裂。选择0的标签计数器值加i+1,选择1的标签计数器值加i+2;其他的标签,计数器值加9。
实例2
在本实例中,前分裂规则采用前4次发生碰撞时就进行全分裂;后分裂规则配置为连续碰撞次数为3,预分裂的起始位置为3,预先分裂的长度为8。
如图6所示,在第一个非碰撞时隙之前,前4次失败确认指令时,标签进行全分裂,若设标签计数器值为count,count为整数,则标签预分裂之后,选择0的标签计数器值加count,选择1的标签计数器值加count+1;第一个非碰撞时隙之后,当连续碰撞次数3次时,标签计数器值大于等于3,并且小于11的标签,可表示为3+i(i=0,1,2......7),重新选择0/1随机数,进行分裂。选择0的标签计数器值加i+1,选择1的标签计数器值加i+2;其他的标签,计数器值加9。
实例3
在本实例中,前分裂规则配置为前4次发生碰撞时就进行全分裂,之后连续碰撞次数为2时就全分裂;后分裂规则配置为连续碰撞次数为3,预分裂的起始位置为3,预先分裂的长度为8。
如图7所示,在第一个非碰撞时隙之前,阅读器前4次收到错误的标签回复信息时,使标签进行全分裂,或者连续碰撞次数为2时,标签进行全分裂。若设标签计数器值为count,count为整数,则标签预分裂之后,选择0的标签计数器值加count,选择1的标签计数器值加count+1;第一个非碰撞时隙之后,当连续碰撞次数3次时,标签计数器值大于等于3,并且小于11的标签,可表示为3+i(i=0,1,2......7),重新选择0/1随机数,进行分裂。选择0的标签计数器值加i+1,选择1的标签计数器值加i+2;其他的标签,计数器值加9。
装置实施例
在本是示例中,提供了一种标签分裂装置,图8是根据本发明装置实施例标签分裂装置的框图。
如图8所示,该标签分裂装置包括:设置模块802,被配置为设置用于对多个标签进行标签分裂的第一分裂规则和第二分裂规则;第一处理模块804,用于在阅读器开始对多个标签进行清点后的特定时隙到达前,根据第一分裂规则对多个标签进行第一分裂处理;第二处理模块706,用于在特定时隙到达后,根据第二分裂规则对多个标签中未成功清点的标签进行第二分裂处理。
其中,第一分裂规则包括:第一触发条件,其中,包含有第一预定阈值;第二分裂规则包括:第二触发条件、分裂起始位置、分裂长度,其中,其中,第二分裂规则中包含有第二预定阈值,其中,在连续发生碰撞的次数达到第一预定阈值的情况下确定执行第一分裂处理,在连续发生碰撞的次数达到第二预定阈值的情况下确定执行第二分裂处理,分裂起始位置用于指定执行第二分裂处理的开始时隙,分裂长度用于指定执行第二分裂处理的时隙数量。
其中,特定时隙为预先指定的时隙、或多个标签所在时隙中最早为非碰撞的时隙。
综上所述,借助于本发明的技术方案,通过对第一个非碰撞时隙前后采用不同的防碰撞方法,更好的实现了非0分支动态预先分裂,减少了标签回复碰撞次数,从而大大提高了标签清点效率。并且在标签数目较大的时候,清点效率仍然保持在很高的水平(40.5%),并且还存在上升的趋势。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。