基于二进制的分组防碰撞优化算法的制作方法

文档序号:16149291发布日期:2018-12-05 17:12阅读:412来源:国知局

本发明涉及通信技术领域中射频多标签识别技术,具体为一种基于二进制的分组防碰撞优化算法。

背景技术

石化产品库管理一直是企业的基础核心内容。一方面,仓储环境恶劣,众多产品为高毒性、高腐蚀性产品,另一方面,产品库中存在混杂存放,无法快速识别产品,且人为处理,效率低下,容易出错。为了快速识别大批量混杂库存产品,出现了条码技术,然而条码安全度低、存储信息少、识别距离近,容易污损。相比与传统条码技术,射频识别(frid)技术具有明显的优势,其能够不直接接触物体进行识别、能够同时识别多个标签、能够识别快速移动的标签、可用于恶劣环境;另外,射频技术具有较高的保密性,能够较为安全地进行数据存储和交换传输。将射频识别技术运用至石化企业产品的出入库中代替条码技术,可有效的解决条码技术的问题,实现同时识别多个产品标签,达到较高效率的识别产品信息,以节约时间成本和人力成本。

射频识别技术应用于产品出入库时仍然存在问题:a)当产品数量较多时,射频识别技术在实现多产品的识别时,出现标签碰撞,从而导致识别滞后;b)当多产品出现标签重叠时,射频识别技术识别多产品标签的准确率随着标签的数量增加而降低。上述两点均属于标签碰撞问题,其实质是信道争用和叠加信号识别问题。

目前防碰撞协议在现有技术中一般都基于两种基本算法:时隙aloha算法和二进制树的搜索算法。时隙aloha算法通信复杂度低,动态适应性强,但是算法随机性大,性能不稳定。而基于二进制树的算法不存在标签饥饿问题,但是阅读器与标签之间的交互次数多,通信数据量大,标签识别效率低。

当前大多系统的应用都属于标签密集型应用,在这些系统中,读写器作用范围内有多个未识别的标签,当读写器发出查询指令后,每个标签都会做出响应。此时所有标签的同时响应将产生标签数据碰撞,导致读写器不能正确的识别标签数据。标签数据碰撞的危害不仅在于阻碍读写器的识别速度,还可能会导致系统失灵。因此,需要建立有效的防碰撞机制来协调读写器与标签之间的通信过程。这些用来解决标签碰撞问题的命令或方法被称为标签防碰撞算法。系统所釆用的防碰撞算法的性能优劣,对系统识别能力至关重要,将直接决定读写器的标签吞吐能力,进而影响整个应用系统的性能。深入开展多标签防碰撞算法方面的研究工作,将有助于提高多标签系统的识别效率,减少系统延迟,保证系统稳定可靠运行,使得读写器能够在最短的时间内正确识别最大数量的标签。

正是基于这样的研究目的,在通过对技术相关理论进行深入探索的基础之上,展开了防碰撞算法的研究,本发明提出了新的多标签防碰撞算法。



技术实现要素:

针对现有技术中的缺陷,本发明提供一种基于二进制的分组防碰撞优化算法,本发明通过对传统算法的优化,进一步优化系统的识别效率、系统工作效率。

本发明技术方案如下:

一种基于二进制的分组防碰撞优化算法,其关键在于,包括以下步骤:

步骤1、阅读器发出request(null,8)查询命令,使在它工作范围内的电子标签作出响应;

步骤2、阅读器对是否接到有效的响应进行检测,会出现两种情况;

步骤2.1、当阅读器接到有效响应时,则只有一个标签,识别功能结束;

步骤2.2、当阅读器没有接到有效响应时,执行步骤3;

步骤3、步骤2.2中有碰撞,判断碰撞位是否连续,会出现两种情况;

步骤3.1、碰撞位不连续,执行步骤4;

步骤3.2、碰撞位连续,执行步骤5;

步骤4、对于查询前缀,碰撞位不连续,高于最高碰撞位保持不变,在此部分上分别在后面添加0和1作为查询前缀,同时更新栈data,阅读器提取指令时按栈的出栈顺序从栈顶开始获取,并将最高碰撞位x作为查询指令的一部分,会出现两种情况;

步骤4.1、若只有一个电子标签响应则被识别,执行步骤6;

