专利名称:基于标签随机分组的动态帧时隙防碰撞方法
技术领域:
本发明属于射频识别通信技术领域,具体涉及一种基于标签随机分组的动态帧时 隙防碰撞方法。
背景技术:
射频识别(Radio Frequency Identification,简称RFID)通信技术是一种非接触 式自动识别技术。在射频识别系统中,读写器通过射频信号与标签进行通信,并获取标签上 存储的识别信息。RFID通信与其他典型的射频通信所面临的一个共同问题是,如何解决同一个系统 中多个设备之间同时通信的碰撞问题。对于RFID通信而言,主要解决单个读写器与多个标 签通信的碰撞问题。限于成本和功耗的因素,标签只能够提供极为有限的功能用于防碰撞 机制的实现。目前多标签防碰撞方法主要分为时隙ALOHA算法和二叉树算法两大类。时隙ALOHA算法的基本特征是,系统将标签返回的连续时间划分为若干时隙,标 签根据读写器命令中指定的时隙范围,随机选择时隙进行返回,读写器根据返回的信息进 行判断,如果发生碰撞则要求标签重新选择时隙并进行返回,直到读写器清点所有标签。帧时隙ALOHA算法是在时隙ALOHA算法的基础上,将多个时隙组成一帧,标签在某 一帧内随机选择一个时隙进行返回,该方法减少了防碰撞过程中读写器发送命令的次数。假设读写器作用范围内标签数量为N,读写器清点这些标签需要的总时隙数为M, 则系统吞吐率S可定义为S = Ν/Μ。在帧时隙ALOHA算法中,当帧长度与未识别标签数量 相当时,系统吞吐率达到最大值;然而,当帧长度远大于或远小于未识别标签数量时,系统 吞吐率急剧下降。动态帧时隙ALOHA算法是在帧时隙ALOHA算法的基础上,增加了根据估计的标签 数量动态调整帧长度的机制,相比于帧时隙ALOHA算法,该方法有效地提高了系统吞吐率。然而,在动态帧时隙ALOHA算法中,当标签数量估计不准确时,仍不能将系统吞吐
率保持在较高值。
发明内容
本发明的目的是针对现有的动态帧时隙ALOHA算法存在的不足,提供一种防碰撞 方法,避免了标签数量估计不准确的问题,从而将系统吞吐率保持在较高值。本发明的技术方案是,一种基于标签随机分组的动态帧时隙防碰撞方法,应用于 射频识别系统中,具体步骤如下所述步骤1:初始化。读写器设置参数Ll = 2、L2 = 4,C = 0,D = 0,E = 0。步骤2 读写器复位标签清点标志位并将标签随机分组。读写器向其作用范围内的所有标签发送参数为Ll的分组命令。标签接收到上述分组命令后,将自身的清点标志位清零,并在
范围内随机选择一个整数作为其分组号,分组号相同的标签为一组。然后,按照分组号对应的数值由 小到大的顺序,各分组中的标签依次向读写器返回一个16位的随机数,该16位随机数使用 具有碰撞位检测能力的编码方式(如Manchester编码)进行编码。步骤3 读写器获取标签分组信息。读写器接收完所有分组中标签返回的16位随机数后,根据接收情况对所有分组 进行分类统计没有接收到任何数据的分组为空闲组,可统计其数量为zO,分组号依次为 ZIDLE
ZIDLE[zO-l];接收到16位随机数并且没有发生碰撞的分组为单标签组,可统 计其数量为zl,分组号依次为Ζ0ΝΕ
Z0NE[zl-l],同时可得到在这zl个单标签组中接 收的16位随机数依次为ZID
ZID[zl-l];接收到16位随机数并且发生碰撞的分组为 多标签组,可统计其数量为z2,分组号依次为ZTW0W] ZTW0[z2-l]。读写器判断zl是否为0,如果不为0,跳到步骤4 ;如果为0,将分组命令参数设置 为Ll = Ll*2,返回步骤2。步骤4 读写器清点单标签组。读写器发送把ZONE [C]和ZID [C]作为参数的确认命令。标签接收到上述确认命令后,把自身的分组号和最近一次返回的16位随机数,分 别与Z0NE[C]和ZID[C]进行比较,如果比较结果均相等,则将自身的ID号返回给读写器, 并将清点标志位置1 ;反之,清点标志位不变。步骤5 读写器判断是否已完成所有单标签组的清点。读写器判断C的值,若C小于zl-1,设置C = C+1,返回步骤4 ;若C等于zl_l,跳 到步骤6。步骤6 读写器清点多标签组。读写器清点多标签组ZTW0[D]中所有标签的步骤如下所述第1步读写器开始多标签组ZTW0[D]的清点。读写器发送以L2和ZTW0[D]为参数的查询命令。接收到上述查询命令后,分组号为ZTW0[D]并且清点标志位为0的标签在
范围内随机选择时隙值,然后按照时隙值的大小在相应时隙向读写器返回一个16位 的随机数,该16位随机数使用具有碰撞位检测能力的编码方式(如Manchester编码)进 行编码。第2步读写器统计分类所有时隙上的标签返回情况。读写器接收完所有L2个时隙上标签返回的16位随机数后,根据返回情况对所 有时隙进行分类统计,没有接收到任何数据的时隙为空闲时隙,可统计其数量为a0 ;接收 到16位随机数并且没有发生碰撞的时隙为单标签时隙,可统计其数量为al,时隙值依次 为FONE W] F0NE[al-l],同时可得到在这al个单标签时隙中接收的16位随机数依次为 FID
FID[al-l];接收到16位随机数并且发生碰撞的时隙为多标签时隙,可统计其数 量为a2。第3步读写器清点单标签时隙F0NE[E]。读写器发送以ZTW0[D]和FID[E]为参数的确认命令。标签接收到上述确认命令后,把自身的分组号和最近一次返回的16位随机数,分 别与ZTW0[D]和FID[E]进行比较,如果比较结果均相等,则将自身的ID号返回给读写器,并将清点标志位置1 ;反之,清点标志位不变。第4步读写器判断是否已完成所有单标签时隙的清点。读写器判断E的值,若E小于al-Ι,设置E = E+1,返回第3步;若E等于al_l,设 置E = 0,跳到第5步。第5步读写器判断是否已完成多标签组ZTW0[D]的清点。读写器判断a2的值是否为0,若a2大于0,设置参数L2 = 2柏2,返回第1步;若 a2等于0,设置L2 = 4,跳到步骤7。步骤7 读写器判断是否已完成所有多标签组的清点。读写器判断D的值,若D小于z2-l,设置D = D+1,返回步骤6 ;若D等于z2_l,步 骤7结束,表明读写器已清点完其作用范围内的所有标签。本发明的有益效果是(a)读写器首先发送参数Ll = 2的分组命令,该命令将标签随机分为Ll组,在 这Ll个分组中,若存在单标签组,则分组完成;否则,设置Ll = Ll*2,继续将标签随机分为 Ll组,如此循环,直至出现单标签组时,分组完成,利用这种方法,可快速实现标签的随机分组。(b)随机分组完成后,对于任意一个多标签组,读写器发送帧长度参数L2 = 4的查 询命令,让该多标签组中的所有未被清点的标签在
的范围内随机选择时隙返回, 标签返回后,读写器发送确认命令,完成所有单标签时隙的清点,接着判断多标签时隙的数 量a2,若a2值为0,则该多标签组清点结束;若a2值大于0,读写器继续发送帧长度参数L2 =2*a2的查询命令,如此循环,直到a2值为0,即该多标签组清点结束,这就避免了标签数 量估计不准确的问题,将系统吞吐率保持在了较高值。
图1是本发明提出的防碰撞方法的流程;图2是执行本发明一具体实施方式
中多标签被清点的过程;图3是本发明方法与帧时隙ALOHA算法的系统吞吐率比较图。
具体实施例方式图1是本发明提出的防碰撞方法的流程,具体包括如下7个步骤步骤1 初始化;步骤2 读写器复位标签清点标志位并将标签随机分组;步骤3 读写器获取标签分组信息;步骤4 读写器清点单标签组;步骤5 读写器判断是否已完成所有单标签组的清点;步骤6 读写器清点多标签组;步骤7 读写器判断是否已完成所有多标签组的清点。图2是执行本发明一具体实施方式
中多标签被清点的过程。在本实施方式中,假设读写器作用范围内同时存在9个标签,编号从标签1到标签 9,具体实施方式
步骤如下
6
具体实施步骤1 初始化。读写器设置参数Ll = 2、L2 = 4,C = 0,D = 0,E = 0。具体实施步骤2 读写器复位标签清点标志位并将标签随机分组。读写器向其作用范围内的所有标签发送参数为Ll的分组命令。标签接收到上述分组命令后,将自身的清点标志位清零,并在
范围内随 机选择一个整数作为其分组号,分组号相同的标签为一组。然后,按照分组号对应的数值由 小到大的顺序,各分组中的标签依次向读写器返回一个16位的随机数,该16位随机数使用 具有碰撞位检测能力的编码方式(如Manchester编码)进行编码。执行完具体实施步骤2后,所有9个标签清点标志位全部被清零,图2中的表示方 法为,以标签1为例,若其清点标志位为0,则表示为“1 (0) ”。可以看到,选择分组0的为标 签2、5、7、8,选择分组1的为标签1、3、4、6、9。这两个分组中的标签依次向读写器返回一个 16位的随机数。具体实施步骤3 读写器获取标签分组信息。读写器接收完所有分组中标签返回的16位随机数后,根据接收情况对所有分组 进行分类统计。没有接收到任何数据的分组为空闲组,可统计其数量为zO,分组号依次为 ZIDLE
ZIDLE[zO-l];接收到16位随机数并且没有发生碰撞的分组为单标签组,可统 计其数量为zl,分组号依次为Ζ0ΝΕ
Z0NE[zl-l],同时可得到,在这zl个单标签组中 接收的16位随机数依次为ZID
ZID[zl-l];接收到16位随机数并且发生碰撞的分组 为多标签组,可统计其数量为z2,分组号依次为ZTW0
ZTW0[z2-l]。执行完具体实施步骤3后,读写器可得到zl的值为0,于是读写器设置参数Ll = 4。具体实施步骤4 读写器复位标签清点标志位并将标签随机分组。读写器向其作用范围内的所有标签发送参数为Ll的分组命令。标签接收到上述分组命令后,将自身的清点标志位清零,并在
范围内随 机选择一个整数作为其分组号,分组号相同的标签为一组。然后,按照分组号对应的数值由 小到大的顺序,各分组中的标签依次向读写器返回一个16位的随机数,该16位随机数使用 具有碰撞位检测能力的编码方式(如Manchester编码)进行编码。执行完具体实施步骤4后,可以看到,选择分组0的为标签3、5、7、8,选择分组1的 为标签1、6,选择分组2的为标签2、4,选择分组3的为标签9。这四个分组中的标签依次向 读写器返回一个16位的随机数。具体实施步骤5 读写器获取标签分组信息。读写器接收完所有分组中标签返回的16位随机数后,根据接收情况对所有分组 进行分类统计。没有接收到任何数据的分组为空闲组,可统计其数量为zO,分组号依次为 ZIDLE
ZIDLE[zO-l];接收到16位随机数并且没有发生碰撞的分组为单标签组,可统 计其数量为zl,分组号依次为ZONE W] Z0NE[zl-l],同时可得到,在这zl个单标签组中 接收的16位随机数依次为ZID
ZID[zl-l];接收到16位随机数并且发生碰撞的分组 为多标签组,可统计其数量为z2,分组号依次为ZTW0W] ZTW0[z2-l]。执行完具体实施步骤5后,读写器可得到,z0的值为0,zl的值为1,z2的值为3。具体实施步骤6 读写器清点单标签组ZONE [C]。
读写器发送把ZONE [C]和ZID [C]作为参数的确认命令。标签接收到上述确认命令后,把自身的分组号和最近一次返回的16位随机数,分 别与Z0NE[C]和ZID[C]进行比较,如果比较结果均相等,则将自身的ID号返回给读写器, 并将清点标志位置1 ;反之,清点标志位不变。执行完具体实施步骤6后,标签9将其清点标志位置1,其余标签清点标志位不变, 如图2所示。具体实施步骤7 读写器判断是否已完成所有单标签组的清点。读写器判断C的值,若C小于zl-1,设置C = C+1 ;否则,保持C的值不变。执行完具体实施步骤7后,读写器得到C的值为0,zl-1的值也为0,即C与zl_l 相等,保持C的值不变。具体实施步骤8 读写器清点多标签组ZTW0[D]。读写器清点多标签组ZTW0[D]中所有标签的步骤(包括具体实施第801步 具体 实施第814步)如下所述具体实施第801步读写器开始多标签组ZTW0[D]的清点。读写器发送以L2和ZTW0[D]为参数的查询命令。接收到上述查询命令后,分组号为ZTW0[D]并且清点标志位为0的标签在
范围内随机选择时隙值,然后按照时隙值的大小在相应时隙向读写器返回一个16位 的随机数,该16位随机数使用具有碰撞位检测能力的编码方式(如Manchester编码)进 行编码。执行完具体实施第801步后,没有标签选择时隙0,选择时隙1的为标签5,选择时 隙2的为标签7、8,选择时隙3的为标签3,如图2所示。这四个时隙中的标签依次向读写 器返回一个16位的随机数。具体实施第802步读写器统计分类所有时隙上的标签返回情况。读写器接收完所有L2个时隙上的标签返回的16位随机数后,根据返回情况对所 有时隙进行分类统计,没有接收到任何数据的时隙为空闲时隙,可统计其数量为a0 ;接收 到16位随机数并且没有发生碰撞的时隙为单标签时隙,可统计其数量为al,时隙值依次 为FONE W] F0NE[al-l],同时可得到在这al个单标签时隙中接收的16位随机数依次为 FID
FID[al-l];接收到16位随机数并且发生碰撞的时隙为多标签时隙,可统计其数 量为a2。执行完具体实施第802步后,读写器可以得到aO的值为l、al的值为2、a2的值为 1。具体实施第803步读写器清点单标签时隙FONE [E]。读写器发送以ZTW0[D]和FID[E]为参数的确认命令。标签接收到上述确认命令后,把自身的分组号和最近一次返回的16位随机数,分 别与ZTW0[D]和FID[E]进行比较,如果比较结果均相等,则将自身的ID号返回给读写器, 并将清点标志位置1 ;反之,清点标志位不变。执行完具体实施第803步后,标签5将其清点标志位置1,其余标签清点标志位不变。具体实施第804步读写器判断是否已完成所有单标签时隙的清点。
读写器判断E的值,若E小于al-Ι,设置E = E+1 ;若E等于al_l,设置E = 0。执行完具体实施第84步后,读写器得到E的值为0,al-Ι的值为1。于是读写器 设置E = 1。具体实施第805步读写器清点单标签时隙FONE [E]。读写器发送以ZTW0[D]和FID[E]为参数的确认命令。标签接收到上述确认命令后,把自身的分组号和最近一次返回的16位随机数,分 别与ZTW0[D]和FID[E]进行比较,如果比较结果均相等,则将自身的ID号返回给读写器, 并将清点标志位置1 ;反之,清点标志位不变。执行完具体实施第805步后,标签3将其清点标志位置1,其余标签清点标志位不变。具体实施第806步读写器判断是否已完成所有单标签时隙的清点。读写器判断E的值,若E小于al-Ι,设置E = E+1 ;若E等于al_l,设置E = 0。执行完具体实施第806步后,读写器得到E的值为l,al_l的值为1。即E与al_l 相等,设置E = 0。具体实施第807步读写器判断是否已完成多标签组ZTW0[D]的清点。读写器判断a2的值是否为0,若a2大于0,设置参数L2 = 2柏2,若a2等于0,设 置 L2 = 4。执行完具体实施第807步后,读写器得到a2的值为1,即a2大于0,设置参数L2 =2。具体实施第808步读写器继续多标签组ZTW0[D]的清点。读写器发送以L2和ZTW0[D]为参数的查询命令。接收到上述查询命令后,分组号为ZTW0[D]并且清点标志位为0的标签在
范围内随机选择时隙值,然后按照时隙值的大小在相应时隙向读写器返回一个16位 的随机数,该16位随机数使用具有碰撞位检测能力的编码方式(如Manchester编码)进 行编码。执行完具体实施第808步后,选择时隙0的为标签7,选择时隙1的为标签8,如图 2所示。这两个时隙中的标签依次向读写器返回一个16位的随机数。具体实施第809步读写器统计分类所有时隙上的标签返回情况。读写器接收完所有L2个时隙上的标签返回的16位随机数后,根据返回情况对所 有时隙进行分类统计,没有接收到任何数据的时隙为空闲时隙,可统计其数量为a0 ;接收 到16位随机数并且没有发生碰撞的时隙为单标签时隙,可统计其数量为al,时隙值依次 为FONE W] F0NE[al-l],同时可得到在这al个单标签时隙中接收的16位随机数依次为 FID
FID[al-l];接收到16位随机数并且发生碰撞的时隙为多标签时隙,可统计其数 量为a2。执行完具体实施第809步后,读写器可以得到aO的值为0、al的值为2、a2的值为 O0具体实施第810步读写器清点单标签时隙F0NE[E]。读写器发送以ZTW0[D]和FID[E]为参数的确认命令。标签接收到上述确认命令后,把自身的分组号和最近一次返回的16位随机数,分别与ZTW0[D]和FID[E]进行比较,如果比较结果均相等,则将自身的ID号返回给读写器, 并将清点标志位置1 ;反之,清点标志位不变。执行完具体实施第810步后,标签7将其清点标志位置1,其余标签清点标志位不变。具体实施第811步读写器判断是否已完成所有单标签时隙的清点。读写器判断E的值,若E小于al-Ι,设置E = E+1 ;若E等于al_l,设置E = 0。执行完具体实施第811步后,读写器得到E的值为0,al-l的值为1。于是读写器 设置E = 1。具体实施第812步读写器清点单标签时隙F0NE[E]。读写器发送以ZTW0[D]和FID[E]为参数的确认命令。标签接收到上述确认命令后,把自身的分组号和最近一次返回的16位随机数,分 别与ZTW0[D]和FID[E]进行比较,如果比较结果均相等,则将自身的ID号返回给读写器, 并将清点标志位置1 ;反之,清点标志位不变。执行完具体实施第812步后,标签8将其清点标志位置1,其余标签清点标志位不变。具体实施第813步读写器判断是否已完成所有单标签时隙的清点。读写器判断E的值,若E小于al-Ι,设置E = E+1 ;若E等于al_l,设置E = 0。执行完具体实施第813步后,读写器得到E的值为1,al-Ι的值为1,即E与al_l 相等,设置E = 0。具体实施第814步读写器判断是否已完成多标签组ZTW0[D]的清点。读写器判断a2的值是否为0,若a2大于0,设置参数L2 = 2*a2,若a2等于0,设 置 L2 = 4。执行完具体实施第814步后,读写器得到a2的值为0,即a2等于0,设置参数L2 =4。具体实施步骤9 读写器判断是否已完成所有多标签组的清点。读写器判断D的值,若D小于z2-l,设置D = D+1。执行完具体实施步骤9后,读写器得到D的值为0,z2-l的值为2,于是设置D = 1。具体实施步骤10 读写器清点多标签组ZTW0[D]。读写器清点多标签组ZTW0[D]中所有标签的步骤(包括具体实施第101步 具体 实施第107步)如下所述具体实施第101步读写器开始多标签组ZTW0[D]的清点。读写器发送以L2和ZTW0[D]为参数的查询命令。接收到上述查询命令后,分组号为ZTW0[D]并且清点标志位为0的标签在
范围内随机选择时隙值,然后按照时隙值的大小在相应时隙向读写器返回一个16位 的随机数,该16位随机数使用具有碰撞位检测能力的编码方式(如Manchester编码)进 行编码。执行完具体实施第101步后,没有标签选择时隙0,选择时隙1的为标签1,选择时 隙2的为标签6,没有标签选择时隙3,如图2所示。这四个时隙中的标签依次向读写器返回一个16位的随机数。具体实施第102步读写器统计分类所有时隙上的标签返回情况。读写器接收完所有L2个时隙上的标签返回的16位随机数后,根据返回情况对所 有时隙进行分类统计,没有接收到任何数据的时隙为空闲时隙,可统计其数量为a0 ;接收 到16位随机数并且没有发生碰撞的时隙为单标签时隙,可统计其数量为al,时隙值依次 为FONE W] F0NE[al-l],同时可得到在这al个单标签时隙中接收的16位随机数依次为 FID
FID[al-l];接收到16位随机数并且发生碰撞的时隙为多标签时隙,可统计其数 量为a2。执行完具体实施第102步后,读写器可以得到aO的值为0、al的值为2、a2的值为 O0具体实施第103步读写器清点单标签时隙F0NE[E]。读写器发送以ZTW0[D]和FID[E]为参数的确认命令。标签接收到上述确认命令后,把自身的分组号和最近一次返回的16位随机数,分 别与ZTW0[D]和FID[E]进行比较,如果比较结果均相等,则将自身的ID号返回给读写器, 并将清点标志位置1 ;反之,清点标志位不变。执行完具体实施第103步后,标签1将其清点标志位置1,其余标签清点标志位不变。具体实施第104步读写器判断是否已完成所有单标签时隙的清点。读写器判断E的值,若E小于al-Ι,设置E = E+1 ;若E等于al_l,设置E = O。执行完具体实施第104步后,读写器得到E的值为0,al-l的值为1。于是读写器 设置E = 1。具体实施第105步读写器清点单标签时隙F0NE[E]。读写器发送以ZTW0[D]和FID[E]为参数的确认命令。标签接收到上述确认命令后,把自身的分组号和最近一次返回的16位随机数,分 别与ZTW0[D]和FID[E]进行比较,如果比较结果均相等,则将自身的ID号返回给读写器, 并将清点标志位置1 ;反之,清点标志位不变。执行完具体实施第105步后,标签6将其清点标志位置1,其余标签清点标志位不变。具体实施第106步读写器判断是否已完成所有单标签时隙的清点。读写器判断E的值,若E小于al-Ι,设置E = E+1 ;若E等于al_l,设置E = O。执行完具体实施第106步后,读写器得到E的值为l,al_l的值为1。即E与al_l 相等,设置E = O。具体实施第107步读写器判断是否已完成多标签组ZTW0[D]的清点。读写器判断a2的值是否为0,若a2大于0,设置参数L2 = 2柏2,若a2等于0,设 置 L2 = 4。执行完具体实施第107步后,读写器得到a2的值为0,即a2等于0,设置L2 = 4。具体实施步骤11 读写器判断是否已完成所有多标签组的清点。读写器判断D的值,若D小于z2-l,设置D = D+1。执行完具体实施步骤11后,读写器得到D的值为1,ζ2-1的值为2,于是设置D =2。具体实施步骤12 读写器清点多标签组ZTW0[D]。读写器清点多标签组ZTW0[D]中所有标签的步骤(包括具体实施第121步 具体 实施第127步)如下所述具体实施第121步读写器开始多标签组ZTW0[D]的清点。读写器发送以L2和ZTW0[D]为参数的查询命令。接收到上述查询命令后,分组号为ZTW0[D]并且清点标志位为0的标签在
范围内随机选择时隙值,然后按照时隙值的大小在相应时隙向读写器返回一个16位 的随机数,该16位随机数使用具有碰撞位检测能力的编码方式(如Manchester编码)进 行编码。执行完具体实施第121步后,选择时隙0的为标签2,没有标签选择时隙1,选择时 隙2的为标签4,没有标签选择时隙3,如图2所示。这四个时隙中的标签依次向读写器返 回一个16位的随机数。具体实施第122步读写器统计分类所有时隙上的标签返回情况。读写器接收完所有L2个时隙上标签返回的16位随机数后,根据返回情况对所 有时隙进行分类统计,没有接收到任何数据的时隙为空闲时隙,可统计其数量为a0 ;接收 到16位随机数并且没有发生碰撞的时隙为单标签时隙,可统计其数量为al,时隙值依次 为FONE W] F0NE[al-l],同时可得到在这al个单标签时隙中接收的16位随机数依次为 FID
FID[al-l];接收到16位随机数并且发生碰撞的时隙为多标签时隙,可统计其数 量为a2。执行完具体实施第122步后,读写器可以得到aO的值为0、al的值为2、a2的值为 O0具体实施第123步读写器清点单标签时隙FONE [E]。读写器发送以ZTW0[D]和FID[E]为参数的确认命令。标签接收到上述确认命令后,把自身的分组号和最近一次返回的16位随机数,分 别与ZTW0[D]和FID[E]进行比较,如果比较结果均相等,则将自身的ID号返回给读写器, 并将清点标志位置1 ;反之,清点标志位不变。执行完具体实施第123步后,标签2将其清点标志位置1,其余标签清点标志位不变。具体实施第IM步读写器判断是否已完成所有单标签时隙的清点。读写器判断E的值,若E小于al-Ι,设置E = E+1 ;若E等于al_l,设置E = O。执行完具体实施第124步后,读写器得到E的值为0,al-Ι的值为1,于是读写器 设置E = 1。具体实施第125步读写器清点单标签时隙FONE [E]。读写器发送以ZTW0[D]和FID[E]为参数的确认命令。标签接收到上述确认命令后,把自身的分组号和最近一次返回的16位随机数,分 别与ZTW0[D]和FID[E]进行比较,如果比较结果均相等,则将自身的ID号返回给读写器, 并将清点标志位置1 ;反之,清点标志位不变。执行完具体实施第125步后,标签2将其清点标志位置1,其余标签清点标志位不变。具体实施第126步读写器判断是否已完成所有单标签时隙的清点。读写器判断E的值,若E小于al-Ι,设置E = E+1 ;若E等于al_l,设置E = 0。执行完具体实施第1 步后,读写器得到E的值为l,al_l的值为1。即E与al_l 相等,设置E = 0。具体实施第127步读写器判断是否已完成多标签组ZTW0[D]的清点。读写器判断a2的值是否为0,若a2大于0,设置参数L2 = 2柏2,若a2等于0,设 置 L2 = 4。执行完具体实施第127步后,读写器得到a2的值为0,即a2等于0,设置L2 = 4。具体实施步骤13 读写器判断是否已完成所有多标签组的清点。读写器判断D的值,若D小于z2-l,设置D = D+1。执行完具体实施步骤13后,读写器得到D的值为2,z2-l的值为2,D与z2_l相 等,具体实施方式
结束,读写器已完成了所有标签的清点。图3是本发明方法与帧时隙ALOHA算法的系统吞吐率比较图。其中,横轴为标签 数,纵轴为系统吞吐率。图中给出了帧长度依次为128、256、512时,帧时隙ALOHA算法的系 统吞吐率曲线,从图中可以看出,在帧时隙ALOHA算法中,只有帧长度与标签数量相当时, 系统吞吐率达到最大值。然而,对于本发明提出的方法,无论标签数量的多少,总能将系统 吞吐率保持在帧时隙ALOHA算法的最大值附近。
权利要求
1. 一种基于标签随机分组的动态帧时隙防碰撞方法,应用于射频识别系统中,其特征 在于,具体步骤如下所述 步骤1 初始化;读写器设置参数 Ll = 2、L2 = 4,C = 0,D = 0,E = 0 ; 步骤2 读写器复位标签清点标志位并将标签随机分组; 读写器向其作用范围内的所有标签发送参数为Ll的分组命令; 标签接收到上述分组命令后,将自身的清点标志位清零,并在
范围内随机选 择一个整数作为其分组号,分组号相同的标签为一组;然后,按照分组号对应的数值由小到 大的顺序,各分组中的标签依次向读写器返回一个16位的随机数,该16位随机数使用具有 碰撞位检测能力的编码方式进行编码; 步骤3 读写器获取标签分组信息;读写器接收完所有分组中标签返回的16位随机数后,根据接收情况对所有分组 进行分类统计没有接收到任何数据的分组为空闲组,设其数量为zO,分组号依次为 ZIDLE
ZIDLE[zO-l];接收到16位随机数并且没有发生碰撞的分组为单标签组,设其 数量为zl,分组号依次为Ζ0ΝΕ
Z0NE[zl-l],同时设在这zl个单标签组中接收的16 位随机数依次为ZID
ZID[zl-l];接收到16位随机数并且发生碰撞的分组为多标签 组,设其数量为z2,分组号依次为ZTWO
ZTWO [z2-l];读写器判断zl是否为0,如果不为0,跳到步骤4 ;如果为0,将分组命令参数设置为Ll =Ll*2,返回步骤2 ;步骤4:读写器清点单标签组;读写器发送把ZONE [C]和ZID [C]作为参数的确认命令;标签接收到上述确认命令后,把自身的分组号和最近一次返回的16位随机数,分别与 ZONE[C]和ZID[C]进行比较如果比较结果均相等,则将自身的ID号返回给读写器,并将 清点标志位置1 ;反之,清点标志位不变;步骤5 读写器判断是否已完成所有单标签组的清点;读写器判断C的值若C小于zl-1,设置C = C+1,返回步骤4 ;若C等于zl-1,跳到步 骤6 ;步骤6:读写器清点多标签组;读写器清点多标签组ZTW0[D]中所有标签的步骤如下所述 第1步读写器开始多标签组ZTW0[D]的清点; 读写器发送以L2和ZTW0[D]为参数的查询命令;接收到上述查询命令后,分组号为ZTW0[D]并且清点标志位为0的标签在W,L2-1]范 围内随机选择时隙值,然后按照时隙值的大小在相应时隙向读写器返回一个16位的随机 数,该16位随机数使用具有碰撞位检测能力的编码方式进行编码; 第2步读写器统计分类所有时隙上的标签返回情况;读写器接收完所有L2个时隙上标签返回的16位随机数后,根据返回情况对所有时 隙进行分类统计没有接收到任何数据的时隙为空闲时隙,设其数量为a0 ;接收到16位 随机数并且没有发生碰撞的时隙为单标签时隙,设其数量为al,时隙值依次为F0NE
F0NE[al-l],同时得到在这al个单标签时隙中接收的16位随机数依次为FID
FID[al-l];接收到16位随机数并且发生碰撞的时隙为多标签时隙,设其数量为a2 ; 第3步读写器清点单标签时隙FONE [E]; 读写器发送以ZTW0[D]和FID[E]为参数的确认命令;标签接收到上述确认命令后,把自身的分组号和最近一次返回的16位随机数,分别与 ZTW0[D]和FID[E]进行比较如果比较结果均相等,则将自身的ID号返回给读写器,并将 清点标志位置1 ;反之,清点标志位不变;第4步读写器判断是否已完成所有单标签时隙的清点;读写器判断E的值若E小于al-Ι,设置E = E+1,返回第3步;若E等于al_l,设置E =0,跳到第5步;第5步读写器判断是否已完成多标签组ZTW0[D]的清点;读写器判断a2的值若a2大于0,设置参数L2 = 2*a2,返回第1步;若a2等于0,设 置L2 = 4,跳到步骤7;步骤7 读写器判断是否已完成所有多标签组的清点;读写器判断D的值若D小于z2-l,设置D = D+1,返回步骤6 ;若D等于z2_l,步骤7结束。
2.根据权利要求1所述的基于标签随机分组的动态帧时隙防碰撞方法,其特征在于, 具有碰撞位检测能力的编码方式是Manchester编码方式。
全文摘要
本发明提供一种基于标签随机分组的动态帧时隙防碰撞方法,应用于射频识别系统中,具体步骤如下所述步骤1初始化;步骤2读写器复位标签清点标志位并将标签随机分组;步骤3读写器获取标签分组信息;步骤4读写器清点单标签组;步骤5读写器判断是否已完成所有单标签组的清点;步骤6读写器清点多标签组;步骤7读写器判断是否已完成所有多标签组的清点。本发明有益效果是可避免射频识别系统中标签数量估计不准确的问题,在读写器和标签的通信中将系统吞吐率保持在较高值。
文档编号G06K17/00GK102073890SQ201110021558
公开日2011年5月25日 申请日期2011年1月19日 优先权日2011年1月19日
发明者任天鹏, 庄钊文, 李建成, 杨青, 王宏义, 许拔, 谷晓忱 申请人:中国人民解放军国防科学技术大学