首先,读写器发送查询前缀0,标签0010和0100响应,发生碰撞,将0送入堆栈S;添加左子节电00和右子节点01,将01送入堆栈S,以00作为新的查询前缀。读写器发送查询前缀00,此时只有标签0010响应,将查询前缀00送入队列Q;此标签被成功识别,与读写器通信完毕后,进入“无声”状态。从堆栈S中弹出01,作为新的查询前缀,此时只有标签0100响应,将查询前缀01送入队列Q;此标签被成功识别。
然后再从堆栈S中弹出0,作为新的查询前缀,此时无标签响应,因此读写器以1为查询前缀。标签1010和1101响应,发生了碰撞,将1送入堆栈S;添加左子节点10和右子节点11,将11送入堆栈S,以10作为新的查询前缀。读写器发送查询前缀10,此时只有标签1010响应,将查询前缀10送入队列Q;此标签被成功识别。从堆栈S中弹出11,作为新的查询前缀,此时只有标签1101响应,将查询前缀11送入队列Q;此标签被成功识别。
最后从标签中弹出1,作为新的查询前缀,无标签响应,结束识别流程。
如上所述,通过表1中所列的首轮识别后,队列Q中的查询前缀为[00,01,10,11]。当读写器再次需要识别其作用范围内的标签时,就可直接发送队列Q中的查询前缀,这样,标签能够被快速地识别出来。
5 各种算法的Matlab仿真
下面采用Matlab下仿真系统通信量的方法来比较各个算法的效率。在识别相同标签属的前提下占用的比特数越高,则说明其通信量越大,对系统要求越高。
图3和图4均是在标签长度L=8的情况下所进行的仿真结果,其中图3在识别100个标签时,二进制搜索算法通信量约为7 500 b,动态二进制搜索算法通信量约为4 300 b;图4则在识别100个标签时,查询树算法在通信量约为1 3 600 b,改进型算法通信量约为2 100 b情况下的仿真结果。
依据在标签长度为8 b时所仿真出的图3和图4所示的通信量数据,可以采用相同的仿真方法较容易地得出各种防碰撞方法在不同标签长度下的通信量数据,综合总结如表2所列。
6 结语
本文通过对RFID中各种主流防碰撞方法的思想、实现及算法的研究,提出了相应的改进型算法,并对算法进行了详细的说明。之后,对所有算法的实现进行了Matlab仿真,证实了改进型算法相较其他算法的优越性。仿真证明,在标签长度较短的情况下,该算法可以表现出极其优越的性能。但是,该算法亦有它的不足,在单个标签长度较长的情况下,该算法的通信量急剧上升。所以,在算法的通信冗余度方面还有进一步优化的必要。
本文关键字:技术 射频技术-RFID,通信技术 - 射频技术-RFID