APP下载

基于射频识别技术的仓储系统中间件的设计

2011-01-23杨永生

成都工业学院学报 2011年2期
关键词:读写器中间件数据管理

杨永生

(陕西省行政学院 计算机系,西安 710068)

射频识别技术(Radio Frequency Identification,RFID)的应用能够大大提高企业工作效率、降低运营成本、提高企业的自动化程度、增强企业竞争力,因此RFID技术在物流管理中的应用得以蓬勃发展[1],尤其当世界头号零售商沃尔玛公司宣布大范围使用RFID以及美国军方宣布军需物品需使用RFID进行跟踪、识别后,RFID的研究与应用得到了极大的推动[2]。中国的RFID技术和市场起步较晚,应用前景却异常巨大。因此,国内学者对RFID的发展及其应用进行了大量的研究[3-4]。但由于其成本的原因,基于RFID技术的仓储管理系统还处于初期阶段。据世界著名的咨询机构The Standish Group在一份研究报告显示,由于采用了中间件技术,应用系统的总建设费用可以减少50%左右[5]。中间件带给应用系统的不只是开发的简单、开发周期的缩短,也减少了系统维护、运行和管理的工作量,还减少了硬件设备总体费用的投入。因此中间件的研究得到广泛的关注,目前国外比较知名的中间件厂商有IBM、Oracle、Microsoft、Sun等企业。国内方面,在物联网中间件和公共服务方面已进行了一些工作,如中科院自动化研究所开发了RFID公共服务体系基础架构软件和血液、食品、药品可追溯管理中间件;华中科技大学开发了支持多通信平台的物联网中间件产品Smarti;上海交通大学开发了面向商业物流的数据管理与集成中间件平台等[6]。

上述中间件设计方案大多是基于自己目前所研发的核心产品或技术的应用,或者针对某一行业的特点而开发,有太大的依赖性和较小的扩展性等问题。本文针对物流仓储管理系统的特点,设计了较为简单实用的中间件系统,为物流仓储系统中间件的设计和进一步的应用提供参考。

1 RFID中间件功能分析

中间件(Middleware)作为RFID技术的核心部分,是连接RFID硬件与企业应用的软件,是在RFID部署中收集数据的重要工具[8],已经成为构建RFID网络分布式异构信息系统不可缺少的关键技术。RFID中间件是一种面向消息的中间件,信息是以消息的形式、以异步的方式,从一个程序传送到一个或多个应用。应用程序端使用中间件所提供的一组应用程序接口(API),能与RFID阅读器相连,从而读取RFID标签数据。其功能不仅是传递信息,还必须考虑数据解译、数据安全性、数据分发、错误恢复等问题。

图1 RFID中间件的基本功能与架构示意

RFID中间件扮演了RFID标签、阅读器同应用程序之间的中介角色,是RFID系统动作的中枢,可以加速RFID关键应用的开发与实施。它的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。其基本功能结构包含了与RFID前端硬件模块(从RFID标签到RFID读写器的数据资料自动搜集)以及与后端数据库与应用软件(如ERP、CRM、WMS、EPC和MIS等)之间的中间应用软件环境,它提供了业务过程管理、实时数据资料的过滤与汇集、事件管理、安全管理、数据的路由与集成以及读写器的协同管理等多种功能与机制。基于RFID中间件的应用模式架构以及RFID中间件的基本结构与功能如图1所示。

从图1可以发现RFID中间件最主要的功能是:1)操纵控制RFID读写设备按照预定的方式工作,保证不同读写设备之间很好地配合协调。2)按照一定的规则筛选过滤数据,筛除大部分冗余数据,将真正有效的数据通过合适的网络传送给后台的应用信息系统。3)能够支持上层高端用户的异构应用系统之间对RFID数据、事件的共享以及彼此业务流程之间的应用协同。

采用RFID中间件可以有效地屏蔽RFID设备的多样性和复杂性,消除不同来源的RFID标签同读写器硬件设备与通信协议之间的特性以及其他的差别,能够为后台业务系统提供强大的支持,驱动更广泛和更丰富的RFID应用。

2 中间件主要功能模块设计

RFID中间件不仅可以为应用程序提供集成的功能,还要提供数据过滤功能以减少从读写器到应用程序的数据量,同时它还要保证系统通信的稳定性和及时性。笔者设计的中间件主要包括3大功能模块:通信管理、数据管理和应用程序接口。

