1引言
在RFID技术迅速发展并得到越来越广泛的应该的同时,也伴随着出现了两个问题:第一,在一个如此大的市场里,存在着众多协议,还存在着各种使用和操作不同的形形色色的阅读器,这严重阻碍了RFID技术的大规模应用;第二,如何整合、过滤和传输这些数据使企业不会被大量的数据淹没而得不到RFID技术带来的好处是另一个急待解决的重要问题。
在这种情况下,RFID中间件运因而生,并得到了快速的发展,RFID中间件可以屏蔽各种不同规格型号的阅读器和各种不同协议标准的标签,让上层应用软件得到统一、不变的接口;另外,它还负责整合和过滤数据,产生报表,使海量数据的传输和应用成为可能。
目前,国内外的RFID中间件体积大,所设计只适用于PC机,不能直接移植到嵌入式阅读器中,本文实现了一种可移植,可直接运行于嵌入式阅读器设备上,基于ALE标准的嵌入式RFID中间件。
2 EPCglobal ALE标准
EPC[1]是 Electronic Product Code (产品电子代码)的缩写,是美国麻省理工学院的自动识别中心(Auto-ID 中心)提出的,其主要思想是为每一个参加物联网的产品分配一个电子标签,该标签存储了一个世界唯一的EPC码,当产品通过阅读器时,由RFID技术来读取数据,得到对应的EPC码,最后通过与互联网相连的服务器来完成相应的EPC码的解析。
EPC系统主要由EPC编码, EPC 标签,EPC 读写器, EPC 中间件, PML (物理标记语言) 服务器,ONS (对象名解析服务) 服务器等组成。系统协议主要由RFID通信协议,应用事件管理(ALE)协议等组成。
EPC ALE[2]协议是EPC 中间件与阅读器模块和客户应用程序之间的接口协议. 该协议定义了客户可以如何过虑和整合来自多个阅读器的EPC标签,并面向不同的企业应用程序和阅读器定义了统一的接口,这样即使后端应用程序增加或改由其他软件取代,或者RFID读写器的种类有所改变、增加等情况发生时,其它部件不需要做修改。ALE所包含的处理过程有: 接收来自一个或多个数据源的EPC 标签码; 根据客户端(企业应用程序)要求以一定的时间间隔整合数据, 过滤重复和不感兴趣的EPC 码;根据客户端要求以不同的形式打包发送报告。ALE协议是基于事件的,工作方式可为同步模式或异步模式,对实时性有较高的要求,而对接收到的EPC数据的存储时间不要求很长,当收到的EPC数据已经被相关所有事件处理且发送后,该数据将可以被删除。发送数据包的文件格式是XML格式,所有要发送给客户或者其他阅读器的数据封装成为XML文件,客户端将收到的数据文件后根据对应规定的XML格式解析出相应的数据信息。ALE在EPCglobal中的位置如图1,位于原始EPC检测事件层(RFID标签阅读层)和应用商业逻辑层之间。
3基于EPCglobal ALE标准的嵌入式RFID中间件实现方案
3.1 本文设计的RFID中间件主要实现特点
该中间件构架于嵌入式系统中,它有别于运行在一般计算机上的中间件,在嵌入式系统上实现RFID中间件功能,使中间件可以集成在阅读器上。这样一方面增强了阅读器的性能,使传统"哑"阅读器成为名副其实的"聪明"阅读器,另一方面,使RFID中间件和阅读器形成一个整体,体现了"All in a box"思想,这样既方便了RFID系统的安装,又降低了成本。该中间件同时支持EPCglobal ALE标准,该标准应用广泛,可以应用于不同规格型号的阅读器,支持多种标签标准,为上层应用提供统一不变的标准接口,具有很强的通用性和兼容性。该中间件还具有网络功能,具有普通的web服务器和数据库功能,这实现了阅读器与阅读器,阅读器与客户端的网络通信和数据缓冲,且网络之间的数据都是封装成为标准的XML格式传输。
3.2 嵌入式RFID阅读器硬件系统平台
该嵌入式RFID阅读器有三个基本的硬件模块:天线和射频模块,DSP基带板模块,主控系统模块。天线和射频模块负责射频信号的发射和接收,DSP基带模块负责对射频模块接收到的信号转换为数字信号,进行CRC校验,并把数据通过HPI接口传给主控系统模块,同时也负责对主控系统模块发出的控制命令进行解析和实现。主控系统模块主要负责整个系统的控制和标签的处理,和客户服务响应。
主控系统模块主要由ARM(AT91RM9200)和周边器件组成,操作系统为arm-linux2.4.19。中间件将运行于该模块中。
3.3 嵌入式RFID中间件软件体系结构
本系统采用分层的软件体系结构,低层是Linux操作系统和各外设接口的驱动模块,包括DSP驱动、网口驱动和串口驱动。中间层是GoAhead Web服务器和嵌入式数据库SQLite,上层是阅读器管理,ReadProtocol和ALE层,如图2所示。
操作系统是中间件的基础,采用嵌入式Linux作为本嵌入式RFID中间件的操作系统,Linux支持TCP/IP,HTTP等多种协议,省去了协议移植等复杂工作,降低了中间件的开发难度,缩短了开发周期。DSP驱动、网口驱动、串口驱动,是为RFID阅读器开发的驱动模块,只需在linux的支持上作些修改。Linux 移植技术已经成熟, 本文不作详细的阐述。
GoAhead Web 服务器是一款主要面向嵌入式系统的 Web 服务器,主要功能模块有安全模块,GoForm模块,CGI模块,SSL(Secure Sockets Layer)模块。其中安全模块中又包含内存数据库模块,主要负责存储用户信息,以及提供保密安全机制。GoForm模块主要负责处理客户提交的表单数据,并以web页面的形式返回相应的处理结果。CGI模块主要处理客户的CGI请求。SSL模块在GoAhead中实现了SSL协议。它是本文设计嵌入式中间件的基本软件架构,系统的所有网络开发都是在这个架构上进行,GoAhead web服务器作为中间件的一个数据转发平台和模块承载平台,阅读器与客户端之间,阅读器与阅读器之间的数据通信都是由GoAhead Web服务器来完成,ALE协议实现模块(ALE模块),数据库管理模块,阅读器管理模块,ReaderProtocol Server模块等的开发也是建立在GoAhead的基础上的。
数据库采用SQLite,SQLite是一种小巧、免费、开源的嵌入式数据库应用软件,它提供了标准SQL语言,并且由于其工作速度较快,满足了数据的实时要求。它可以集成在应用软件中,也可以独立运行,本系统选用它主要是对原始数据进行平滑、过滤以及根据客户端的命令筛选出数据。
Reader Management是阅读器管理模块,负责设置本阅读器的工作状态和工作模式。
Reader Protocol是阅读器协议服务器,它负责管理所有与该中间件阅读器相连的阅读器,是Reader Protocol协议在中间件上的实现。
ALE Server是ALE协议服务器,它是该系统的核心,负责向上层应用程序提供标准的ALE接口,实现各个ALE接口。
3.4 ALE标准在该嵌入式中间件系统中的实现
如何在RFID中间件的软件系统中实现EPCglobal ALE规范,是本系统开发的核心。在系统中,我们开发了ALE模块用以实现了EPCglobal ALE标准,由于中间件采用的基本软件架构是GoAhead Web服务器,它作了一个模块承载平台,在上面可以很好地嵌入ALE模块。ALE模块在GoAhead中的位置以及ALE模块的处理流程如图3所示。
客户端用http协议发送一个ALE命令的XML文件给服务器端,服务器端在GoAhead进程中接收该xml文件,然后将该文件封装成消息,根据不同的接口函数填充上具体消息类型,然后用命令消息队列传给ALE进程,在ALE进程中从命令消息队列把消息取出,根据消息的类型把XML文件交给相应的函数去解析和做相应的操作。
在ALE模块中,对于每个用户定义的ECSpec[2](它是一个复杂的数据结构类型,规定了如何处理和完成一个事件周期),系统实现了四个状态:Undefine,Unrequested,Requested,Active。Undefine表示该ECSpec现在已不能再使用,即将被释放;Unrequested表示该ECSpec现在处于没有用户订阅状态;Requested 表示该ECSpec现在处于有用户订阅状态;Active表示该ECSpec现在正要触发线程来制作和发送报表的状态。每个不处于Undefine的ECSpec将对应一专有的子线程(在ALE进程中创建),该子线程处理该ECSpec所规定的具体数据提取,报表制作和发送。各个ECSpec对应的子线程将互不干扰,子线程只跟主线程(ALE进程原线程)有联系,通过条件变量机制实现主线程对子线程的触发和控制。
系统在根据对应的ECSpec要求进行数据提取、过滤、整合时,将与数据库系统模块相互结合。数据库系统模块首先把从阅读器读到的原始数据进行滤除重复多余的EPC码,并屏蔽各种不同阅读器数据格式的差异,统一数据格式后将数据送入到数据库SQLite中,成为数据库操作的数据源。系统的数据提取等操作就是在该数据源中进行的,这些操作是通过应用SQLite自身标准SQL语言来实现的。在相应的数据操作完成后,必须把数据源中的过期数据进行删除。
在完成了数据的提取和整合后,系统将把数据根据对应ECSpec的具体要求封装成为XML格式,并以TCP方式发送给所订阅的用户。
4结束语
本文作者研究的创新点是在基于EPCglobal ALE标准,如何设计构架于嵌入式系统中的RFID中间件方面上,提出了比较清晰的思路,并按照该思路实现了基于EPCglobal ALE标准的嵌入式RFID中间件,经编译运行测试,该系统体积小、稳定可靠、实时性好、并行处理速度高,可广泛应用于嵌入式RFID阅读器系统中。