发明内容
本发明的目的是针对现有技术的不足,提供一种RFID识别算法及景区多人并行入园智能识别防碰撞的应用。
RFID识别算法的具体步骤为:
读写器命令组:
请求命令——Order(code)
选择命令——Choose(code)
读取命令——Read(code)
通过命令——Pass(code)
(1)初始状态:
令:读写器识别场区内共有待识别标签n个,每个标签共有比特位m个,且比特位等级由低到高分别为D1......Dm。读写器的初始命令集合为:L={l1,l2......lm},待识别标签集合T={A1,A2,A3......An}。其中,标签存储的编码集合分别为:
A1={a11,a12,a13......a1m}
A2={a21,a22,a23......a2m}
Μ
Μ
An={an1,an2,an3......anm}
(2)读写器向场区内发送请求命令Order(L0={1,1,1......1}),场区内所有标签响应并返回各自编码,读写器接受到编码并判断是否有编码碰撞发生,若无碰撞发送,则识别出唯一标签,读写器发送Choose(code)命令选择标签,再发送Read(code)命令读取标签编码,确认标签编码后,读写器发送Pass(code)命令允许该标签通过;若发生碰撞,则读写器判别编码碰撞的比特位。依据碰撞发生的位置,读写器在生成新命令L1的时候将产生碰撞的比特位编码置为“1”,未发生碰撞的比特位编码置为“0”,令发生碰撞的最高比特位为Dp,则读写器要求Dp位编码为“0”的标签返回低于Dp位的所有编码。
则新命令:(其中1<q<r<m).........父节点①
响应标签集合(其中1<e<f<g<n)
响应标签编码集合:
Μ
(3)读写器接受到响应标签返回的编码并判断是否有碰撞发生:若无碰撞发生则直接识别出唯一标签;若发生碰撞则读写器在生成新命令Order(L2)的时候将产生碰撞的比特位编码置为“1”,未发生碰撞的比特位编码置为“0”,令发生碰撞的最高比特位为Dq,读写器要求Dq位编码为“0”的标签返回低于Dq位的所有编码。
则新命令:(其中q<r<s<m).........父节点②
响应标签集合(其中f<h<i<j<g)
响应标签编码集合:
Μ
(4)读写器接受到响应标签编码并判别是否产生碰撞
i若此时无碰撞发生,读写器发送Choose(code)命令选择标签Ak,并发送读取命令Read(code)读取标签编码,确认编码信息后,读写器发送Pass(code)命令使得标签Ak通过,同时Ak从标签集合T中去除。
ii若此时只有一位比特位发生碰撞,由一位碰撞的特性可知,此时碰撞标签有且仅有2个,且这2个标签编码只是碰撞位不同,令标签分别为Ai,Aj,依据非“0”即“1”的二进制编码规则,读写器先发送选择命令Order(code)要求碰撞位为“0”的标签返回编码,接受到返回信息后,读写器发送Read(code)命令读取标签Ai的编码,确认编码后读写器发送Pass(code)命令允许标签通过,并从集合T中删除标签Ai,此即识别出一个标签;同理识别出碰撞位为“1”的标签Aj。从而读写器识别出2个碰撞标签并允许Ai,Aj通过。
(5)当读写器识别出标签后,返回上一父节点②处对余下标签进行识别。新命令规则:令碰撞发生比特位“1”,未碰撞比特位为“0”。同时读写器要求在上一父节点②中碰撞比特位Dq为“1”的标签返回低于Dq的编码。
则新命令(其中s<u<v<m)............父节点③
响应标签集合(其中1<x<y<z<n)
响应标签编码集合:
Μ
读写接收到响应标签编码并判断是否有碰撞发生:
i若此时无碰撞发生,则读写器能直接识别出唯一标签并允许该标签通过。
ii若此时发生一位碰撞,则读写器能分别识别出2个标签并允许标签通过。
iii若此时发生多位碰撞,则递归调用步骤(2)。
RFID识别算法应用于景区游客多人并行入园智能识别防碰撞。
本发明优点是:通过一种多人并行智能识别防碰撞算法解决RFID系统中防碰撞问题,实现在最短时间内识别其作用范围的所有标签。该算法通过分段传输有效碰撞编码,大大提高了读写器与标签间信息传输效率,从而实现在最短时间内识别其作用范围的所有标签。
实施例:
本发明实施例设定标签编码为8位,应用于景区游客多人并行入园智能识别防碰撞。
步骤一:读写器发送Order(11111111)命令,场区内所有小于等于该命令编码的标签应答。
步骤二:读写器检测接收的信号,如果没有检测到信号则认为射频场区内无标签,回到步骤一。如果有信号则转至步骤三。
步骤三:读写器利用曼彻斯特译码原理对响应的电子标签序列号信息进行译码,同时判断是否有比特位碰撞发生,并确认碰撞发生的具体比特位,转入步骤四。如果没有碰撞发生,则有且仅有一个标签响应,此时由读写器向该标签发送Choose(code)命令,在确认选择后读写器发送Read(code)命令,对响应的标签进行读写,完成读写后发送Pass(code)命令给标签,允许该标签通过。
步骤四:根据步骤三读写器得到具体的碰撞比特位,并将发生碰撞的比特位设置为“1”,没有发生碰撞的比特位设置为“0”,从而产生下一个读写器发送的指令Order(code,0)中code的参数。读写器发送得到的Order(code,0)命令,标签在接收到指令后将code与自己的编码进行比较,锁定比特位为“1”的比特值,并将其保存。同时要求最高比特位为“0”的标签响应这个命令,并回复除最高位以外的所有其他碰撞位。而后利用二进制防碰撞算法的原理逐步缩小标签应答范围直至识别标签或出现一位碰撞。当出现一位碰撞时,转步骤六。当识别一个标签时,读写器将完成步骤三中最后的读写周期,分别发送Choose(code)命令、Read(code)命令和Pass(code)命令。而后回到父节点,进行下一个分支的识别。循环往复以上操作直到最高位为“0”的标签分支不存在未识别的标签,转到步骤五。
步骤五:读写器发送Order(code,1)命令,该指令仅针对之前锁定位置最高位为“1”的标签,这些标签在收到指令之后将自己除最高位以外的剩余几位碰撞位发送给读写器。而后利用二进制防碰撞算法的原理逐步缩小应答范围直至识别标签或出现一位碰撞。当出现一位碰撞时,转到步骤六。在识别到唯一标签时,读写器在此进入读取环节发送选择、读取、和通过命令。而后回到父节点,进行下一个分支的识别。通过以上操作直至碰撞最高位为“1”的分支内所有标签均被识别,转步骤七。
步骤六:当产生一位碰撞时,根据非“0”即“1”的原则识别两个标签,读写器首先对碰撞位为“1”的标签进行读取环节的操作即选中、读取和通过,而后读写器对碰撞位为“0”的标签进行同样的读取环节。以此分别读取这两个标签序列号。
步骤七:直至没有电子标签未被识别出来,识别过程结束。
算法具体实例实现:
假设读写器场区范围内有ID分别为00110110、01010001、01100101、01111010、10001000、10100111、10111001、11100110、11100111、11111001的十个标签A、B、C、D存在。
开始:射频场区内所有标签对于读写器来说处于未知状态,所以读写器发送Order(11111111)命令,要求场区内所有标签应答。
第1步:读写器发送Order(11111111),标签同时应答,读写器根据曼彻斯特编码原理,解码得到XXXXXXXX(此处用大写字母X表示解码结果,X代表未识别比特位值,下同)。由此得到下一个请求命令Order(11111111,0)。
第2步:读写器发送Order(1111111,0)命令,标签1、2、3、4分别将自己编码与01111111比对,解码得到XXXXXXXX,读写器更新命令Order(111111,00)。
第3步:读写器发送命令Order(111111,00),标签1响应,此时读写器判断无碰撞发生,识别唯一标签。
第4步:读写器发送Read命令,读取标签1中的编码,标签1接收命令返回自己的编码。
第5步:读写器接收到标签编码后对编码进行核对,核对正确后发送Pass命令,允许标签1通过。
第6步:读写器返回上一节点,发送新命令Order(111111,01),标签2,3,4响应,解码得到XXXXXX,读写器更新命令Order(11111,010)。
第7步:读写器发送命令Order(11111.010),此时标签2响应,读写器判断无碰撞发生,识别出唯一标签。
第8步:读写器发送Read命令,读取标签2中的编码,标签2接收命令返回自己的编码。
第9步:读写器接收到标签编码后对编码进行核对,核对正确后发送Pass命令,允许标签2通过。
第10步:读写器返回上一节点,发送新命令Order(11111,011),标签3,4响应,解码得到XXXXX,读写器更新命令Order(1111,0110)。
第11步:读写器发送命令Order(1111,0110),标签3响应。读写器判断无碰撞发生,识别出唯一标签。
第12步:读写器发送Read命令,读取标签3中的编码,标签3接收命令返回自己的编码。
第13步:读写器接收到标签编码后对编码进行核对,核对正确后发Pass送命令,允许标签3通过。
第14步:读写器返回上一节点,发送新命令Order(11111,0111),标签4响应,读写器判断无碰撞发生,识别出唯一标签。
第15步:读写器发送Read命令,读取标签4中的编码,标签4接收命令返回自己的编码。
第16步:读写器接收到标签编码后对编码进行核对,核对正确后发送Pass命令,允许标签4通过。
第17步:当第一父节点“0”分支的标签识别完毕后,读写器回到第一父节点,发送新命令Order(1111111,1)。
第18步:读写器发生Order(1111111,1),标签5,6,7,8,9,10响应。解码得到XXXXXXX,读写器更新命令Order(111111,10)。
第19步:读写器发送命令Order(111111,10),标签5,6,7响应。读写器解码得到XXXXXX,读写器更新命令Order(11111,100)。
第20步:读写器发送命令Order(11111,100),标签5响应。读写器判断无碰撞发生,识别出唯一标签。
第21步:读写器发送Read命令,读取标签5中的编码,标签5接收命令返回自己的编码。第22步:读写器接收到标签编码后对编码进行核对,核对正确后发Pass送命令,允许标签5通过。
第23步:读写器返回上一节点,发送新命令Order(11111,101),标签6,7响应,解码得到XXXX1,读写器判断碰撞发生,更新命令Order(1111,1010)。
第24步:读写器发生命令Order(1111,1010),标签6响应,读写器判断无碰撞发生,识别出唯一标签。
第25步:读写器发送Read命令,读取标签6中的编码,标签6接收命令返回自己的编码。
第26步:读写器接收到标签编码后对编码进行核对,核对正确后发Pass送命令,允许标签6通过。
第26步:读写器返回上一节点,发送新命令Order(1111,1011),标签7响应,读写器判断无碰撞发生,识别出唯一标签。
第27步:读写器发送Read命令,读取标签7中的编码,标签7接收命令返回自己的编码。
第28步:读写器接收到标签编码后对编码进行核对,核对正确后发Pass送命令,允许标签7通过。
第29步:读写器返回到第二父节点处,更新命令Order(111111,11),标签8,9,10响应。解码得到1XXXXXX。读写器判断碰撞发生,更新命令Order(1111,1110)。
第30步:读写器发送命令Ordeer(1111,1110),标签8,9响应,读写器判断碰撞发生,解码得到011X。此时发生一位碰撞,则读写器直接发送命令Order(11100110)。
第31步:读写器发送命令Oder(11100110)标签8响应,读写器发送Read命令,标签返回编码,读写器确定编码后发送Pass命令,标签8通过。
第32步:读写器发送命令Oder(11100111)标签9响应,读写器发送Read命令,标签返回编码,读写器确定编码后发送Pass命令,标签9通过。
第33步:读写器返回上一节点,发送命令Order(1111,1111),标签10响应。读写器判断无碰撞发生,识别出唯一标签。
第34步:读写器发送Read命令,读取标签7中的编码,标签7接收命令返回自己的编码。
第35步:读写器接收到标签编码后对编码进行核对,核对正确后发Pass送命令,允许标签7通过。
第36步:读写器更新命令Order(11111111),场区内无标签响应,则判定无待识别标签。
表1:算法示例表