|
RFID中间件数据的过滤方法
本文对RFID中间件的架构进行了介绍,研究和分析了现有的数据过滤方法.结合应用场景的实际需求,设计了一种具有广泛适用性,能够抑制噪点数据和去除冗余数据的过滤算法。
2) 事件编码类. 对标签状态的改变进行编码,标签出现编码为0,标签消失编码为1. 然后加入计时器机制,对计时器有效时间内的同一标签的状态跳变进行忽略,从而在状态定义和时间维度2个方面对数据进行了去重化。 这些算法均能够很好地消除冗余数据,减少了上层系统的负荷,有着较好的过滤效果. 但在实际应用中,除了RFID数据的去冗化以外,对数据的过滤还有着其他的需求. 比如,由于信号不稳定或其他干扰因素,货架上物品的RFID标签并不能在每一个读写器周期中被检测到;或者当顾客推着小推车从货架旁走过时,其推车内已选购的商品被货架内的读写器误读到。本文中将类似的无效RFID数据称为RFID噪点。 在上述几类过滤算法设计中, RFID噪点显然不是一个被考虑到的因素,只要出现了RFID标签,哪怕只是误读到一次,也会被作为一个事件数据进行上传。如果上层业务规则过滤模块没有对这些噪点数据进行处理,则会产生一些莫须有的事件记录,对整个系统的数据管理造成很大麻烦,但上层业务规则过滤模块对噪点的发现和抑制显然是一件很难的事情,因为数据采集细节已经被RFID数据过滤模块完全屏蔽掉了,对噪点的发现失去了最基本的依据。 2. 2 带噪点抑制功能的RFID数据过滤方法设计 RFID标签数据由读写器在每个报告周期reportcycle进行上报,在经历多个报告周期之后,一个典型的RFID读写器上报数据如图2所示。 将在报告周期中出现的RF ID标签编码为1,未出现的编码为0,则对每一个标签,其事件可以记录为一个01序列串. 对图2而言: tag1可编码为0001111000,表示标签通过了读写器范围; tag2可编码为1111100000,表示标签离开了读写器范围;tag3可编码为0000001111,表示标签进入并停留在读写器范围中. 对tag4和tag5而言,它们出现了噪点数据, tag4也许不应该出现在读写器范围内,而tag5根本就没有离开。根据实际情况, RFID噪点可分为1噪点和0噪点2类,前者表示非读写器范围内的标签被偶尔读到,如tag4;后者表示处于读写器范围内的标签偶尔没有被读到,如tag5. 按照传统的过滤算法, tag5 将产生一个通过事件,tag4将产生2个离开事件和2个进入事件。 对噪点进行抑制的关键在于对偶尔出现的噪点进行识别,从而通过程序将其抹去,本文中提出的抑噪算法采用了阀值的思想,对标签的每次上报出现都赋予一定的权值,没出现的标签则减少其权值. 当该标签权值高于或低于某个阀值的时候,触发相应的标签事件,本算法具体描述为: 1 ) 定义标签每次出现后累加的权值valueStep. 2) 定义触发标签出现事件的阀值fapp. 3) 定义触发标签消失事件的阀值fd is. 4) 定义标签状态字段detectS tatus. 5) 如果标签出现,则其权值加valueStep. 6) 如果标签未出现,其权值减1. 7) 标签权值大于等于fapp,且detectS tatus =false,则触发标签出现事件, 产生一条标签出现的记录. 然后将detectStatus置为true. 8) 标签权值小于等于fdis,且detectS tatus =true,则触发标签消失事件, 产生一条标签消失的记录. 然后将detectStatus置为false. 在该算法中,不管是0噪点还是1噪点,由于其出现的次数很少,则其标签权值很难高于fapp或低于fdis, 就无法触发标签事件, 从而有效地抑制了噪点数据. 而正常标签不管被读写器上报了多少次,其只有在权值大于等于fapp时才会触发一条标签出现记录, 而标签状态字段detectStatus则保证了当标签权值在阀值上下波动时不会对事件重复触发,所以该算法也有效解决了标签数据冗余的问题。在经过处理后,标签的报告情况由多个离散点变成了较为连续的权值变化, 如图3所示。 算法中的出现阀值fapp 与权值value Step 之比fapp / valueStep越大,则对1噪点的过滤情况越好;消失阀值fdis越低,则对0噪点的过滤更加有效。当fapp / valueS tep小于等于1的时候, 该过滤算法将不对1噪点进行过滤处理, 而仅保留去除冗余数据的功能. 所以, 根据客观使用环境的需求, 对value Step, fapp, fdisp3个参数进行合理调整和搭配,可以使本算法有效适应不同过滤目标的需求。 3 算法实现与验证 3. 1 算法实现 笔者对该算法设计思想进行了实现,以验证其在不同应用场景下的适应性和有效性. 实验平台使用RS232接口的单天线读写器,该读写器报告周期为1s,每次报告标签数为1个. 算法实现采用java 语言, 通过comm. jar 开发包进行串口通讯。
责编:刘沙
微信扫一扫实时了解行业动态
微信扫一扫分享本文给好友
著作权声明:kaiyun体育官方人口 文章著作权分属kaiyun体育官方人口 、网友和合作伙伴,部分非原创文章作者信息可能有所缺失,如需补充或修改请与我们联系,工作人员会在1个工作日内配合处理。
|
推荐博客
|
|