物联传媒 旗下网站
登录 注册
RFID世界网 >  技术文章  >  其他  >  正文

使用Agents和XML消息的RFID中间件实现

作者:孙志强 赵卫东
来源:RFID世界网
日期:2008-03-24 18:39:55
摘要:本文提出了一套基于Agents和XML消息的RFID系统框架,给出了使用Agent来封装隐藏底层设备编程接口差异的方法,使用XML消息来统一设备间、设备与软件组件间的通信机制,实现了一套使用Agents和XML消息的RFID中间件来构建的仓库管理系统。
关键词:RFID中间件

引言

射频识别是一种非接触式的自动识别技术。现在RFID技术应用的范围遍及制造、物流、医疗、运输、零售、国防等.也成了广大企业考虑引入的重大策略技术之一,然而企业在选用RFID系统的时候.不同厂商生产的RFID产品具有不同的编程接口.现有的软件组件如何同RnD系统相结合.成为企业成功应用RFID系统的瓶颈和障碍。而中间件(Middleware)可以隐藏底层不同厂商生成的读写器提供的不同的内部API.提供统一编程接口.使各种系统之间可以互操作.从而加速关键应用的问世.可称为是RFID运作的中枢。本文主要针对如何封装底层设备不同的编程接口问题 使用Agents作为设备代理 提供统一编程界面.设备之间通过XML消息进行交互 使得设备或软件彼此之问可以相互操作.从而设计实现了一套使用代理和XML消息的RnD中间件。

1.关键技术

1.1 Agent
在开发RnD应用中.涉及到不同厂商的RFID读写器、标签打印机等产品.还要考虑到与其他系统的结合.例如与视频监控系统、现有企业ERP、SCM 系统的结合:要围绕数据库来保存和读取信息.还要提供可视化图形界面给用户。如何对RFID应用中涉及到的这些产品、实体与系统进行建模.成为RnD中间件设计的重要问题。在本文中对这些概念进行统一建模.每种产品、实体与系统都作为一个Agent[1】,每个Agent负责自己所负责的产品、实体或系统的操作与交互。而对于外部应用则提供统一的编程接口.RFID应用开发基于Agents提供的编程接口进行开发。使得具体的应用逻辑与特定的底层设备、实体或系统无关。

图la为RnD中间件使用的代理类层次图.各派生子类ReaderAgent、PrinterAgent、BusinessAgent、CameraAgent、DBAgent和GUIAgent分别抽象了读写器、标签打印机、应用系统、摄像头、数据库和系统界面。Agent为代理基类.提供了统一的编程接口(如图lb所示):发布一种消息类型(Publish)、注册一种消息类~(Subscribe)、传送一则消息到指定地址(该操作会返回一则对应的消息,对应Send)、发送一则消息到指定地址(该操作不返回消息,对应P0st)和处理收到的消息(pro~esssmessage1。代理之间的不同主要体现在每个代理因抽象的实体不同而导致处理的消息种类不同以及对特定消息的处理方式不同.一种代理处理一组特定的消息类型。各派生子类都要针对其所抽象的实体.定义一组与该实体相关的特定的消息类型,并且在processnlessage函数中对这些消息进行处理。在Agent内部.有一个传输类(transport)来提供所有的通信功能.该传输类主要提供两种类型的通信功能:1)点对点方式,主要针对单一通信需求(例如发送一条命令打开读写器);2)多播方式-,主要针对有多个接受方的通信需求(例如一个读写器关闭.所有对读写器状态敏感的代理都将收到该消息)。在传输类在实现时有两种类型的套接字:l1UDP套接字(UDPSocket),用来处理点对点的单一通信方式;21多播套接字(MCSocket),用来处理多播通信功能.实现时各接收方首先注册到特定消息组。当有代理发布特定消息时,该多播套接字就将该消息发布到特定消息组里的各接收代理。无论是点对点方式或是多播方式.当代理接收到消息的时候。其内部的传输类会委托一个XML消息翻译类(XML Translator)来将收到的XML消息转换为特定的消息对象(parse函数完成该功能),以备代理处理该消息。

1.2 XML消息

RnD应用中涉及到的产品、实体与系统之间需要通信交互,以完成命令控制和数据交互,而不同的产品、系统有着不同的数据格式要求,而且通信机制和通信协议也不尽相同。统一各产品、实体或系统之问的交互数据格式和通信机制,对于R兀D
应用的快速开发具有重要的意义。文本使用XML消息[HI21来统一数据格式,在基于UDP/IP的网络环境中进行通信。有效地解决了数据格式和通信协议不一致的问题图2a为与读写器代理相关的一组消息.每种消息都包括消息头和消息体两部分,消息头消息包含在Message类里面,相应的消息体信息则包含在MessageBody类里面。每种特定的消息都有对应的MessageBody派生子类与之对应。Message类和MessageBody类都包含一个toXML0方法(如图2b所示)。用于将该消息转换为对应的XML字符串.转换后的XML字符串在网络中进行传输,在接收代理接收该XML字符串后,该代理使用
内部的XML翻译类来将该XML字符串转换为相应的消息类对象。为了使XML翻译类能够将各种消息对应的XML字符串转换为对应的消息类对象.各MessageBody派生子类须满足以下规定:1)在其构造器中设置”MessageType”字段以标示该特定消息的种类;2)为其每个属性XYZ都实现一个相应的setXYZO方法,该方法接收一个代表该属性值的字符串为参数.将该属性设置为相应的值。

