引言
在一个典型的仓库里,卡车回到坞门卸下托盘上的货物,该托盘或者集装箱都有无线射频识别(Radio Frequency Identification,RFID)标签(目前,低价商品还不能拥有自己的标签)。仓库内被划分为具有相应识别电子码的不同货位,RFID阅读器可安装在仓库的出入门和仓库内部。整个仓库内及各出入门附近都由网络(无线或有线)覆盖,以实现信息共享。
一个典型的RFID系统由射频电子标签(RFID Tag)、读写器(RFID Reader)及应用支撑软件组成。电子标签由芯片与天线组成,每个芯片都有唯一的标识码。标签可附着在被标识的物品上,当带有电子标签的被识别物品经过读写器的可识读范围内时,读写器自动识别该标签并将信息发送给后端软件,从而实现自动识别物品或自动收集物品标志信息的功能。
介于前端RFID读写器硬件模块和后端数据库与应用软件之间的中介,称为RFID 中间件(RFID Middhware)。应用程序端使用中间件所提供的一组通用的应用程序接口(API),即能连接到RFID读写器,读取RFID标签数据。中间件实现对底层设备的精确控制,实时采集原始数据,对数据进行过滤,并在其中封装典型的应用逻辑,使系统接口简单透明,从而达到系统的协调工作。
1 模拟仓库环境
开发中间件,首先要模拟仓库环境。由于标签的价格原因,我们不可能在每个货物上都贴上标签,只能通过标示托盘来追踪货物。如图1所示,在每个托盘、叉车和出入库人员上安装和佩戴射频标签卡,并在车间和仓库出入口安装读写器,通过读写器获取RFID标签经过出入口的情况,从而将托盘上所属仓库的信息与射频卡捆绑输入数据库,同时记录叉车和人员的出入库情况。在出入I:1安装摄像头,判断通过出入口的货物数量。 (图片)
图1 仓库环境 系统通过RFID标签的类别来区别出人库对象,通过仓库管理人员及工作人员共同遵守的规则,在读取RFID标签时,判断出人库情况,并通过视频图像判断托盘的状态(空或满及装载货物数量),从而计算产品出人库数量。定期进行统计分析,为管理人员提供决策支持,并在异常情况发生时进行报警。
2 RFID中间件设计
RFID中间件位于企业应用程序与底层设备之间,提供统一的应用逻辑接口与设备接口,在实际应用中起到读写器的管理和数据的处理、传递功能。它的最终目的是数据为上层系统所用。如图2所示,功能上可分为原始数据采集层和事件处理层。(图片)
图2 中间件架构 2.1 原始数据采集层
为屏蔽各类设备之间的差异,实现应用对设备的透明操作。中间件将每个设备(RFID阅读器,打印机,传感器等)用统一的代理来模拟,由代理和设备直接交互。不同的设备,代理处理的消息类型、处理的方法也不同。代理之间通过UDP/IP上的XML消息来交流信息。使用XML的优点是它的异构性、可扩展性、灵活性,适用于松耦合特性的分布式系统。
2.1.1 代理
中间件为设备和应用层提供了双向接口,我们用代理来模拟设备接口。阅读器代理负责控制阅读器驱动、状态查询、接收标签数据列表等工作,把设备传进来的数据转换成标准化格式。用户可以根据传感器类型的不同而扩展它,这样能更好地适应客户需要。打印机代理负责控制打印机,用户可根据需要添加其他类型 。
2.1.2 消息机制
RFID中间件是消息中间件的一种,它的消息传递模式支持点对点模式和发布/订阅模式。代理和设备之间多用点对点模式,例如启动或关闭一个阅读器时,使用UDP套接字来处理点对点操作;若阅读器被成功启动,它也会广播一个阅读器状态更新信息。
在事件处理层,应用系统通过发布/订阅机制获得感兴趣的信息,中间件为完成这一功能设置了订阅解析器,提取定义文件的参数和方法,传送到事件处理机制,对RFID数据进行处理。
2.1.3 缓冲机制
RFID阅读器每秒钟会阅读到成千上万的标签,为防止溢出,采用线程来加速包的卸载,并将数据保存在即时队列中。这里线程和数据队列构成了一个缓冲机制,以满足计算机的实时处理要求,它可以平滑从阅读器接收到的大量简单重复无序数据,按要求进行处理。每个阅读周期 (读周期是和读写器交互的最小单位)线程接收一组EPCs(标签EPC,阅读器ID,时间戳)组合,将其发送到消息队列,对其进行事件有效性验证,检查是否出现读写错误或漏读,实现对数据的初步过滤。
2.2 事件处理层
事件处理层位于原始数据采集层和业务逻辑之间。它根据上层系统发送的定义文件和回发地址,生成报告文件,按发布/订阅机制将报告反馈给系统 J。原始数据采集层提供了硬件的统一接口,事件处理层则定义了应用系统对RFID中间件的标准访问方式。它对原始RFID数据进一步处理,使数据转化为上层系统需要的形式。图3为RFID数据处理流程。(图片)
图3 数据处理流程 数据流经过缓冲机制后,还存在着大量的冗余信息,需要对其进行过滤、聚合,提取出有意义的事件。我们按解析机制发来的事件周期T对数据流进行操作,按上层定义的业务规则判断事件类型,并存储在相应的表格中。
2.2.1 过滤机制
经过缓冲机制后的数据流还存在着大量的重复,即阅读器重复和标签重复。标签位于一个阅读器识读范围内时,阅读器就会不断地读取标签数据,直到标签离开为止,称为标签重复;另外,当标签同时处于多个阅读器的识读范围内时,它的数据也会被不同的阅读器重复读取。图4为阅读器重复。
为解决上述问题,对标签重复,我们只记录标签第一次出现和最后一次出现的时间;对阅读器重复,一是在布置阅读器位置时考虑到交叠情况,尽量用最少的阅读器数量覆盖全部区域。但为了提高识读率,往往不能避免交叠。这里采取的是虚拟阅读器的方法,同一地区的多个阅读器组成一个虚拟阅读器。如图4的R1,R2,R3,R4共同组成一个虚拟阅读器V0。过滤后的数据存放在表2中,T—Start为V~Reader初次阅读某标签的时间,以后再读到该标签则更新T—End和Count值(Coum为标签读取次数,有时为简便起见,可略去)。 (图片) (图片)
图4 阅读器重复示例 对Filter表加上触发器,当有插入事件发生时,则表示有新的标签出现;当某标签的T End(Count)在规定的时间内都未发生变化时,则引动触发器,认为该标签消失。将消失的标签信息送入下一个机制。这样只报告标签进入和离开的时间,大大减少了数据量。
2.2.2 事务处理机制
过滤后的数据流蕴含大量的语义信息。事务处理机制根据订阅机制提供的业务规则,对数据流进行分析,提取出有意义的事件模式。
在本项目的仓储管理系统中,有三种基本的事件类型:移动事件、警告事件和关联事件。移动事件包括出/入库事件、移库事件,是关于标签位置发生变化的事件。警告事件人员进入禁区、操作错误等。
关联事件为了责任到户,系统需要知道某批托盘货物 是由哪个人员驾驶哪辆叉车运载的,即人员一叉车一托盘关联关系。
下面以出/入库事件为例,阐述系统的处理流程。对接收的标签查询其历史信息,判断其标签类型(托盘、人员、叉车)。对托盘标签来说,如果查询历史信息,该托盘原始位置为车间,且初始默认为空托,入库门阅读器读到该标签信息,则为入库事件,于是将该事件插入到入库表中。同理,出库事件、转库事件和警告事件都会引起相应的表格操作。
2.2.3 订阅/解析器
订阅/解析器使得系统有着更好的可扩展性和可移植性。在原始数据采集层,代理兼容了不同的设备接口,使中间件与设备无关。而解析机制则将上层系统发来的定义文件转化为中间件可以理解的方式。事件周期T和业务规则都是由上层定义的,中间件只需按要求进行处理就可以了。报告文件由事务处理机制生成并发送到指定位置,同时在数据库记录。
2.2.4 数据库支持
传统的数据库更新并不频繁按设定的时间进行。但RFID数据库的更新非常频繁。阅读器不断的读入原始数据,进行过滤、聚合处理后的数据要进行存储,上层应用程序又不断地进行查询,使得RHD数据库的构建和传统数据库不同,需要分层建立。如图5所示:底层是原始RHD数据库,过滤聚合(清理)后的数据库位于第二层,然后是业务逻辑层,为便于查询,最上层由需要频繁查询的数据组成。这些层次对应着中间件数据处理的不同阶段。
(图片)
图5 数据库层次示例 3 RFID技术在仓储管理中的应用
广东某公司的石化仓储计量控制系统应用RFID技术有较好的效果,它可以实时显示库存状态,对货物进行准确定位,积极支持上层查询,对数据进行有效采集、传输和记录,实现对货品的动态管理,提高效率和安全性。
3.1 定位
标签的原始位置,出入库记录,转库记录都被整合在History表中,显示每个标签的历史位置信息。为更精确地获取贴标签的库内位置,需要在仓库内部布置位置阅读器,获取标签信息。这部分的功能有待系统进一步扩展。
3.2 查询监控
系统要了解出库物品和入库物品是否与出库.单/入库单一致,需要对货品进行跟踪监控,查询是否有漏读或不可靠阅读;出/入库货品种类数量、人员叉车托盘是否按指定分配等。应用程序可以直接查询数据库,也可以用发送/订阅模式从中间件获得实时信息。当发现库存量、出/入库计划、计划外出库或操作不规范等情况,系统自动报警。
3.3 显示库存状态
为了即时获取库存数量,库存量=原始库存量+入库量一出库量。对入库表、出库表添加触发器,一旦有插入操作,并且出入库量不为0,即不为空托时,会启动一个触发器,对产品表的库存量进行修改。以下为对入库表加上触发器:(图片) 4 结语
本文主要介绍了RFID仓库管理系统中RFID中间件的设计问题。应用RFID标签和阅读器实现对货品的动态管理,可提高效率和安全性。同时为了适应不同的阅读器和应用系统要求,采用RFID中间件技术,使RFID数据采集与应用程序相分离,不仅适用于仓储管理系统,稍作改进后可推广到其他的商业领域中去。
本文提出的中间件模型按功能分为两层,针对数据处理的不同阶段有相应的机制进行处理。在实际应用中,一些系统只使用中间件完成数据采集功能,剩下的工作完全由应用系统和数据库交互完成。本文对中问件的功能进行了拓展,对数据库进行过滤、聚合、事件模式提取,使原始数据转化为上层需要的形式,更好地适应了系统需求。应用代理和发布/订阅技术,使系统有良好的可扩展性和移植性。
3/3/2009
|