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

RFID系统的组态管理软件设计

作者: 范文兵 陈燕 曹晓光
来源:微计算机信息
日期:2008-06-05 09:49:51
摘要:本文参考了国内外几个著名的组态软件产品,采用ActiveX技术开发RFID组态管理软件,不仅提高了软件的开发速度,也提高了软件的可维护性和可扩展性
引言 

随着技术不断革新,RFID产业已进入了成长期。如何将RFID技术同企业原有的信息系统进行无缝连接,已成为许多企业考虑的问题。组态软件能将众多常用功能组合在一起形成一个新的软件平台,用户只需在这个平台上进行二次开发即可,因此90年代以后,国内外推出了不少组态软件产品,有FIX、WinCC、组态王、MCGS等。但这些软件的通用性太强,不能满足RFID系统的一些特殊要求,因此需要针对RFID的特点开发专用于RFID系统的组态软件。 

本文参考了国内外几个著名的组态软件产品,采用ActiveX技术开发RFID组态管理软件,不仅提高了软件的开发速度,也提高了软件的可维护性和可扩展性。RFID组态管理软件能够将低层的RFID硬件和上层的应用软件很好的结合起来,通过人机交互,方便地构建RFID系统的监控现场和配置RFID读写器,从而监测和控制生产和流通的各个环节。 

1 RFID技术 

无线射频识别(Radio Frequency Identification,RFID)是二十世纪九十年代兴起的一项非接触的自动识别技术,它利用射频信号实现对静止或移动的物体或人员的自动识别。RFID具有数据可读写、信号穿透能力强、识别距离远、非接触、多标签同时识别、信息存储量大、保密性强等优点。近年来随着科学技术的进步,RFID在生产制造管理、物流配送管理、医药管理等领域得到广泛的应用。一般的RFID系统由硬件、软件和基本的数据格式与通信协议组成。硬件包含电子标签(Tag)、读写器(Reader)和天线三部分。RFID读写器通过天线与RFID电子标签进行无线通信,实现对标签识别码和内存数据的读出或写入操作。软件主要包括中间件应用平台和应用管理软件。中间件可屏蔽不同厂家的RFID读写器等硬件系统,实现不同硬件设备与不同应用软件系统的连接。RFID的数据格式定义了电子标签的数据存储格式,通信协议则主要包含了电子标签与读写器的数据传输协议。 

2 RFID组态管理软件的功能分析 

  (1)RFID组态管理软件的开发背景 

第一,标签和读写器之间有多种通信协议,目前已确定的标准就有ISO14443、ISO15693、ISO18000等,这造成了当前各厂商的读写器的型号有很多,在RFID系统中对RFID读写器进行配置时很不方便;第二,许多公司的RFID读写器配置软件和业务过程监控软件是两套软件,软件的利用率低。 

  (2)RFID组态管理软件的功能分析 

RFID组态管理软件基于Windows平台,通过人机交互,可快速构造和生成监控系统。它可支持不同型号RFID读写器的配置和管理,支持多个RFID读写器的同时访问。另外可提供生产流通过程的数据采集和信息管理。 

RFID组态管理软件的主要性能指标为:在中文Windows下运行;多任务,多线程;最多配置RFID读写器的数目为1000;监控界面完整显示时间不大于2秒;支持语音报警;支持报表生成。 

3 RFID组态管理软件的开发工具 

目前组态软件的开发多用Visual C++、Visual Basic和Delphi。在RFID的组态管理软件中采用VC++6.0。 VC++6.0是面向对象的编程语言,它提供的MFC类库很好地封装了Windows API函数,充分利用类的继承性、封装性、多态性,用户可方便的设计自己需要的类。另外VC对内存和硬件的操作较容易。 

数据库采用SQL Server 2000。SQL Server 2000完全运行于Microsoft的Windows操作环境下,是一个高性能的数据管理系统。SQL功能强大且操作简单,能够提供安全可靠的存储功能。利用VC提供的ADO、ODBC等接口可方便实现对SQL数据库的操作。 

4 RFID组态管理软件的功能实现及其关键技术 

    RFID组态管理软件采用模块化设计,模块与模块之间尽量独立,接口尽量简单。针对RFID组态管理软件的要求,将其划分为图形绘制模块、数据库管理模块、通信模块、其它模块(报警、报表等)。 



图1  软件体系结构图  


(1)  图形界面模块 

图形界面是人机交互的渠道。图形界面模块完成所有组态画面的绘制,是生成RFID读写器网络连接和业务过程监控画面的设计工具。监控系统运行时的各种界面都是在图形组态系统开发环境下生成的。 

图形界面的功能包括:①能够进行简单图形的绘制,如直线、任意形状的线条、文字等;②用户可设置图形的属性,如图形边线的颜色、线条的粗细、图形的填充色等;③用户对图形的操作,如移动位置、复制、任意缩放大小等;④可添加ActiveX控件;⑤完成所有的外部事件,如鼠标、键盘等的处理,可自动刷新屏幕来显示更新;⑥简单的动画处理。 

