本发明涉及无线射频识别技术领域,尤其涉及一种在物资仓储管理系统中多标签的防碰撞读取方法。
背景技术:
物资仓储的高效管理是企业竞争中尤为重要的环节,但是很多企业的思想观念仍停留在人工作业的基础上,通过传统的纸张文件、功能简单的管理系统盘点和记录进出货物。这种缺乏科学技术指导的人工作业方式容易造成仓储信息处理出错率高、分捡货物效率低、错提、漏提等现象。采用了rfid(radiofrequencyidentification,即射频识别)的物联网技术应用在物资仓储管理系统当中,可实时盘点货物库存,提高管理效率,通常,rfid系统主要由4部分组成:计算机系统、电子标签、天线、阅读器,如图1所示。然而,在进行货物盘点时,多标签的识别问题具有较高的难度和复杂度,需要对其进行更深入的探索和研究。
目前,标签防碰撞算法主要从4个方面入手:空分多址(sdma),码分多址(cdma),频分多址(fdma),时分多址(tdma)。其中,tdma是把整个通路容量按时间划分给多个用户,也是现在rfid标签防碰撞算法领域应用最为广泛的划分方式。基于tdma技术的特点,又将标签防碰撞算法分为两类:一类是概率型的标签防碰撞算法,另一类是确定型的标签防碰撞算法。
概率型的标签防碰撞算法简单、易执行,最具代表的即为aloha算法,它是最早引入标签防碰撞算法的研究当中,标签通过随机选择时间点来响应阅读器。aloha标签防碰撞算法主要分为五种:纯aloha(pa)算法、时隙aloha(sa)算法、帧时隙aloha(fsa)算法、动态帧时隙aloha(dfsa)算法。fsa算法中,当阅读器发送标签读取命令时,处于激活状态的标签会随机选择帧长内的一个时隙对阅读器进行响应,时隙状态有3种:成功时隙(ss)、空闲时隙(is)、碰撞时隙(cs)。
确定型的标签防碰撞算法主要分为二进制搜索树算法、动态二进制搜索树算法、回退式二进制搜索树算法、查询树算法。
标签估计算法目前有以下几类:最小值估计(lb)算法、泊松估计(schoute)算法、碰撞时隙比估计(rct)算法、切比雪夫不等式估计)(vogt)算法。
尽管众多学者对标签防碰撞技术不断进行研究和创新,但从时间效率及硬件开销上,许多学者无法做到均衡。因此设计一个高效、低耗的标签防碰撞算法,仍是一个具有挑战的课题。
技术实现要素:
本发明要解决的技术问题是针对上述现有技术的不足,提供一种在物资仓储管理系统中多标签的防碰撞读取方法,能够快速、准确读取大量标签,从而提高系统吞吐率,减少管理人员统计货物的工作量,提高工作效率。
为解决上述技术问题,本发明所采取的技术方案是:
一种在物资仓储管理系统中多标签的防碰撞读取方法,包括以下步骤:
步骤1:建立用于选择帧长的帧长选择器,该帧长计算器的输入为不同取值的帧长l和待识别标签数,输出为根据待识别标签的数量唯一确定的识别帧长度;
步骤1.1:根据帧时隙aloha算法在不同帧长下系统吞吐率公式构建帧长选择器,不同帧长下,系统吞吐率的交点坐标如下式所示;
其中,
步骤1.2:求得不同交点坐标下标签数量n的取值,可得到帧长动态变化的选择标准;
步骤2:分配初始帧长和初始预测系数,阅读器对带有标签的货物进行第一轮标签读取;
步骤3:建立用于二次识别碰撞时隙内碰撞标签的伪id编码器和盘存标识器;所述伪id编码器的输入为二进制的“0”、“1”数据位,输出为生成的由“0”、“1”构成的标签伪id号;盘存标识器的输入为不同标签的伪id号,输出为标签二次识别的读取状态;
步骤3.1:建立伪id编码器,用于为碰撞标签随机分配数据位为len位的伪id号,所述的len位伪id号以1位数据位为“1”,len-1位数据位为“0”随机组成;
步骤3.2:建立盘存标识器,用于记录二次识别标签的读取状态,从位数为len到位数为1的每一位,进行1个数的计算;
若在x位没有标签伪id号数据位为1,1≤x≤len,则该位的盘存标识位不做修改,依旧为0;
若x位上有且只有一个标签伪id号的数据位1,1≤x≤len,则阅读器的盘存标识位修改为1;
若x位上有多个标签伪id号的数据位1,1≤x≤len,则表明该数据位上有多个标签发生碰撞,阅读器的盘存标识位不做修改;
步骤4:构建时隙扩展融合树方法,利用步骤3中建立的伪id编码器和盘存标识器,对碰撞时隙内碰撞标签进行二次识别;
按下式计算阅读器二次识别标签的系统吞吐率:
其中:s为系统吞吐率;ntotal为二次识别标签过程中,由len位的伪id号导致的额外识别空间增加后,阅读器在一轮标签读取中能够成功识别标签的总数;l为阅读器下一轮识别标签时的帧长;naverage为一个碰撞时隙内碰撞标签的平均数;nextra为一轮查询中增加的总的额外识别空间;len为盘存标识位长度;n为待识别的标签数量;
步骤5:阅读器一轮标签识别完毕后,计算碰撞时隙个数和未识别的标签数,利用步骤1建立的帧长选择器选择下一轮标签读取的帧长,进行新一轮标签读取与二次识别;
步骤6:新一轮标签二次识别后,检测碰撞时隙是否为0,若是,则标签识别完毕,若否,则继续执行步骤7;
步骤7:构建预估计后校验标签估计方法,对未成功识别的标签进行总数估计;
步骤7.1:建立标签估计的预估计器;
阅读器向在其范围内的标签发起第i轮查询,i≥2;
构建预测系数k,第i轮查询结束后,阅读器按下式估计未成功识别的标签数:
nunread=k·ccollision(i)(21)
式中:nunread为表示通过“预估计”得到的第i轮查询结束后未识别的标签个数;k为预测系数,即碰撞时隙内标签的平均数;ccollision(i)表示第i轮查询结束后碰撞时隙的个数;
步骤7.2:建立标签估计的后校验器;
假设阅读器第i+1轮读取过程中的帧长为l(i+1),第i+1轮查询时待识别的标签数为nfinal,则标签在第i+1轮读取过程中产生的碰撞时隙比率即时隙的碰撞概率的表达式如式(22)所示,得到本轮查询期间标签的估计个数的表达式如式(23)所示;
nfinal=ftrans(cratio(i+1),l(i+1))(23)
式中:cratio(i+1)为标签在第i+1轮读取过程中产生的碰撞时隙比率,即时隙的碰撞概率;ftrans为含有未知数nfinal的超越方程;
步骤7.3:通过步骤7.2的后校验器得到的待识别的标签数nfinal修正步骤7.1中预估计器中的预测系数,得到阅读器第i轮读取完毕之后未识别标签的个数,具体方法为:
步骤7.3.1:计算“预估计”得到的标签个数和“后校验”得到的待识别的标签数nfinal之间的误差e,e=nfinal-nunread;
步骤7.3.2:通过误差e的平方对预测系数k求偏导,令偏导为0,得到预测系数k的表达式为
步骤7.3.3:根据式(27)同理得到式(28),并将已知的第i-1轮、第i轮的数据信息带入式(28),得到步骤7.1中预估计器中的预测系数k的取值;
步骤7.3.4:将式(28)带入步骤7.1中估计未成功识别的标签数的公式(21)中,得到阅读器第i轮读取完毕之后未识别标签的个数,如式(29)所示:
步骤8:利用步骤1构建的帧长选择器以及步骤7.3估计的未识别标签的个数,选择阅读器下一轮即第i+1轮读取标签的帧长,开启新一轮的标签读取与二次识别,返回步骤6。
采用上述技术方案所产生的有益效果在于:本发明提供的在物资仓储管理系统中多标签的防碰撞读取方法,采用pepc标签估计法进行标签估计,其误差比原有标签估计算法误差低,稳定性好,提高了标签估计的准确度;采用seft方法为产生碰撞的标签分配一定长度的伪id号,对碰撞时隙再利用,提高阅读器一轮读取标签的数量,进而提高系统吞吐率。因此,本发明在物资仓储管理系统中能够快速、准确读取大量标签,极大地减少管理人员统计货物的工作量,从而提高工作效率。
附图说明
图1为rfid系统组成结构示意图;
图2为本发明实施例提供的在物资仓储管理系统中多标签的防碰撞读取方法流程图;
图3为本发明实施例提供的建立的帧长选择器模型的吞吐率曲线图;
图4为本发明实施例提供的seft算法的标签伪id号盘存规则原理图;
图5为本发明实施例提供的固定帧长下seft方法和fsa算法吞吐率比较图;
图6为本发明实施例提供的动态帧长下seft方法和dfsa算法查询周期数比较图;
图7为本发明实施例提供的动态帧长下pepc标签估计方法与其他标签估计方法误差比较图;
图8为本发明实施例提供的动态帧长下pepc标签估计方法与其他标签估计方法消耗时隙总数比较图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
fsa算法中,在帧长为l,标签数为n的条件下,标签选择每个时隙的概率都是1/l,那么在一个时隙内具有r个标签的概率将服从二项分布,如式表示:
其中:l为fsa算法中帧长的固定值;pr为一个时隙内具有r个标签的概率。
该时隙为is、ss、cs的概率分别为:
pcollision=1-pidle-psuccess(4)
其中,pidle为一个时隙为is的概率;psuccess为一个时隙为ss的概率;pcollision为一个时隙为cs的概率。
该时隙为is、ss、cs的期望值分别为:
ecollision=l-eidle-esuccess(7)
其中,eidle为一个时隙为is的期望值;esuccess为一个时隙为ss的期望值;ecollision为一个时隙为cs的期望值。
则fsa算法下,系统吞吐率为:
其中,l表示帧时隙aloha算法中帧长的固定值;esuccess表示一个时隙为成功时隙的期望值。
如图2所示,本实施例提供一种在物资仓储管理系统中多标签的防碰撞读取方法,具体如下所述。
步骤1:建立用于选择帧长的帧长选择器,该帧长计算器的输入为不同取值的帧长l和待识别标签数,输出为根据待识别标签的数量唯一确定的识别帧长度;
步骤1.1:根据帧时隙aloha算法在不同帧长下系统吞吐率公式构建帧长选择器:
不同帧长下,系统吞吐率的交点坐标可如式(19)所示:
s(l1,n)=s(l2,n);(9)
其中,
由上述构建的帧长选择器,可得交点坐标下,帧长计算器模型的吞吐率曲线图如图3所示,标签的取值可如式(10)所示:
步骤1.2:求得不同交点坐标下标签数量n的取值,可得到帧长动态变化的选择标准,如表1所示。
表1帧长与标签数目关系表
步骤2:阅读器对带有标签货物的读取过程中,首先分配初始帧长和初始预测系数,阅读器发送读取标签指令query,进行第一轮的标签读取。
步骤3:建立用于二次识别碰撞时隙内碰撞标签的伪id编码器和盘存标识器。
该伪id编码器的输入为二进制的“0”、“1”数据位,输出为生成的由“0”、“1”构成的标签伪id号;盘存标识器的输入为不同标签的伪id号,输出为标签二次识别的读取状态。
步骤3.1:建立伪id编码器,用于为碰撞标签随机分配数据位为len位的伪id号(伪id号意思即为存在两个或两个以上的标签被分配相同的id),len位伪id号以1位数据位为“1”,len-1位数据位为“0”随机组成;
步骤3.2:建立盘存标识器,用于记录二次识别标签的读取状态,从位数为len到位数为1的每一位,进行1个数的计算;
若在x位没有标签伪id号数据位为1,1≤x≤len,则该位的盘存标识位不做修改,依旧为0;
若x位上有且只有一个标签伪id号的数据位1,1≤x≤len,则阅读器的盘存标识位修改为1;
若x位上有多个标签伪id号的数据位1,1≤x≤len,则表明该数据位上有多个标签发生碰撞,阅读器的盘存标识位不做修改。
图4为本实施例式中标签伪id号盘存规则原理图。
步骤4:构建时隙扩展融合树(seft)方法,阅读器对碰撞标签发送queryrep命令,利用步骤3中的伪id编码器和盘存标识器,对碰撞时隙内碰撞标签进行二次识别。
当阅读器发送读取标签query指令时,包含帧长信息l,待识别标签数为n时,标签随机选取时隙后,所得不同时隙的概率分别为psuccess、pidel、pcollision,由此可以得到阅读器在该轮标签识别过程中,产生的ss数量和cs数量,如式(11)和式(12)所示:
式中:nsuccess为帧长l下,成功时隙数的理论值;ncollision为帧长l下,碰撞时隙数的理论值;
由此可以计算出该轮标签识别过程中每个cs产生的碰撞标签的平均个数,如式(13)所示:
式中:naverage为一个cs内碰撞标签的平均数。
多个标签在cs中发生碰撞,阅读器为这些碰撞标签随机分配数据位为len位的伪id号,无形中为这些标签增加了额外的识别空间。额外识别空间的总数可如式(14)表示:
ltotal=l·len(14)
式中:len为盘存标识位长度;ltotal为引入伪id号之后,额外增加的识别空间总数。
增加额外识别空间之后,一个时隙为cs的概率如式(15)表示:
式中:ptotal_succ为额外识别空间增加后为一个时隙为cs的概率。
于是可以得到额外识别空间增加后,在一轮读取中能够成功识别标签的总数如式(16)表示:
式中:ntotal为额外识别空间增加后一轮读取能够成功识别标签的总数。
由于在cs内使用伪id号对标签进行二次识别,二次识别过程中,盘存标识位对应数据为0的概率为式(17)表示:
式中:pagain_idle为二次识别过程中,盘存标识位对应数据为0的概率。
则一个cs增加的额外空间由式(18)表示:
nextra_cs=len·(1-pagain_idle)(18)
式中:nextra_cs为每一个碰撞时隙增加的额外空间。
阅读器结束一轮对标签的查询之后,增加的总的额外空间为式(19)所示:
nextra=ncollision·nextra_cs(19)
式中:nextra为一轮查询中增加的总的额外空间。
使用该算法得到的系统吞吐率如式(20)表示:
式中:s为系统吞吐率。
图5为本实施例中固定帧长下seft算法和fsa算法吞吐率比较图。可以看出,在不考虑帧长动态调整的情况下,seft算法的系统吞吐率明显高于fsa算法,这打破了无论如何提高概率型标签防碰撞算法精度,系统吞吐率水平最高也只能达到一定的局限。
图6为本实施例中动态帧长下seft算法和dfsa算法查询周期数比较图。可以看出,在帧长动态变化下,当标签全部识别完毕后,引入了伪id号的seft算法,因为cs得到了二次利用,使得每一轮识别过程中都能对碰撞标签进行二次识别,解决部分未识别标签,因此seft算法识别周期数要明显小于dfsa算法的识别周期数。识别完毕所有标签所用周期数越少,系统吞吐率越高。
步骤5:阅读器一轮标签识别完毕之后,计算碰撞时隙个数,和未识别的标签数,利用步骤1建立的帧长选择器选择下一轮标签读取的帧长,进行新一轮标签读取与二次识别。其中二次识别过程在每一轮标签读取中均要根据步骤4的方法执行。
步骤6:新一轮标签二次识别后,检测碰撞时隙是否为0,若不是,继续执行下一步骤,若是,标签识别完毕。
步骤7:构建预估计后校验(pepc)标签估计方法,对未成功识别的标签进行总数估计;
利用标签估计预测系数估计一轮查询之后产生的碰撞标签总数,即下一轮读取时待识别的标签数;进行下一轮读取时,利用碰撞时隙比计算本轮待识别标签数,即上一轮产生的碰撞标签数。然后通过下一轮标签数的估值对上一轮标签数的估值进行比较,根据比较结果不断修正前期标签估计的预测系数,降低估计误差,以提高算法准确度。
步骤7.1:建立标签估计的预估计器,阅读器向在其范围内的标签发起第i(i=2,3....)轮查询;该轮查询结束后,阅读器估计未成功识别的标签数,该步骤即为“预估计”。
通过标签估计的预测系数,计算i轮标签识别完毕后的剩余标签数,首轮查询可使用初始预测系数。未成功识别的标签数如式(21)所示:
nunread=k·ccollision(i)(21)
式中:nunread为表示通过“预估计”得到的第i次查询结束后未识别的标签个数;k为预测系数,即cs内标签的平均数;ccollision(i)为表示第i次查询结束后cs的个数。
步骤7.2:建立标签估计的后校验器;
假设阅读器第i+1轮读取过程中的帧长为l(i+1),第i+1轮查询时待识别的标签数为nfinal,则标签在第i+1轮读取过程中产生的碰撞时隙比率即时隙的碰撞概率的表达式如式(22)所示,得到本轮查询期间标签的估计个数的表达式如式(23)所示,该步骤即为“后校验”;
nfinal=ftrans(cratio(i+1),l(i+1))(23)
式中:cratio(i+1)为标签在第i+1轮读取过程中产生的碰撞时隙比率,即时隙的碰撞概率;ftrans为含有未知数nfinal的“超越方程”。
超越方程一般没有解析解,而只有数值解或近似解。常通过牛顿切线法、幂级数解法等方法求近似解。或利用matlab编制的程序来求解。
步骤7.3:通过“预估计”和“后校验”,可得到两者之间的误差e。
“预估计”和“后校验”两者得到的标签个数之间的误差如式(24)所示:
e=nfinal-nunread(24)
误差的平方由式(25)表示:
令
即得到预测系数k的表达式为:
由上式可知,k的取值使得e值达到最小,阅读器在每一轮的读取当中,预测系数是可变的,需要通过不断校正来调整预测系数,降低标签估计误差。同理可得,k值可如式(28)所示,将已知的第i-1轮、第i轮的数据信息带入式(28),得到步骤7.1中预估计器中的预测系数k的取值;
其中,cratio(i)为标签在第i轮读取过程中产生的碰撞时隙比率,即时隙的碰撞概率;l(i)为标签在第i轮读取过程中的帧长;ccollision(i-1)表示第i-1轮查询结束后碰撞时隙的个数;
步骤7.4:将式(28)带入式(21)中,得到阅读器第i轮读取完毕之后,未识别标签的个数为式(29)所示:
图7为本实施例中动态帧长下pepc标签估计方法与其他标签估计方法误差比较图,由图中可以看出,lb算法是误差最大的一种算法,算法结果不稳定,具有极大的波动性。schoute算法和vogt算法误差数量在5上下波动,算法稳定性也较差。而rct算法和本文提出的pepc算法的误差曲线波动较小,误差数量差距不大。rct算法可将误差数量控制在2以下,pepc算法可将误差数量控制在1以下,更接近于未识别标签的真实数量。
图8为本实施例中动态帧长下pepc标签估计方法与其他标签估计方法消耗时隙总数比较图。识别完500个标签时,lb算法消耗的时隙总数最高,耗费将近1600个时隙。pepc算法是这五种算法里消耗时隙总数最低的,耗费将近1400个时隙。
由结果可知,本发明中的pepc方法降低了标签估计误差,也减少了标签读取完毕所消耗的时隙总数,能够大大提高系统的工作效率,为后期标签防碰撞算法提供了一个较为精准的标签估计算法。
步骤8:利用步骤1构建的帧长选择器以及步骤7.3估计的未识别标签的个数,选择阅读器第i+1轮读取标签的帧长,开启新一轮的标签读取与二次识别,返回步骤6。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明权利要求所限定的范围。