发明名称 移动RFID系统中基于自适应三进制查询分裂的标签防碰撞方法
摘要 本发明公开了一种移动RFID系统中基于自适应三进制查询分裂的标签防碰撞方法,用于解决现有方法标签识别能力差的技术问题。技术方案是根据标签ID序列的二进制表示与三进制表示之间的关系,给出相应的转换公式,构建三叉查询树,优化树型识别方案的性能,解决了三进制查询分裂的应用问题。根据三叉查询树中查询命令的三进制分裂特性,提出三进制解决方案,来快速识别读写区域内的原有停留标签,减少查询命令的数目;并利用三叉查询树方案识别新加入的标签,缩减查询命令的长度,有效解决了标签识别能力差的技术问题。利用分块技术,分别处理原有停留标签与新加入标签的信息碰撞问题,并在此基础上,设计新型标签识别的通信流程。
申请公布号 CN106156681A 申请公布日期 2016.11.23
申请号 CN201610531707.4 申请日期 2016.07.06
申请人 西北工业大学 发明人 蒋毅;张若南;程伟;李彬
分类号 G06K7/10(2006.01)I 主分类号 G06K7/10(2006.01)I
代理机构 西北工业大学专利中心 61204 代理人 王鲜凯
主权项 一种移动RFID系统中基于自适应三进制查询分裂的标签防碰撞方法,其特征在于包括以下步骤:步骤一、针对标签ID序列从二进制向三进制转换的问题,构造转换方法,并建立三叉查询树,用于后续的三进制解决方案,在标签识别时有效减少查询命令的数目和长度;根据标签ID序列的长度分为以下两种情况:1、二进制完全转化为三进制;当l/3=L/2时,标签ID序列从二进制向三进制转换的公式1为:a<sub>i</sub>×2<sup>2</sup>+a<sub>i+1</sub>×2<sup>1</sup>+a<sub>i+2</sub>×2<sup>0</sup>=b<sub>j</sub>×3<sup>1</sup>+b<sub>j+1</sub>×3<sup>0</sup>   (1)其中,l为标签ID序列二进制表示时的长度;L为标签ID序列三进制表示时的长度;标签ID序列的二进制表示为:{a<sub>1</sub>a<sub>2</sub>a<sub>3</sub>…a<sub>l</sub>},a<sub>l</sub>∈{0,1};标签ID序列的三进制表示为:{b<sub>1</sub>b<sub>2</sub>b<sub>3</sub>...b<sub>L</sub>},b<sub>L</sub>∈{0,1,2};i∈{1,4,7...l},j∈{1,3,5...L};此时依据公式,二叉查询树完全转化为三叉查询树;2、二进制部分转化为三进制;当l不能被3整除时,只将标签ID二进制序列中能够被3整除的部分转化为三进制,而剩余部分不变,其中包含1个或2个二进制bit,并构造同时包含三叉查询树和二叉查询树的混合查询树;步骤二、当各标签ID已根据步骤一合理转换后,则标签识别处理流程如下:1、阅读器端的处理流程;阅读器把其读写区域内标签的识别时间划分为多个帧,并存储上一帧中已识别的标签ID,利用函数queue_con()生成能够成功识别的查询命令集合Q,其中queue_con()的计算方法依据三叉查询树的生成规律构建,利用三进制查询分裂,选取具有相同前缀的标签ID中下一个不相同的前缀作为查询命令;在每帧的开始,阅读器向其读写区域内的所有标签发送起始消息,包括其自身ID号ID<sub>Ri</sub>,和当前帧号F<sub>Ci</sub>;三进制查询分裂为:一个查询命令的响应信息若产生碰撞,依据三叉查询树结构,原查询命令最多分裂为三个不同查询命令进行识别;阅读器分别处理原有停留标签和新加入标签的识别,处理流程如下:(1)对于原有停留标签的识别处理;当Q不为空时,此阶段将进行原有停留标签的识别处理,阅读器从Q中提取第一个识别请求序列Q<sub>1</sub>={q<sub>1</sub>q<sub>2</sub>q<sub>3</sub>…q<sub>x</sub>,q<sub>x</sub>∈{0,1,2}},并判断Q中是否存在和Q<sub>1</sub>拥有相同前缀q<sub>1</sub>q<sub>2</sub>q<sub>3</sub>…q<sub>x‑1</sub>仅q<sub>x</sub>不同的其他序列,若有,则将这些序列的数目存储于变量flag_qx中,并将Q<sub>1new</sub>={q<sub>1</sub>q<sub>2</sub>q<sub>3</sub>…q<sub>x‑1</sub>}作为新的查询命令序列发送给其读写范围里的标签;否则,维持原查询命令序列不变,并向外发送;当查询命令发送后,会收到标签的响应信息,根据不同的响应情况,处理过程如下:a)若收到超过一个标签的响应信息,即产生碰撞时隙,通过分析Q<sub>1new</sub>、上一帧已识别标签ID的集合T<sub>i(pre)</sub>和flag_qx,阅读器判断对应此次查询命令的标签是原有停留标签还是离开标签;若收到响应数目小于flag_qx,则发送响应的标签为原有停留标签,对比T<sub>i(pre)</sub>,将其ID存储于当前帧的已识别标签ID集合T<sub>i(cur)</sub>中,拥有相同前缀的剩余标签为离开标签;若收到响应数目等于flag_qx,则发送响应的标签全部为原有停留标签,对比T<sub>i(pre)</sub>,将其ID存储于当前帧的已识别标签ID集合T<sub>i(cur)</sub>中,此时没有离开标签;b)若只收到一个标签的响应信息,即为可读时隙,阅读器直接识别标签,将其ID存储于当前帧的已识别标签ID集合T<sub>i(cur)</sub>中,则离开标签的数目为flag<sub>qx</sub>‑1,从Q<sub>1new</sub>和T<sub>i(pre)</sub>中对比得到其ID值;c)若没有收到标签的响应信息,即为空闲时隙,离开标签的数目为flag<sub>qx</sub>,阅读器从Q<sub>1new</sub>和T<sub>i(pre)</sub>中对比得到其ID值;在第一个识别请求序列发送并识别结束后,从Q中提取第二个序列继续识别,直到Q为空;上述处理过程称为三进制解决方案,利用存储在阅读器内的上一帧已识别标签的ID,对原有停留标签进行快速识别;(2)对于新加入标签的识别处理;当Q为空时,此阶段将进行新加入标签的识别处理,这表明在上一帧中没有已识别的标签存在或原停留标签在当前帧已识别完毕;根据上一帧新加入标签的数目A_ar,来构建三叉查询树;阅读器每识别一个标签,都将更新变量A_ar<sub>cur</sub>=a_ar<sub>cur</sub>+1,并将识别标签的ID存储于T<sub>i(cur)</sub>中;其中,A_ar<sub>cur</sub>表示当前帧新加入标签的数目;如果在读写区域内的标签都已识别完毕,阅读器将发送终止命令,结束识别;阅读器将更新当前帧号F<sub>Ci</sub>=F<sub>Ci</sub>+1,分别拷贝T<sub>i(cur)</sub>和A_ar<sub>cur</sub>给T<sub>i(pre)</sub>和A_ar,并将T<sub>i(cur)</sub>和A_ar<sub>cur</sub>置位为0;最后利用T<sub>i(pre)</sub>和函数queue_con()生成新的集合Q,用于下一帧的识别;2、标签端的处理流程;标签在变量ID<sub>TRi</sub>和F<sub>i</sub>中分别存储了上一帧所属的阅读器ID号和下一帧的帧号,当标签收到阅读器的起始消息后,对比ID<sub>Ri</sub>和ID<sub>TRi</sub>,以及F<sub>Ci</sub>和F<sub>i</sub>的值,若都相等,则标签在当前帧对于阅读器而言为原有停留标签;若任意一个不相等,则标签为新加入标签;若标签收到属于自己状态的识别请求,则检查自身的ID号前缀是否与收到的查询命令相等,如果相等,则向阅读器发送自己的ID,并更新ID<sub>TRi</sub>和F<sub>i</sub>的值;否则,标签将忽略查询命令。
地址 710072 陕西省西安市友谊西路127号