发明名称 基于CDMA的大规模RFID防碰撞方法
摘要 本发明提出了一种基于CDMA的RFID防碰撞方法,该方法首先将所有的标签进行调整分组,然后以递归的方式将碰撞的标签分组,为标碰撞标签选择码片,然后将标签数据用正交码扩频后发送出去,并在阅读器端用相同码片进行解扩,最后对读取标签进行重复和遗漏的核查,该方法可以同时识别多个标签,解决了现有的基于ALOHA算法和二进制算法方案的不足。
申请公布号 CN103605949A 申请公布日期 2014.02.26
申请号 CN201310660188.8 申请日期 2013.12.09
申请人 武汉大学 发明人 黄传河;王晶;凌超
分类号 G06K7/00(2006.01)I;G06K17/00(2006.01)I 主分类号 G06K7/00(2006.01)I
代理机构 武汉科皓知识产权代理事务所(特殊普通合伙) 42222 代理人 张火春
主权项 1.一种基于CDMA的RFID防碰撞方法,其特征在于,包括下述步骤:步骤1,将所有标签进行调整分组,步骤1包括以下步骤,步骤1.1,标签向阅读器发送会话请求消息(HELLO),步骤1.2,系统默认最大分组数为G,阅读器根据收到会话请求消息(HELLO)的信号强度初始化本次会话分组数K,K&lt;=G,或者直接采用本次会话分组数K的预设数值,阅读器向标签广播分组命令(GROUP,K),让标签分为K组;步骤1.3,标签收到分组命令后随机选择该标签的分组序列低K位中的一位并置为1,其余为0,该序列称之为分组序列信息(POSION);步骤1.4,标签将分组序列信息(POSION)发送回阅读器,阅读器在收到的所有标签分组序列信息(POSION)后根据碰撞位生成合成分组序列;阅读器收到所有标签的分组序列信息(POSION)后,对所有为1的位置进行整合;步骤1.5,阅读器选取待通信的M个分组,循环向标签发送允许通信命令(ADJUST,S_POSION),其中序列(S_POSION)为选定分组的分组序列信息(POSION),长度为K,仅有一位为1,序列(S_POSION)与标签内保存的分组序列信息(POSION)结构一致,标签收到该命令后,检查是否与自己的分组序列信息(POSION)一致,若一致,则将数据扩频后发送出去,否则,不响应;步骤1.6,阅读器统计这M个分组的碰撞率P(x≥2),只要有1组的标签碰撞率P(x≥2)大于阈值P(x≥2|n=N),P(x≥2|n=N)为当n=N时计算所得的碰撞概率,则将K的值扩大为k×K后,从新分组,发送分组(GROUP,K)命令,回到步骤1.3;否则,分组成功进入步骤2;其中,假设有N个正交码片,每组内能容纳的最大标签个数为N,设组内实际标签数为n,设标签选择任一码片的概率是相等的,即p=1/N,每个标签对码片的选择是相互独立的,在一个组内一个码片没有被任何标签选中的概率如下:<maths num="0001"><![CDATA[<math><mrow><mi>P</mi><mrow><mo>(</mo><mi>x</mi><mo>=</mo><mn>0</mn><mo>)</mo></mrow><mo>=</mo><mfrac><msup><mrow><mo>(</mo><mi>N</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mi>n</mi></msup><msup><mi>N</mi><mi>n</mi></msup></mfrac></mrow></math>]]></maths>x代表选中该码片的标签数量,一个码片仅被一个标签选中的概率如下,<maths num="0002"><![CDATA[<math><mrow><mi>P</mi><mrow><mo>(</mo><mi>x</mi><mo>=</mo><mn>1</mn><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><msubsup><mi>C</mi><mi>n</mi><mn>1</mn></msubsup><msup><mrow><mo>(</mo><mi>N</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msup></mrow><msup><mi>N</mi><mi>n</mi></msup></mfrac><mo>=</mo><mfrac><mrow><mi>n</mi><msup><mrow><mo>(</mo><mi>N</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msup></mrow><msup><mi>N</mi><mi>n</mi></msup></mfrac></mrow></math>]]></maths>其中,<img file="FDA0000433266140000021.GIF" wi="72" he="80" />表示从n个标签数中随机选择一个标签,当有两个或两个以上标签选中同一码片时则发生碰撞,其概率如下,<maths num="0003"><![CDATA[<math><mrow><mi>P</mi><mrow><mo>(</mo><mi>x</mi><mo>&GreaterEqual;</mo><mn>2</mn><mo>)</mo></mrow><mo>=</mo><mn>1</mn><mo>-</mo><mo>[</mo><mfrac><msup><mrow><mo>(</mo><mi>N</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mi>n</mi></msup><msup><mi>N</mi><mi>n</mi></msup></mfrac><mo>+</mo><mfrac><mrow><mi>n</mi><msup><mrow><mo>(</mo><mi>N</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msup></mrow><msup><mi>N</mi><mi>n</mi></msup></mfrac><mo>]</mo></mrow></math>]]></maths>步骤2,对分组时产生碰撞的标签进行碰撞处理;步骤2的子步骤如下,步骤2.1,预设碰撞缓冲值(BUFFER)的初始值,阅读器维护一个未识别的组号集合和一个碰撞缓冲值(BUFFER),所述未识别的分组集合,是所有存在未识别的标签的分组的集合,使碰撞缓冲值(BUFFER)初始化为一正整数值,发生碰撞的码片数期望为:<maths num="0004"><![CDATA[<math><mrow><mi>E</mi><mrow><mo>(</mo><mi>X</mi><mo>)</mo></mrow><mo>=</mo><mi>NP</mi><mrow><mo>(</mo><mi>x</mi><mo>&GreaterEqual;</mo><mn>2</mn><mo>)</mo></mrow><mo>=</mo><mfrac><mrow><msup><mi>N</mi><mi>n</mi></msup><mo>-</mo><mrow><mo>(</mo><mi>n</mi><mo>+</mo><mi>N</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><msup><mrow><mo>(</mo><mi>N</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msup></mrow><msup><mi>N</mi><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msup></mfrac></mrow></math>]]></maths>其中,X为发生碰撞的码片数量;在K个分组中发生碰撞的码片数总期望为K×E(X),将该值设置为碰撞缓冲(BUFFER)的初始值;从未通信的标签分组中选定一个分组发送通信命令(SEND,S_POSION),分组序列信息(POSION)与分组信息的序列(S_POSION)一致的标签随机从正交矩阵中选取一行作为码片,将自己的数据用码片扩频后发送给阅读器;阅读器收到信息后通过同样的正交码片分离出所有数据后,将已经识别的标签ID逐个广播,各标签检查如果已被阅读器正确识别,则已被阅读器正确识别,进入休眠状态;此过程中如阅读器检测到碰撞,就将当前的碰撞缓冲值(BUFFER)减1;步骤2.2,判断碰撞缓冲值(BUFFER)是否等于0,如为0,进入步骤2.3,否则直接进入步骤2.4;步骤2.3,调整标签分组,并将缓冲值(BUFFER)重置为初始值;调整过程如下,将这些不同组内发生碰撞的标签重新合成为新的一组,删去旧的组,并将新合并的组号放入未识别的组号集合里;进入步骤2.4;步骤2.4,阅读器检测是否还存在未通信的标签分组,如存在,回到步骤2.1,否则结束步骤2,进入步骤3;步骤3,对读取的标签进行重复和遗漏核查,阅读器中设置一个变量L,L初始值为系统核查次数的上限值;步骤3具体实施的子步骤如下,步骤3.1,阅读器广播核查命令(CHECK);步骤3.2,所有标签检查自己的发送标志位和反馈标志位,只要有1位不为1,则标签向阅读器返回其分组信息,发送重传请求(MSS,R_POSION),其中,(R_POSION)为该标签的分组序列(POSION)信息;步骤3.3,阅读器在发送核查命令(CHECK)后,如果没有标签响应,则表示所有标签被正确识别,识别过程结束;如果阅读器收到了标签的响应,则说明存在未识别的标签或者存在故障标签,进入步骤3.4;步骤3.4,阅读器广播发送重传命令(WAKE_UP,R_POSION),通知遗漏的标签重新发送数据;步骤3.5,未被识别的标签收到重传(WAKE_UP,R_POSION)命令后,检查(R_POSION)与自己的分组序列(POSION)信息是否相同,如果相同,则重传数据;阅读器再将收到的所有需要重传的分组序列(R_POSION)依次广播后,一个检查过程结束,将L减1;若L不为0,回到步骤3.1;若L为0,同样结束该过程,并向用户发送错误报告。
地址 430072 湖北省武汉市武昌区珞珈山武汉大学