RFID防碰撞算法在智能家居应用中的改进研究*
2018-07-02宋磊,杜彬
宋 磊,杜 彬
(山西职业技术学院, 山西 太原 030006)
0 引言
随着物联网技术的快速发展与普及,各类智能家居应用系统也逐渐被大众所认可并广泛普及。RFID技术作为智能家居系统中实现对各类进行物品自动识别的关键技术,具备了标签信息容量大(最高为4GBit)、识别率高(准确率>98%)、信号穿透性好以及数据可读写等优势[1]。但在实际应用场景中,由于受控设备数量增加而引发的标签检测冲突会导致RFID系统性能和处理速度发生严重下降进而造成物联网系统的响应迟缓。因此研究更高效的标签防碰撞算法对RFID技术的应用与发展具有重要的意义。
1 RTID工作原理与标签碰撞现象
RFID技术的原理为:嵌入了电子芯片的标签(Tag)在写入数据后被部署在不同的物体上等待接收由阅读器(Reader)发送的射频信号,在接收到信号后标签被激活并向阅读器反馈信息;阅读器对信息进行译码并将数据上传至智能家居系统核心模块(当前以Raspberry Pi为主),核心模块中的程序根据数据内容进行判断并向系统中的各执行模块发出相应的控制指令。
由于受到体积与功率的限制,单一阅读器的信号强度和覆盖范围有限。因此智能家居系统中往往会部署多个阅读器以实现对全部标签的数据访问,而RFID系统的碰撞问题也由此被引发。碰撞现象如图1所示。
图1 RFID系统的碰撞现象
当出现图1(a)中所描述的某个标签同时处于多个阅读器作用域内,同时收到它们的访问请求时,就会发送数据访问冲突。当出现图1(b)中所述的多个标签同时向某个阅读器发送数据时,也会引发冲突。
2 智能家居环境下的标签识别特点
在智能家居的应用场景中,需要识别的物品数量多、体积大小不一,并且分布在不同的房间、角落里,墙壁与大体积物品的遮挡会导致射频信号的传输受到很大影响,因而单一阅读器的有效作用域变得非常有限,系统中需要部署多个阅读器设备才能够正常运行。同时,在系统实际运行过程中还会遇到物品的摆放位置经常被移动的情况。这些特点使阅读器与标签的作用范围出现重复的情况增加,进而导致发生标签碰撞冲突的概率明显增加,严重影响智能家居系统的运行效率。
3 RFID防碰撞算法的改进
3.1 经典RFID防碰撞算法的基本思路与局限
在经典的RFID防碰撞算法中,采用了类似建立二叉树模型并进行遍历的模式来进行处理,其具体过程为:将需要处理的所有碰撞标签划分为标签子集0与标签子集1,首先检索标签子集0中的各个标签,如果无冲突现象存在,即完成识别;否则,就继续将标签子集0划分为子集00和子集01,并继续检索序号较小的00子集的内容;若碰撞依旧存在,则将划分过程继续下去,当子集0中的全部标签识都被正确识别之后,再对子集1的内容进行同样的划分与检索[2]。
该算法的局限在于,当存在大于两位的标签碰撞的情况时,当首次检索到所有碰撞位后,并未对信息进行预处理,从而导致信息传输产生严重的冗余;而对于两个标签只出现一位碰撞的情况,也未做优化处理以进一步提高程序的运行效率。
3.2 二进制防碰撞算法改进
本文针对经典RFID防碰撞算法的不足,设计了基于信息预处理的防碰撞改进算法,其基本原理是在标签分组处理时先仅对冲突位进行识别,获取到当前标签集合中的全部冲突位来组成新的ID,然后基于获取到的新ID来与阅读器通信并创建相应的二叉树,并遵循后续访问原则对标签的信息进行处理。算法流程说明如下:
步骤一:阅读器发送全1指令获取所有标签的序列号信息,并检测到当前的全部冲突位。基于冲突位设置为1、未冲突则为0的原则,创建一组用于记录碰撞位置的二进制序列,并将此序列重新发送给全体标签。
步骤二:标签获取到记录碰撞位置的二进制序列后,将其与自身ID对比后,获取碰撞位组成一个新的标签ID用于和阅读器之间通信。
步骤三:构造二叉树,并以当前结点为根,左叶子结点为0,右叶子结点为1。
步骤四:阅读器检测左叶子节点是否存在冲突,如未检测到则对标签内容进行识别并转向步骤六;若检测到两个标签仅存在一个碰撞位时,对它们同时进行识别并转向步骤六;若它们的碰撞位超过两位时,则转向步骤五。
步骤五:继续创建二叉树,根节点即为当前节点,左叶子节点以最高碰撞位左侧内容+0构成;右叶子结点由最高碰撞位左侧内容+ 1+相邻碰撞位之间无碰撞数据构成,二叉树构成完成后转向步骤四。
步骤六:阅读器检测右叶子节点是否存在冲突,若未检测到碰撞冲突则对标签内容进行识别;若检测到两个标签仅存在一个碰撞位时,对它们同时进行识别;若它们的碰撞位超过两位时,则转向步骤五。
3.3 算法运行示例
假设某阅读器的识别范围涵盖了4个标签,其编码内容如表1所示。
表1阅读器的内容编码表
算法运行过程说明如下:
1) 阅读器向所有标签发送全1命令(8位均为1),各标签响应后,获取到的结果为10XXXX11,获取到各个碰撞位,并生成4个新的标签。
2) 阅读器与4个新标签通信并创建二叉树,以0作为左叶子节点,1作为右叶子节点,根节点为当前节点。
3) 阅读器对左叶子节点(A1、B1)进行碰撞冲突检测,ID从高位开始与参数0进行比较,获取结果为0X1X,由于发生2位以上的碰撞,则以当前节点为根来构建二叉树,左叶子节点为最高碰撞位左侧内容+0,即00;右叶子节点为最高碰撞位左侧内容+1+相邻碰撞为中间的正常数据,即011。
4) 阅读器对左叶子节点进行碰撞冲突检测,ID从高位开始与参数00进行比较,获取结果为0010,未检测到碰撞,则直接识别标签A1的内容。
5) 阅读器继续对右叶子节点进行碰撞冲突检测,ID从高位开始与参数011进行比较,获取结果为0111,未检测到碰撞,则直接识别标签A2的内容。
6) 阅读器对C1、D1进行碰撞冲突检测,ID从高位开始与参数1进行比较,译码结果为110X,即仅发生了一位碰撞,为提升执行效率,仅需要将两个标签的第三位数据设置为0、1,即可完成对标签的碰撞位的处理。进而阅读器即可完成对标签C1、D1的识别操作。
至此,4个标签的识别操作全部完成,在实际应用场景中,阅读器检测范围内的标签的数量与ID位数都多于本示例,因此根据该算法创建的二叉树层级也会相应的增加,该算法的效率优势也会体现的更加明显。
4 结论
本文针对现有RFID系统中常用的经典碰撞检测算法中存在的问题,设计了一种基于信息预处理的防碰撞改进算法。经过对算法流程的分析与典型示例的模拟可以证明,本文提出的算法在有效提升标签识别效率的同时,还大幅降低了通信过程中的冗余信息。为有效解决RFID系统中的标签碰撞现象提供了有效的解决方案。
[1] 敖志刚.智能家庭网络及其控制技术[M].北京:人民邮电出版社,2013.
[2] 郭爱煌.移动RFID技术应用与设计[J].现代电子技术,2014(15):15-17.