组态软件实时数据库的研究与设计*

2015-11-02 00:34卢玉奎胡卫喜
关键词:组态车载服务器

卢玉奎,胡卫喜

(1.河北石家庄以岭药业,河北石家庄050035;2.重庆邮电大学软件工程学院,重庆400065)

应急通信车控制系统组态软件[1,2]是实现应急通信车车载设备集中监控、管理的核心。其中,应急通信车控制系统组态软件中数据处理和管理的核心是实时数据库[3,4]。作为组态软件的关键技术,应急通信车[5,6]控制系统组态软件,对于各组态软件商业公司来说,都是需要严格保密的。对应急通信车控制系统组态软件的实时数据库的研究与设计,十分关键。实时数据库是应急通信车控制系统组态软件的数据处理中心,是传统数据库管理系统与实时系统的无缝集成。本文提出了一种基于OPC标准和SQLite嵌入式数据库的实时数据库的设计思想,并将其应用到应急通信车控制系统组态软件中。目前许多硬件设备厂商都提供了标准OPC接口,利用OPC标准接口可以解决设备驱动程序开发中的异构问题;而SQLite嵌入式数据库具有占用空间小、处理速度开、开源等优点。

1 相关理论基础

1.1 OPC 简介

OPC(OLE for Process Control,OLE是Object Linking and Embedding缩写)属于工业标准,OPC定义了基于微软平台的PC客户端应用程序交换实时数据的一种方法[7]。为了改善过程控制工业中自动化和控制系统、设备/现场系统、以及办公/商业应用系统之间互操作性,建立的一套标准的OLE/COM/DCOM接口协议。协议OPC定义了用于服务器间交换实时信息的标准的对象、方法和属性。

1.2 SQLite 数据库

SQLite是一款开源的、轻量级的、嵌入式、关系型数据库。它在2000年由D.Richard Hipp发布,可以支持 Java、PHP、Ruby、Python、C、C#等几乎所有的现代编程语言,支持 Windows、Linux、Unix、Mac OS、Android 等几乎所有的主流操作系统。SQLite设计目标是嵌入式产品,因此SQLite占用非常低的内存资源,一般只需要几百KB就够了。相对于其他开源数据库,Mysql和PostgreSQL,SQLite的处理速度更快[8]。

2 实时数据库设计方法

实时数据库是应急通信车控制系统组态软件的数据处理中心,为用户提供应急通信车车载设备运行过程中的数据信息,同时将过期的数据存储归档。实时数据库包括实时数据采集模块、数据信息解析模块、设备信息描述模块、数据处理模块、缓存模块和历史数据库模块。实时数据库各个模块之间相互协调工作,实时高效地完成车载设备监控流程。其中,实时数据库系统的结构,如图1所示。

(1)实时数据采集模块。该模块负责采集车载设备运行过程中产生的实时数据,由于车载设备由不同设备厂商提供,因此,应急通信车控制系统在采集车载设备实时数据时,针对不同厂商的设备,需要开发相应的I/O驱动程序,导致实时数据库与车载设备之间的互操作性较差,同时增加了系统开发成本。本文中采用OPC标准,把车载设备看成是一个个OPC服务器,只需要开发OPC客户端程序,就可以完成车载设备实时数据的采集。实时数据采集模块从车载设备采集数据后,交由数据信息解析模块。

(2)数据信息解析模块。理论上,从车载设备采集来的数据信息都有其具体的含义,这里的具体含义是在监控界面组态过程中定义的,如UPS设备的电压、电流、功率等等。但是采集来的数据信息实际上并非如此,对于实时数据采集模块来说,它们仅仅是一系列的数字,并没有任何意义。因此,需要将采集的数据信息进行解析,解析成设备信息描述模块中设备对象的属性,真正意思上把数据信息的具体含义描述出来。

(3)设备信息描述模块。该模块是其它模块的基础,实时数据库中其它子模块基本上都会使用到该模块。例如,缓存模块用它来构建缓存的数据结构,而数据信息解析模块通过使用它,把从车载设备采集的数据封装成一个一个设备信息对象,数据处理模块则根据它提供的信息,选择不同的数据压缩算法对数据进行压缩处理。

图1 实时数据库结构图

(4)缓存模块。在监控过程中,由于数据采集频率往往比监控界面要求的频率要高,这就导致了两个过程频率不一致问题,采用缓存机制,将会较好的解决这一问题。当通信接口以相对较高频率采集来自车载设备的数据信息,然后将数据信息存入缓存模块中,然后监控界面以相对较低的频率从缓存模块中读取数据并显示。当缓存模块中存储的数据信息超出了缓存的容量时,把过时的数据传送给数据处理模块。

(5)数据处理模块。数据处理模块是缓存模块和历史数据库SQLite的桥梁,它负责压缩来至缓存模块的数据,然后把数据存入历史数据库SQLite中。

(6)历史数据库模块。存储过时的车载设备数据信息。

3 实时数据库的实现

3.1 实时数据采集模块设计

(1)连接OPC服务器。连接OPC服务器,需要两个参数,一个是OPC服务器名称,另一个是OPC服务器所在计算机的名称,然后调用服务器连接函数即可,连接函数代码如下:

MyServer.Connect(localServerName,localServerIP);

当需要连接不同的OPC服务器时,只需要改变OPC服务器名称和OPC服务器所在计算机名称即可。

(2)创建组(Group):在创建组(Group)时,不但要设置组(Group)相关的属性(激活属性、更新频率等),还需要添加数据变化(DataChange)事件,其具体代码如下:

//添加一个名为“GROUP”的组