步骤4.2、若发生碰撞则转步骤3,重新开始判断碰撞位的连续性;

步骤5、对于查询前缀,高于最高碰撞位保持不变,并记录碰撞位的标号,在上次查询前缀的基础上添加00、01、10、11加入查询栈data的末尾构成一个新的查询前缀,阅读器提取指令时按栈的出栈顺序从栈顶开始获取,并将最高碰撞位x作为查询指令的一部分,会出现两种情况;

步骤5.1、若成功识别该电子标签,执行步骤6;

步骤5.2、若发生碰撞,转步骤3,重新开始判断碰撞位的连续性;

步骤6:判断用于装载查询前缀的栈data是否为空,如果为空,则电子标签被全部识别,若还有栈元素,则继续出栈发送下次查询前缀,转步骤3。

本发明基于二进制的分组防碰撞优化算法的扩展位增加到2位。同时引入了时隙延长机制。对于信号中高于最高碰撞位的序列号保持不变,分为两种情况:如果最高碰撞位和次高碰撞位不是连续的则采用二进制算法,如果连续,阅读器会接收到从最高碰撞位开始的连续两位碰撞位记录下序列号并将之发送给所用的标签,使电子标签将这2位转换成十进制数,阅读器在前次查询前缀的基础上增加00、01、10、11作为查询命令的前缀,然后阅读器根据新生产的查询前缀去进行识别。先设电子标签的id长度为n,用p表示首位碰撞位,k表示发送前缀的位数。指令request(prefix,x),prefix表示为阅读器的查询前缀,x为最高碰撞位。采用前面的命令unselect作为阅读器的休眠命令。当标签被识别时进入休眠,不再对后面的指令响应。

本发明具有如下有益效果:

本发明算法在最开始情况下首先引入预处理将电子标签进行分组,减少电子标签产生碰撞的可能。通过分组,碰撞位前2位化为十进制的计算结果作为延时时隙。在进行时隙延时时标签对碰撞位化为十进制进行了优化不会产生空时隙。表明该算法对查询前缀进行了改进,在一定程度上提高了系统的吞吐率、缩短了系统延迟,提高了rfid系统的识别效率。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。在所有附图中,类似的元件或部分一般由类似的附图标记标识。附图中,各元件或部分并不一定按照实际的比例绘制。

图1为本发明流程图。

具体实施方式

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

如图1所示的一种基于二进制的分组防碰撞优化算法,其关键在于,包括以下步骤:

步骤1、阅读器发出request(null,8)查询命令,使在它工作范围内的电子标签作出响应;

步骤2、阅读器对是否接到有效的响应进行检测,会出现两种情况;

步骤2.1、当阅读器接到有效响应时,则只有一个标签,识别功能结束;

步骤2.2、当阅读器没有接到有效响应时,执行步骤3;

步骤3、步骤2.2中有碰撞,判断碰撞位是否连续,会出现两种情况;

步骤3.1、碰撞位不连续,执行步骤4;

步骤3.2、碰撞位连续,执行步骤5;

步骤4、对于查询前缀,碰撞位不连续,高于最高碰撞位保持不变,在此部分上分别在后面添加0和1作为查询前缀,同时更新栈data,阅读器提取指令时按栈的出栈顺序从栈顶开始获取,并将最高碰撞位x作为查询指令的一部分,会出现两种情况;

步骤4.1、若只有一个电子标签响应则被识别,执行步骤6;

步骤4.2、若发生碰撞则转步骤3,重新开始判断碰撞位的连续性;

步骤5、对于查询前缀,高于最高碰撞位保持不变,并记录碰撞位的标号,在上次查询前缀的基础上添加00、01、10、11加入查询栈data的末尾构成一个新的查询前缀,阅读器提取指令时按栈的出栈顺序从栈顶开始获取,并将最高碰撞位x作为查询指令的一部分,会出现两种情况;

步骤5.1、若成功识别该电子标签,执行步骤6;

步骤5.2、若发生碰撞,转步骤3,重新开始判断碰撞位的连续性;

步骤6:判断用于装载查询前缀的栈data是否为空,如果为空,则电子标签被全部识别,若还有栈元素,则继续出栈发送下次查询前缀,转步骤3。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解;其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。

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