2.1 通信管理模块

2.1.1 模块功能与结构

数据通信模块负责完成中间件与读写器和数据库之间信息的传递,而上层软件不需要考虑具体的信息交换问题,只关心如何实现自己的功能即可,使得程序的模块化易于编写、调试和维护。通信管理模块的结构如图2所示。

图2 通信管理模块结构

通信管理模块的主要功能是连接各种不同类型的RFID读写器并从中读取电子标签信息。由于不同的厂商提供的RFID读写标准不尽相同,因此该模块的设计要具备有通用的读写器接口来适配各种RFID阅读器。笔者设计的通信管理模块与读写器的通信主要处理网口和串口2种方式,并支持其他自定义的通信方式。通信管理模块连接到需要进行读取的RFID读写器,并将从读写器获得的RFID标签信息传送给中间件的数据管理模块。建立数据连接之后要针对不同的RFID读写器的底层通信协议建立相应的类,并实现其中的命令函数。用类的方式实现,方便以后系统的升级,当加入一种新的连接方式时,只需再加入一个实现该接口方式的通信类就可以了,不需要重新开发整个模块,提高了系统的可扩展性。

2.1.2 主要接口函数

通信管理模块的主要接口函数如下所示:

1)打开一个与通讯连接

Bool OpenConnect(int nComType,char*Param)

函数说明:打开一个类型为 nComType的连接,参数为Param。若成功则返回True,否则返回False。

2)关闭一个通讯连接

Bool CloseConnect(long hHandle)

函数说明:关闭句柄为hHandle的连接,若成功则返回True,否则返回False。

3)从通讯连接发送数据

WriteConnect(long hHandle,BYTE*byBuffer,int nSize,const char*strToIp=NULL,int nToPort=0,BOOL isBroadcast=FALSE)

函数说明:将byBuffer中的nSize个数据,发送到句柄为hHandle的连接中,返回发送的数据个数。

4)从通讯连接接收数据

ReadConnect(long hHandle,BYTE*byBuffer,int nSize,char*stripFrom=NULL,int*nPortFrom=NULL)

函数说明:从句柄为hHandle的连接中读取nSize个数据到byBuffer中。

5)读标签数据

ReadTag(long hConnect,BYTE byAddr,BYTE byMode,char*chUID,BYTE byBeginBlock,BYTE byBlocks,BYTE &byDB_N,BYTE &byDB_Size,char*chData,BYTE byDataFormat)

函数说明:提供中间读取读写器中标签数据的接口,按byMode方式根据byAddr地址,从byBeginBlock开始读取chUID的标签数据,根据byDataFormat的格式,将读取到的数据存储到相应的数据库中。

6)写标签数据

WriteTag(long hConnect,BYTE byAddr,BYTE byMode,char*chUID,BYTE byBeginBlock,char*chWriteData,BYTE byDataFormat)

函数说明:实现中间向标签中写数据的接口,按照byAddr的地址,以byMode模式根据byDataFormat的格式向chUID的标签中写入chWriteData中的数据。

7)数据库连接

Connection2DB(object sender,EventArgs e)

函数说明:该函数实现对后台数据库的连接操作。

2.2 数据管理模块

2.2.1 模块结构和功能

本模块将设备和从读写器采集的标签信息都当作数据来对待,RFID中间件的信息管理模块的主要功能是对从RFID硬件接口模块传递过来的电子标签信息进行处理,包括对电子标签信息进行过滤、筛选和存储。由于在读写器的可读范围内,电子标签在某个时期内会被阅读器多次读到,这会造成信息重复,因此数据管理模块必须能够对重复读到的信息进行“清理”,以防止同一信息被多次存储。

另一方面数据管理模块还负责对RFID系统中读写器信息的维护,以确保每个设备都正常工作。该模块通过调用通信管理模块中的相关函数可以进行设备状态和相关参数的读写。数据管理模块的结构见图3。

2.2.2 主要接口函数

数据管理模块的主要接口函数如下所示:

1)设置读取频率

图3 数据管理模块结构

SetReadFrequency(DataTime Interval)

函数说明:定义一个Interval的时间间隔,在此间隔内同一读写器读到的标签信息表示是相同的读标签事件。