MyGroups=MyServer.OPCGroups;

MyGroup=MyGroups.Add("GROUP");

//设置组的属性

SetGroupProperty();

//添加数据变化事件,在服务器端有数据变化时发生

MyGroup.DataChange+=new DIOPCGroupEvent_DataChangeEventHandler(MyGroup_DataChange);

//添加DataChange的回调事件

MyGroup.AsyncReadComplete+=new DIOPCGroupEvent_AsyncReadCompleteEventHandler(MyGroup_AsyncReadComplete);

(3)添加项(Item)。在添加项时,需要启动组的数据订阅功能,否则DataChange事件将不会被触发,其具体代码如下:

MyItems=MyGroup.OPCItems;

MyGroup.IsSubscribed=true;

(4)数据的读写。数据的读是通过组的数据变化事件触发来实现的,在本文中,数据的读取采用的是异步读取方式。利用C#事件处理机制,把DataChange注册到事件,一旦服务器端有数据变化,就触发该事件,其具体代码如下:

void MyGroup_DataChange(int TransactionID,int NumItems,ref Array ClientHandles,ref Array ItemValues,ref Array Qualities,ref Array TimeStamps)

(5)断开OPC服务器。当系统不需要使用OPC读写数据时,这时需要释放OPC客户端连接后占用的服务器资源,其具体代码如下:

//删除所有组资源

MyGroup.RemoveAll();

//断开服务器连接

MyServer.Disconnect();

3.2 设备信息解析模块设计

数据信息解析模块主要负责把从车载设备采集来的数据信息,按设备信息模块描述的车载设备属性进行解析。本系统中设计了EquipmentInfoParsing类,用于对采集的车载设备数据信息进行解析。

3.3 设备信息描述模块设计

在设备信息描述模块中,设计了3个类:EquipmentInfo类、EquipmentPropertyInfo类、EquipmentManage类。其中类EquipmentInfo用于描述车载设备资源;类EquipmentPropertyInfo用于描述车载设备的属性特性;类EquipmentManage用于向其它模块提供服务,如获取车载设备的各种信息,初始化系统的各种设备信息等。设备信息描述模块的UML图如图2所示。

图2 设备信息描述模块UML图

3.4 缓存模块设计

缓存模块负责存储实时数据。在设计缓存模块的存储结构时,借鉴了计算机网络中的数据帧的思想,把数据信息解析模块传送过来的数据信息封装成一帧,存入缓存中,在缓存模块中,建了一个双向链表来管理这些帧,每一帧就相当于双向链表中的一个节点。在缓存模块中,主要包含3个类:Cache类、CacheFactory类、CacheFrame类。其中Cache类是核心,主要实现两大功能,一是负责向监控系统提供实时数据,二是向数据处理模块提供过时数据;CacheFactory类则用来初始化缓存模块的基本信息和提供Cache实例;CacheFrame类是双向链表的节点类,它每一个实例代表一帧。这3个类的类关系如图3所示。

3.5 数据处理模块设计

通过对应急通信车控制系统组态软件历史数据的分析,可以将历史数据大致分为两大类:开关量和模拟量。其中开关量的压缩采用行程长度压缩算法[9],模拟量采用一种改进的旋转门压缩算法,改进后的旋转门压缩算法具有自动调整压缩偏移量E和检测噪声数据点并消除。

3.6 历史数据库模块设计

由于内存的限制,实时数据库不能永久地保存数据信心。本系统采用SQL技术,将实时数据库中过时的数据,经过数据处理模块处理后,存入SQLite数据库中。

图3 缓存模块UML图

4 结论

实时数据库是应急通信车系统组态软件实时监控的关键部分。采用数据库构建的实时数据库系统能满足组态软件对实时性的要求,快速访问内存的特性使数据可以在规定时间内完成与底层监控设备的通讯,及时将数据送往用户界面。采用实时数据库,也可以降低系统组态软件成本。另外,经过压缩后再存储的数据,降低了数据存储的空间要求。

[1]周文军.基于单片机和组态软件的多路抢答器研究[J].广西民族大学学报:自然科学版,2015,21(1):77-82

[2]吕易光,钱冠华,李长武.基于组态软件的地下水数据采集系统研究[J].自动化技术与应用,2015,34(1):76-79

[3]王克亮.监控组态软件的相关技术发展趋势[J].电子技术,2015(2):185-185

[4]刘红霞,徐磊.组态软件中实时数据库系统的研究与实现[J].计算机应用,2014(5):40-44

[5]文铎.应急通信车TD-LTE改造关键技术研究[J].信息通信,2014(10):184-185

[6]王佳红.应急通信车整体方案设计原则浅析[J].技术论坛,2011(6):58-60

[7]CHISHOLM A.A Technical Overview of the OPC Data Access Interfaces[J].ISA TECH EXPO TECHNOLOGY UPDATE,1998(2):63-72

[8]苟列红,李学春.RLE压缩算法的分析及应用[J].现代计算机,1997,57(4):22-24

[9]BRISTOL E H.Swinging Door Trending:Adaptive Trend Recording[C].ISA Naiontal Conference Proceeding,1990,45:749-753

猜你喜欢
组态车载服务器
一种车载可折叠宿营住房
基于PLC及组态技术的恒温控制系统开发探讨
高速磁浮车载运行控制系统综述
通信控制服务器(CCS)维护终端的设计与实现
PowerTCP Server Tool
奔驰S级48V车载电气系统(下)
基于PLC和组态的智能电动拧紧系统
智能互联势不可挡 车载存储需求爆发
得形忘意的服务器标准
计算机网络安全服务器入侵与防御