主权项 |
用于RFID系统的标签识别防碰撞方法,其特征在于包括如下步骤:(1)阅读器初始化系统,所有标签都处于活动状态,所述标签的识别码ID为qL‑1...q1q0,其中,qL‑1,...,q1,q0的每位取0或者1,L为ID长度;(2)阅读器发出标签识别请求,所有标签返回整个识别码,阅读器接收返回数据,记录其中碰撞位的位置和保存没有发生碰撞的位数据;(3)阅读器预先确定请求碰撞位长度l,执行查询循环II,获取请求前缀;查询循环II:结合步骤(2)中的碰撞位的位置信息,阅读器向标签发送请求的碰撞位位置Req[qL‑1...q1q0],若第i位是所要请求的碰撞位位置,则qi=1,否则qi=0,其中0≤i≤L‑1;阅读器请求的碰撞位长度为l,由此得到标签返回的二进制数的长度N=2l,标签返回二进制码qN‑1...q1q0,其中,标签根据阅读器发送的请求碰撞位位置,从自身识别码ID中获取相应位置上的l位二进制数,并转化为十进制数j,则取qj=1,而其余N‑1位均为0,其中0≤j≤N‑1;当阅读器要获取碰撞位长度为l的请求前缀qL‑1...qi+1qi,就需要知道l个碰撞位的值;执行查询循环II,接收返回数据qN‑1...q1q0:若qj发生碰撞,将j转化为l位二进制码,结合步骤(2)中没有发生碰撞的位数据信息,可获取请求前缀,并压入堆栈中;(4)阅读器从堆栈中弹出一个请求前缀qL‑1...qi+1qi,并执行查询循环I:请求前缀Req(qL‑1...qi+1qi),阅读器发出带有前缀qL‑1...qi+1qi的请求,标签检查自身ID的前L‑i位是否与阅读器发出的前缀相同,若是,则返回识别码的剩余位qi‑1...q1q0,若不是,则不回应;如果没有发生碰撞,则可以识别一个标签;如果发生碰撞且碰撞位中的最高位为k,则将qL‑1...qk+10和qL‑1...qk+11压入堆栈中,0≤k<i,0≤i≤L‑1;(5)当堆栈不为空时,执行步骤(4),当堆栈为空时,识别完所有标签。 |