一种多标签识别的方法与装置
技术领域
本发明涉及射频通信技术领域,具体是一种应用于射频识别系统中,解决多标签之间发生通信碰撞的系统及其方法。
背景技术
射频识别(Radio Frequency Identification, RFID)通信技术是一种非接触式的自动识别技术。在射频识别系统中,读写器通过射频信号与若干标签进行通信,并获取每个标签上存储的识别信息。
射频识别系统与其他典型的射频通信系统所面临的一个共同问题是:需要解决在同一个系统中多个设备之间同时通信的碰撞问题。对于射频识别系统来说,主要解决单个读写器与多个标签之间通信的碰撞问题。并且限于成本和功耗的因素,标签只能够提供极为有限的功能用于实现防碰撞机制。目前多标签的防碰撞方法主要分为时隙ALOHA方法和二叉树方法两大类。
时隙ALOHA方法是把时间分成若干离散时隙,要求标签随机选择其中一个时隙,在时隙的分界处发送数据。在国际标准ISO18000-6A和ISO18000-6C中均采用时隙ALOHA方法。
二叉树方法的基本思想是将标签分裂成子集0和子集1两个子集。先查询子集0,若没有碰撞,则正确识别标签,若有碰撞则再分裂,把子集0分为子集00和子集01两个子集,依次类推,直到识别出子集0中的所有标签。然后再按此步骤查询子集1。在国际标准ISO18000-6B中采用基本二叉树方法。
二叉树方法总是首先致力于解决0分支的碰撞,让其分裂,直到0分支的标签全部识别完成再开始识别其他的标签。在0分支进行分裂时,非0分支的标签始终不分裂,一直处于等待状态。事实上,在0分支的标签进行分裂的同时,其他标签也可以根据0分支标签的碰撞程度进行适当的散列操作,这样,当0分支的标签识别完成后,其他分支的标签已经得到充分的散列,从而能够减少再次进行分裂的次数,提高系统的吞吐率。
发明内容
本发明的目的在于克服现有技术的不足,提供一种多标签识别的方法与装置,提高防碰撞方法的吞吐率。
为解决上述技术问题,本发明所采用的技术方案为:一种多标签识别的方法,该方法为:
步骤1:读写器初始化防碰撞方法参数,包括连续碰撞次数阈值CCN和连续空闲次数阈值CIN。推荐取CCN=3,CIN=4。
步骤2:读写器发送启动查询命令,然后在规定的时隙等待标签发送响应数据包。
标签接收到启动查询命令后,产生一位随机数载入标签的时隙计数器。如果随机数为0,标签向读写器发送响应数据包,响应数据包中包含标签的唯一识别号,如果随机数不为0,标签不向读写器发送响应数据包。
步骤3:如果读写器在规定的时隙接收到标签的响应数据包,跳到步骤4;如果读写器在规定时隙没有接收到标签的响应数据包,跳到步骤7。
步骤4:如果读写器接收到标签的响应数据包并且判断没有发生数据碰撞,跳到步骤5;如果读写器接收到标签的响应数据包并且判断发生数据碰撞,跳到步骤6。
步骤5:读写器完成对未发生碰撞的标签的识别,该标签离开盘存过程,不再响应此后的读写器命令。如果读写器需要继续盘点,读写器发送重复查询命令,然后在规定的时隙等待标签发送响应数据包;如果读写器不需要继续盘点,读写器停止发送命令,盘点结束。
标签接收到重复查询命令后,时隙计数器的值减1。
如果调整后标签的时隙计数器的值为0,标签向读写器发送响应数据包,响应数据包中包含标签的唯一识别号,如果调整后标签的时隙计数器的值不为0,标签不向读写器发送响应数据包。
如果读写器在规定的时隙接收到标签的响应数据包,跳到步骤4;如果读写器在规定时隙没有接收到标签的响应数据包,跳到步骤7。
步骤6:如果读写器连续CCN次接收到发生碰撞的响应数据包,读写器发送分散命令,然后在规定的时隙等待标签发送响应数据包;否则,读写器发送分裂参数为0的分裂命令,然后在规定的时隙等待标签发送响应数据包。
标签接收到分散命令后,标签产生一位随机数,计算时隙计数器值的2倍再加上该随机数,将计算结果载入标签的时隙计数器。
标签接收到分裂参数为0的分裂命令后,时隙计数器的值为0的标签产生一位随机数载入标签的时隙计数器;时隙计数器的值不为0的标签将自身的时隙计数器的值加1。
如果调整后标签的时隙计数器的值为0,标签向读写器发送响应数据包,响应数据包中包含标签的唯一识别号,如果调整后标签的时隙计数器的值不为0,标签不向读写器发送响应数据包。
如果读写器在规定的时隙接收到标签的响应数据包,跳到步骤4;如果读写器在规定时隙没有接收到标签的响应数据包,跳到步骤7。
步骤7:如果读写器连续CIN次没有接收到标签的响应数据包,读写器发送收缩命令。否则,读写器判断前一次发送的命令是否为分裂参数为0的分裂命令:如果是,读写器发送分裂参数为1的分裂命令,如果不是,读写器发送重复查询命令,然后在规定的时隙等待标签发送响应数据包。
标签接收到收缩命令后,时隙计数器的值更新为原计数器值的0.5倍,如果原计数器值是奇数,舍弃小数部分。
标签接收到分裂参数为1的分裂命令后,时隙计数器的值为1的标签重新产生一位随机数载入时隙计数器,时隙计数器的值不为1的标签的时隙计数器的值保持不变。
标签接收到重复查询命令后,时隙计数器的值减1。
如果调整后标签的时隙计数器的值为0,标签向读写器发送响应数据包,响应数据包中包含标签的唯一识别号,如果调整后标签的时隙计数器的值不为0,标签不向读写器发送响应数据包。
根据上述多标签识别方法的装置,包括一个读写器和多个标签,读写器和各个标签之间采用无线连接方式,读写器由射频接收模块、基带处理模块和射频发送模块依次连接构成,每个标签包括射频收发模块、基带处理模块、时隙计数器、随机数发生器和存储区,射频收发模块和基带处理模块双向连接,时隙计数器、存储区与基带处理模块双向连接,随机数发生器与基带处理模块连接。
读写器发送命令给标签,然后根据标签返回响应数据包的情况对标签进行动态散列,有四种散列的方式:
散列方式一:读写器发送分裂参数为0的分裂命令,标签时隙计数器的值为0的标签重新生成一位随机数,其它标签的时隙计数器的值加1;
散列方式二:读写器发送分裂参数为1的分裂命令,时隙计数器的值为1的标签重新生成一位随机数,其它标签的时隙计数器的值不变;
散列方式三:读写器发送分散命令,所有标签的时隙计数器的值乘以2加上一位随机数;
散列方式四:读写器发送收缩命令,是所有标签的时隙计数器的值除以2后取整。
本发明的有益效果是:在对0分支标签进行搜索的同时,可根据0分支标签连续碰撞的程度,动态调整标签的散列程度,从而提高防碰撞方法的吞吐率;在对0分支标签进行搜索的同时,可根据0分支标签连续空闲的程度,动态调整标签的散列程度,从而提高防碰撞方法的吞吐率;本方法能够动态调整标签的散列程度,无论标签数量的多少,该方法都能将系统的吞吐率保持在较高水平。
附图说明
图1是本发明提出的改进的二叉树防碰撞方法的流程示意图;
图2是利用本发明具体实施例得到的标签时隙计数器的值;
图3是利用本发明具体实施例得到的标签时隙计数器的值;
图4是利用本发明具体实施例得到的标签时隙计数器的值;
图5是利用本发明具体实施例得到的标签时隙计数器的值;
图6是利用本发明具体实施例得到的标签时隙计数器的值;
图7是本发明与基本二叉树方法在标签数量变化时的性能仿真结果比较;
图8是本发明多标签识别装置结构图。
具体实施方式
本发明的一个具体实施例如下。
使用Matlab进行仿真,8个标签,编号从标签1到标签8。
步骤1:读写器初始化防碰撞方法参数,包括连续碰撞次数阈值CCN和连续空闲次数阈值CIN。本例中取CCN=3,CIN=4。
步骤2:读写器发送启动查询命令,然后在规定的时隙等待标签发送响应数据包。
标签接收到启动查询命令后,产生一位随机数载入标签的时隙计数器。图2给出了8个标签的时隙计数器的值,8个标签的时隙计数器的值分别为1、0、0、1、0、0、1、1。
步骤3:如果读写器在规定的时隙接收到标签的响应数据包,跳到步骤4;如果读写器在规定时隙没有接收到标签的响应数据包,跳到步骤7。
本例中标签接收到启动查询命令后标签2、标签3、标签5和标签6都向读写器发送响应数据包,因此跳到步骤4。
步骤4:如果读写器接收到标签的响应数据包并且判断没有发生数据碰撞,跳到步骤5;如果读写器接收到标签的响应数据包并且判断发生数据碰撞,跳到步骤6。
本例中第一次执行到该步骤时,标签2、标签3、标签5和标签6都向读写器发送响应数据包,因此会发生数据碰撞,跳到步骤6。
本例中第二次执行到该步骤时,只有标签3向读写器发送响应数据包,因此不会发生数据碰撞,跳到步骤5。
本例中第三次执行到该步骤时,标签2、标签5和标签6向读写器发送响应数据包,因此会发生数据碰撞,跳到步骤6。
本例中第四次执行到该步骤时,标签5和标签6向读写器发送响应数据包,因此会发生数据碰撞,跳到步骤6。
步骤5:读写器完成对未发生碰撞的标签的识别,该标签离开盘存过程,不再响应此后的读写器命令。如果读写器需要继续盘点,读写器发送重复查询命令,然后在规定的时隙等待标签发送响应数据包;如果读写器不需要继续盘点,读写器停止发送命令,盘点结束。
本例中第一次执行到该步骤时,标签3得到识别,标签3离开盘存过程,不再响应此后的读写器命令。读写器发送重复查询命令,标签接收到重复查询命令后时隙计数器的值减1,图4给出了调整后的时隙计数器的值,标签1、标签2、标签4、标签5、标签6、标签7和标签8的时隙计数器的值分别为1、0、1、0、0、1、1。这时标签2、标签5和标签6向读写器发送响应数据包,跳到步骤4。
步骤6:如果读写器连续CCN次接收到发生碰撞的响应数据包,读写器发送分散命令,然后在规定的时隙等待标签发送响应数据包;否则,读写器发送分裂参数为0的分裂命令,然后在规定的时隙等待标签发送响应数据包。
本例中第一次执行到该步骤时,读写器发送分裂参数为0的分裂命令,这时标签2、标签3、标签5和标签6重新产生一位随机数载入标签时隙计数器,标签1、标签4、标签7和标签8的时隙计数器的值加1。图3给出调整后的时隙计数器的值,8个标签的时隙计数器的值分别为2、1、0、2、1、1、2、2。由于只有标签3的时隙计数器的值为0,因此标签3向读写器发送响应数据包,跳到步骤4。
本例中第二次执行到该步骤时,读写器发送分裂参数为0的分裂命令,这时标签2、标签5和标签6重新产生一位随机数载入标签时隙计数器,标签1、标签4、标签7和标签8的时隙计数器的值加1。图5给出调整后的时隙计数器的值,标签1、标签2、标签4、标签5、标签6、标签7和标签8的时隙计数器的值分别为2、1、2、0、0、2、2。这时标签5和标签6向读写器发送响应数据包,跳到步骤4。
本例中第三次执行到该步骤时,读写器发送分裂参数为0的分裂命令,这时标签5和标签6重新产生一位随机数载入标签时隙计数器,标签1、标签2、标签4、标签7和标签8的时隙计数器的值加1。图6给出调整后的时隙计数器的值,标签1、标签2、标签4、标签5、标签6、标签7和标签8的时隙计数器的值分别为3、2、3、1、0、3、3。这时只有标签6向读写器发送响应数据包,跳到步骤4。
步骤7:如果读写器连续CIN次没有接收到标签的响应数据包,读写器发送收缩命令。否则,读写器判断前一次发送的命令是否为分裂参数为0的分裂命令:如果是,读写器发送分裂参数为1的分裂命令,如果不是,读写器发送重复查询命令,然后在规定的时隙等待标签发送响应数据包。
图7是基本二叉树方法和本发明在标签数量变化时方法吞吐率的比较。图中横坐标是标签的数量,纵坐标是方法的吞吐率。曲线701是基本二叉树方法的吞吐率变化曲线,曲线702是本发明的吞吐率的变化曲线。可以看出,本发明提出的方法优于基本二叉树方法。