2)数据过滤

DataFilter(BYTE*SourceBuffer,BYTE*TargetBuffer,char*FilterMethod)

函数说明:利用FilterMethod算法,将SourceBuffer中的数据进行过滤,结果存储到TargetBuffer中。

3)数据存储

SaveData2DB(struKey& key,BYTE*dataBuffer,short*nNum=NULL,BOOL Result=FALSE)

函数说明:根据key,向数据库中写入dataBuffer中数据,根据Result确定操作的结果是否成功。

4)设备状态监控

GetDeviceStatus(char*devMacAddr,char*devIp,char*devStatus)

函数说明:函数实现发送命令到指定地址的设备,返回设备的运行状态。

5)设备参数读取

GetDevicePara(char*devMacAddr,char*devIp,char*dev_Tye,Struct Dev_Para devicePara)

函数说明:从指定的地址,按设备的类型读取相应的参数。

6)设备参数设定

SetDevicePara(char*devMacAddr,char*devIp,char*dev_Tye,Struct Dev_Para devicePara)

函数说明:根据指定的地址,按设备的类型设置相应的参数。

2.3 应用程序接口模块

应用程序接口模块主要处理RFID中间件与其他企业应用系统之间的集成问题。通过相关的接口,能够将数据信息从RFID中间件传递到其他的应用系统中,从而最终实现企业信息的集成。企业应用系统接口起的作用就是将RFID中间件的信息格式与企业应用系统的信息格式统一起来。通过对企业的指令信息进行翻译,再将它传递给应用程序管理模块。将从应用程序管理模块得到的标签信息编码为企业应用系统可以接收的格式。

应用程序接口要达到如下要求:

1)跨系统、平台,无论应用系统是在何种系统上运行的,可以对接收到的标签数据进行解析;

2)跨语言,无论应用系统将要用何种语言开发,可以对中间件提供的应用程序接口进行访问。

使用中间件有助于减轻企业二次开发时的负担,使企业方便升级现有软件系统,同时能保证软件系统的相对稳定,及对软件系统的功能扩展,简化了开发的复杂性。本模块设计要实现的Web访问接口、其他应用系统开发接口和Web Service服务接口。

3 结论

RFID中间件是RFID技术的核心,在仓储管理系统中起到了承上启下的作用,可直接对读写器采集数据信息,并提供多通信平台数据访问接口。本文针对中间件在仓储管理系统中的3个主要作用:实现对阅读器的管理、对所采集的数据进行过滤和仓储并提供上层应用程序接口,对中间件进行了设计开发,以求实现中间件的简单适应性,为基于RFID技术的仓储管理系统的设计便捷开发提供参考。

[1]王丽亚.物流信息系统与应用案例[M].北京:科学出版社,2007:20-36.

[2]游战清,李苏剑.无线射频识别技术(RFID)原理与应用[M].北京:电子工业出版社,2004:8-21.

[3]李波,刘有源.基于RFID的货场物流自动调配系统的研究[J].物流技术,2003(3):76-78.

[4]庞娟.RFID与仓储管理系统的应用结合[J].中国储运,2004(5):47-48.

[5]萧荣兴,苏伟仁,许育嘉.RFID技术动作的神经中枢:RFID中间件[J].信息与电脑,2005(9):35-37.

[6]宁焕生,张彦.RFID与物联网:射频、中间件、解析与服务[M].北京:电子工业出版社,2008:76-89.

[7]刘发贵,蒋瑞林,胡耀民.RFID中间件及其仓储管理的应用[J].计算机工程,2006,32(13):272-276.

[8]CHOW H K H,CHOY K L,LEE W B,et al.Design of a RFID case-based resource management system for warehouse operations[J].Expert Systems with Applications,2006,30(4):561-576.

猜你喜欢

读写器中间件数据管理
企业级BOM数据管理概要
定制化汽车制造的数据管理分析
海洋环境数据管理优化与实践
CTCS-2级报文数据管理需求分析和实现
RFID中间件技术及其应用研究
基于Android 平台的OSGi 架构中间件的研究与应用
中间件在高速公路领域的应用
基于视频抓拍读写器的高速公路防倒卡研究
基于随机时隙的RFID读写器防冲突方法
一种支持智能环境构建的中间件