以读写器为例说明代理之间如何通过XML消息进行交互首先要使用读写器的代理A构造一个DiscoveryRequest消息.调用该消息的toXML0方法,将该消息转换为XML字符串.之后通过多播方式将该XML字符串发送出去.读写器代理在收到该
消息文本之后,调用XML翻译类的parseO方法将该文本转换为相应的DiscoveryRequest消息.知道有代理在查询自己是否存在,于是构造一个AgentConneeted消息。经过同样的转换和传送过程将该消息传送至代理A.代理A于是想要知道该读写器的状态(开启或禁用),于是构造一个ReaderStatUSRequest消息传送到该读写器,读写器根据自己的状态构造相应的Reader()n和ReaderOf消息返回给代理A。

2.系统设计

图3表示了我中心正在开发实现的仓库管理系统的系统架构。其中,虚线部分显示了使用Agents和XML消息的RFID中间件的组成 通过使用读写器代理. 隐藏了SymbolXR400和OmmnV740读写器两者之问的编程接rj的差别。应用程序对读写器的操作与具体厂商的读写器编程接口无关.使得继续添加其他厂商的读写器变得简单:标签打印机代理也是如此:通过应用代理,使得RnD技术与现有的应用系统(如ERP、SCM 系统)实现无缝连接『31,应用代理为各应用系统提供所需的数据信息;数据库代理屏了各种不同的数据库管理系统的差别.提供统一的数据库操作接口.该仓储管理系统使用的是Microsoft SQL Server数据库管理系统:通过界面代理.实现了可视化界面对各种设备和应用组件的操作和通信:摄像头代理实现了视频图像的采集与摄像头操作.为仓储管理系统提供图像资料数据。各种设备与软件之间通过基于UDP/IP网络上传输的XML消息进行通信。

3.系统实现

图4是在基于代理和XML消息的RFID中问件的基础上开发实现的RHD仓储管理系统。该系统主要是针对企业生产实践中的产品出入库管理设计.用标签来标示各种实体。包括货架、叉车和操作员,在仓库门上布置了读写器,当操作员驾驶装载有货架的叉车通过仓库大门时.通过读写器读取到与操作员、叉车和货架相关的标签信息.之后查询数据库得到相应的实体信息.记录该次出入库操作,并辅助有摄像头作监控,记录出入库时的视频信息。出入库记录可用于之后与企业其他应用系统(ERP系统、scM系统等)结合,并产生出入库统计,与企业生产管理相结合。图4中的RFID仓储管理系统,可以用总控制台来控制各种设备.包括打开和关闭仓库大门上的读写器(可以是SymbolXR400或者OmronV740读写器)。添加和删除读写器;添加和删除标签打印机,控制标签打印机打印标签信息:连接和断开数据库,执行数据库奋询;开肩和关闭摄像头, 采集视频数据数据库面板中的具体数据库管理系统来管理相应的数据库. 本系统采用的Microsoft SQL Server数据库管理系统 读写器面板中包含现在已经启动的读写器列表,点击相应的渎写器. 可以设置该读写器的相应届性,包括记录标签的事件类型、记录标签的种类和读写器的读写周期,设置对读写器采集的标签数据是否过滤。标签打印机面板包括系统中已经启用的标签打印机.通过相应的控制面板可以完成相应的打印机操作。图4中没有摄像头面板,因为系统没有开启摄像头。该系统在已开发好的RHD中问件的基础上,开发实现只用了短短的一个星期。通过该系统实现,可以看到使用基于代理和XML消息的RHD 中间件可以快速的进行RFID应用系统的开发,节省了系统开发时间,降低了系统开发难度。

4 结语

本文通过使用Agents.很好地解决了不同的RF1D底层设备具有不同的编程接门对RFID应用系统开发难度的影响问题,使用设备代理,提供了统一编程界面。使用XML消息进行交互,使得不同设备具有不同的数据格式和通信协议、不同的软件组件要求不 形式的数据问题得到了有效的解决.使得设备或软件彼此之间可以相互操作。这套使用代理和XML消息的
RFID中问件.可以用于快速开发RnD应用系统.实现与现有系统的无缝连接,具有灵活性、可扩展性和容错性的特点。