在RFID组态管理软件中,我们会经常对不同型号的RFID读写器进行配置,为了满足不同的需求,在图形界面模块中我们添加了RFID读写器控件的设计。ActiveX是基于组件对象模型的一种技术,将OLE技术和OCX技术融为一体。采用ActiveX技术开发RFID读写器控件,扩充了组态软件的功能,使配置读写器变得简单,软件升级更加方便。 

RFID读写器控件需完成的功能:串口操作(打开、关闭)、读写器初始化、标签操作(检测多张、连续检测单张、连续检测多张)、读取数据、写标签数据、写入AFI、写入DSFID、锁定AFI、锁定DSFID。 



     表1  RFID读写器控件的主要属性 

(2)数据库模块 

数据库是整个组态软件的核心部分。数据库模块提供对RFID读写器的数据的采集、存储和处理。为了提高数据库的读写速度,将数据库分为实时数据库和历史数据库两部分。实时数据库保存从RFID读写器读出的实时值,并定时将实时数据写入历史数据库中。历史数据库则完成历史报表的生成和历史信息的查询。 

在RFID组态管理软件中采用ADO标准数据库访问方式。ADO (ActiveX  Data  Objects,ActiveX数据对象)是Microsoft提出的应用程序接口(API),用以实现访问关系或非关系数据库中的数据。ADO是一种面向对象的编程接口,是对当前微软所支持的数据库进行操作的最有效和最简单直接的方法,是一种功能强大的数据访问编程模式。通过ADO接口,RFID组态管理软件能够很好地同企业的数据库相连,实现与企业原有信息系统的无缝连接。在VC++6.0中ADO接口的实现: 

pConn.CreateInstance(__uuidof(ADODB::Connection));//创建Connection对象 

pCommand.CreateInstance( __uuidof( ADODB::Command ) ); 

pRecordset.CreateInstance(__uuidof(ADODB::Recordset));//创建记录集对象 

pConn->ConnectionTimeout = 90; 

pConn->Mode = adModeReadWrite;//|adModeShareDenyNone; 

_bstr_t conn = "DSN=product;UID=sa;PWD=123456";//设置连接字符串,DSN值为企业数据库名称 

pConn->Open(conn, "", "", -1); 

(3)通信与数据处理模块  

由于人机界面要与多个RFID读写器及其它的I/O接口进行数据交换,提供实时监控的环境,所以对系统的并发能力有特别的要求。如果只采用单线程来进行处理,速度慢,会有明显的时间等待等问题,因此应采用多线程技术来满足实时监控的要求。 

在RFID组态管理软件中主要运用了三个线程:主线程、串行通信数据采集线程pRcvDataThread、数据存储线程pRcvBufThread。主线程为用户接口线程,由系统自动生成,负责系统的运行和信息的处理,使程序能迅速响应命令和其它事件。串行通信数据采集线程pRcvDataThread,为辅助线程,负责接收或发送数据,并按照通信协议对数据进行解析处理。数据存储线程RcvBufThread,为辅助线程,负责实时数据的存储,并定时将采样数据保存入库。 

int RFIDThread_ReceiveDevBuf(int nType); //当与RFID读写器通讯连接时,启动pRcvDataThread 



if(nType == 0)//启动 

    { 

            if(pRcvDataThread==NULL) 

        { 

            pRcvDataThread = AfxBeginThread(RFID_RcvThread, NULL); 

            pRcvDataThread->m_bAutoDelete = true; 

        } 

        Sleep(500); 

    } 

    else if(nType == 1)//停止 

    { 

        for(int i=0; i < m_nTotalDeviceNum; i++) 

            TerminateThread(pRcvDataThread[i],0); 

    } 

…… 

    return 0; 



UINT RFID_RcvThread(LPVOID lParam); //如果启动了pRcvDataThread,终端机上传数据,解析收到的数据 

UINT RFID_DealRcvBufThread(LPVOID pParam); //如果启动了pRcvBufThread,存储收到的数据 

(4)其它模块 

报表生成模块、报警模块和权限设置模块,这些模块的设计与普通软件设计大同小异,在此不再赘述。 

5 结束语 

本文作者创新点在于采用组态技术开发RFID系统管理软件,它将RFID读写器的配置软件和生产流通过程的监控软件合二为一,不仅能够方便地构建RFID系统现场,而且还能够将RFID技术与公司原有的信息系统进行无缝连接。另外采用ActiveX技术开发RFID读写器控件,能够方便的配置RFID读写器,使得公司的信息系统能够和新的RFID读写器连接起来,保证了软件的灵活性。RFID组态管理软件在存储RFID标签数据库、RFID读写器种类改变等情况发生时,只需少许修改便可完成设计软件的更新,实现新的需求,具有较强的实用性。 

参考文献: 

[1] http://www.rfidworld.com.cn/ 

[2]王亚民,陈青,刘畅生,王水平 编著. 组态软件设计与开发,西安电子科技大学出版社 2003 

[3] 游战清 李苏剑 等编著. 无线识别技术(RFID)理论与应用,电子工业出版社 2004 

[4] 李耀,李超良.组态软件架构的研究与设计.微计算机信息,2005,8:86-87