APP下载

工控组态软件实时数据库系统的开发与设计

2011-07-26侯立刚肖炎良

自动化仪表 2011年12期
关键词:数据库系统实时性组态

张 勇 侯立刚 肖炎良 周 翔

(辽宁石油化工大学信息与控制工程学院,辽宁 抚顺 113001)

0 引言

组态软件是工业控制系统中实现分散控制和集中管理的核心,而实时数据库又是组态软件的核心。实时数据库保存着系统运行时所产生的动态数据和系统正常运行所需的各种内部信息,各功能模块通过对实时数据库中数据的存取和处理来完成系统所要求的各种功能。同时,实时数据库也是联系图形系统、历史数据系统、报表系统和报警系统的桥梁和纽带[1]。实时数据库及时准确地获取现场数据是系统发挥作用的前提。鉴于商业性的原因,许多公司对实时数据库技术严加保密。因此,有必要深入探讨和研究实时数据库的核心技术,自行开发适用的实时数据库系统。

1 实时数据库系统概述

实时数据库系统是指其数据和事务都具有显式的定时特性或确定的定时限制的数据库系统,系统的正确性不仅依赖于事务的逻辑结果,而且依赖于该逻辑结果所产生的时间[2]。实时数据库系统的主要目标是使尽量多的事务在规定的时间内完成,而不是公平地分配系统资源,即系统宁可接收在时间限度内不准确的数据,也不接收超过时间限制的准确数据。实时数据库系统的研究内容包括实时数据库及其事务调度系统。总的来说,实时数据库系统具有以下几个特点:时间约束性、事务调度、数据存储的特殊性和数据的在线压缩。

①时间约束性。实时数据库的特点是在其数据和事务上都具有明确的时间限制,即其中的数据不仅要满足数据库的普通一致性,还要满足时间一致性。在实时系统中,具有时间约束的数据主要是外部现场动态变化的数据和由这些数据导出或衍生的数据。因此,可将数据的时间约束分为两类:数据的绝对一致性和数据的相互一致性。数据的绝对一致性是指实时数据库的数据与外部数据(即环境数据)相一致;相对一致性是要求从一组数据项导出另一组数据时,源数据项在时间上要尽量接近。

②事务调度。与传统数据库系统不同的是,为提高事务的吞吐率,实时数据库是为了达到使尽量多的事务在规定期限内完成而使用事务调度。实时数据库中的实时事务调度大部分是建立在事务的优先级之上的。因此,实时事务调度不仅要考虑事务的执行时间,还要考虑事务的截止时间和紧迫程度等。

③数据存储方式。由于实时数据库系统中存储和管理的数据具有实时性,因此其存储方式也有别于传统的数据库系统。在系统运行过程中,对实时性要求较高的数据应存于内存中,以实现读取速度快、实时性良好等特点,易于数据的共享与传递;对实时性要求不高的非共享数据和共享数据,可以存放于外存储空间。因此,在设计实时数据库时,需要妥善处理时间与存储空间之间的矛盾,以保证系统的实时性。

④数据在线压缩。在实际的数据存储中,实时数据库还要解决如何高效处理海量数据的问题。如果数据被原封不动地存储,势必需要大量内存和磁盘空间以及耗费大量的CPU时间。因此,必须对实时数据进行在线压缩存储[3]。

2 数据库的设计思想

2.1 数据的存储策略

由于传统数据库基本上都是面向事务的,它所使用的数据表示方法、存储模式和存取手段已不能满足工控组态软件对实时性的要求,因此有必要根据组态软件,对不同类型的数据所要求的响应速度和数据量的大小来定制存储策略。对于工业现场中每个采样周期都要更新、变化的实时性很强的数据,可以将这些数据存于内存数据库,这样就能满足数据存取速度快、存取灵活的要求;对工控软件并无特殊要求的非共享数据和共享数据,这些数据是非实时性要求的,可存放于外存数据库(如Access数据库等),并且可通过实时数据库提供的接口函数进行数据的操作;对需要长期保存的非共享数据,如采样值的数/模转换系数、控制组态值等,可用文件管理系统进行直接存取[4]。

综上所述,可通过使用外存数据库(Access数据库)、文件管理系统和内存数据库(实时数据库)等多种存取方式、多种存储介质相结合的方法存储数据,以保证数据的共享性和独立性。同时还能达到节约内存、保证系统响应速度的目的[5]。

2.2 数据库的功能模块

本文采用面向对象编程(object-oriented programming,OOP)技术,将实时数据库定义为类的形式,各功能模块通过对实时数据库的接口函数调用,实现与实时数据库的关联。

系统运行时按用户组态好的数据文件生成不同类型的实时数据类对象。这些类建立的对象分别对应于现场的每个实时量。由于实时量很多,为了能够方便地管理这些对象,完成对数据的各种操作管理,将管理程序的所有功能封装成一个专用的类Mdataunit,用Mdataunit类将这些实时数据库的各个对象聚集起来,以便管理。具体的聚集方法是:首先根据不同的数据类建立起不同的List链表,通过链表将这些不同的结构连接起来;然后把这些建立起来的链表作为Mdataunit的数据成员进行管理。现将实时数据库类的各操作函数定义为以下几个模块,如图1所示。

图1 实时数据库类Fig.1 Category of real-time database

部分实时数据库类的设计程序如下。

2.3 事务调度系统

实时数据库系统事务调度如图2所示。

图2 实时数据库系统事务调度Fig.2 Transaction scheduling of real-time database system

在组态软件系统进入运行环境时,还要进行现场数据采集、数据处理、图形显示和报警事务等操作,所有的事务要求并行处理。如果等待时间过长,将无法满足实时性要求,这就需要一个事务调度并按照事务的优先级统一调度,完成各事务的协调工作,以满足系统实时性要求[6]。为此,先建立三个优先级:实时数据请求类、趋势数据请求类和历史数据类。在进行调度时,根据先到先服务的原则将任务放置于不同的优先级队列中,然后以不同的优先级进行调度,在同一队列中采用时间片轮转算法实现服务先后。

时间片轮转法是一种经典的调度算法,其基本思想是将处理机的处理时间划分成一个个的时间片,就绪队列中的诸进程按所分配的时间片轮流使用处理机资源。进程调度程序总是选择就绪队列中的第一个进程,当进程分配的时间片用完时,这个进程就被强迫让出处理机,并且进入就绪队列的末尾重新排队,等待下一次调度。同时,进程调度又去选择就绪队列中的下一个进程,分配给它一个时间片,以投入运行。如此循环往复,实现实时调度各事务。

3 数据模型的建立

工业控制中的数据包括现场采集的数据、组态参数、计算数据、属性数据和控制数据等。这些数据既有模拟量、数字量,也有字符型量。本文选用VC++作为开发工具,利用面向对象技术,将实时数据库中的数据对象类分为模拟量、数字量和字符串三种,分别定义为模拟量类CAnalog、数字量类CDigital和字符串类CMystring。所有的类均派生自CObject类。CObject类是Windows系统下用于表示对象的最基本类,是一个抽象类。实时数据库定义的所有域都是相应实时数据库类的属性。此外,每种实时数据库类由特定的成员函数进行属性的处理。下面给出模拟量类定义的部分程序,其他类的定义基本相似。

4 动态链接库

为了节省内存、提高程序的执行效率,本文利用动态链接库(dynamic link library,DLL)和全局内存共享技术来建立系统运行时的实时数据库。动态链接库DLL是Windows中的一种特殊的程序单元,被称为非任务的可执行模块,它们由调用者的任务所驱动。动态链接是相对于静态链接来定义的,静态链接是由连接程序将静态连接库中的函数或资源在连接时拷贝给每个运行程序[7-8]。

在VC++6.0新建窗口中扩展生成DLL的VC程序框架,在生成的程序框架中定义动态链接库的数据结构后,把实时数据封装为一个类 CVariable-Database[8],它是 MFC 中的类 CDatabase的派生。所有数据库接口访问函数定义为类CVariableDatabase的成员函数。将CVariableDatabase类作为输出类,便于管理和维护。下面是动态链接库类的具体实现。

5 数据库接口

实时数据库接口是系统提供给用户的一个开放的接口规范,它允许用户利用该接口直接访问实时数据库。这就为用户开发输入输出接口驱动程序和用户算法模块提供了方便快捷的途径[9-10]。动态链接库中的类CVariableDatabase的实现,为数据库提供了一套实时数据库接口,用于实现用户与实时数据库之间的高速数据传递和对实时数据库的读写、查询和管理等功能。

由于系统直接利用这些接口函数实现和实时数据库的数据交换,因此,系统不但具有全面的开放性和二次开发的功能,且其实时性也大大优于其他数据交换协议。

6 结束语

组态软件中的实时数据库技术是当前较新的数据库研究方向,有很大的发展空间与潜力。本文采用面向对象的设计思想,将实时数据库的操作以类的方式实现,并且利用类的继承、派生和重载等特性提高程序质量;利用动态链接库和全局内存共享技术来建立系统实时数据库,并为用户提供一组接口函数实现数据库的访问,大大提高了实时数据库系统的实时性与开放性。

[1]王荃,金海东,李福中.工控组态软件实时数据库系统的设计与实现[J].化工自动化及仪表,2000,27(3):40 -43.

[2]王成光,苏宏业,褚健.石化企业大型实时数据库系统的结构设计[J].化工自动化及仪表,2002,29(5):7 -11.

[3]钱笑宇,张彦武.工业实时数据库的研究和设计[J].计算机工程,2005,31(5):98 -132.

[4]张会彦,周丽虹.新型构件化组态软件中实时数据库设计与实现[J].计算机应用于软件,2009,26(7):153 -174.

[5]杨华丽,石锐,胡捷,等.组态软件中实时数据库系统的设计和实现[J].实验技术与管理,2007,24(3):80 -83.

[6]宋清昆,孙元娜,王学伟,等.组态软件实时数据库系统的设计[J].计算机应用,2008,27(1):55 -57.

[7]阚宏进,刘希远,李翠玲.基于VC++工控组态软件实时数据库系统的设计[J].甘肃工业大学学报,2001,27(4):73 -76.

[8]孙鑫,余安萍.VC++深入详解[M].北京:电子工业出版社,2006.

[9]杨立保,许忠仁.组态软件实时数据库的研究与设计[J].自动化仪表,2009,30(8):19 -21.

[10]姜军银,侯立刚.基于COM技术的通用数据库存取组件的设计[J].辽宁石油化工大学学报,2005,25(1):75-77.

猜你喜欢

数据库系统实时性组态
基于PLC及组态技术的恒温控制系统开发探讨
Oracle数据库系统的性能优化研究
基于PLC和组态的智能电动拧紧系统
微细铣削工艺数据库系统设计与开发
江苏省ETC数据库系统改造升级方案探讨
航空电子AFDX与AVB传输实时性抗干扰对比
计算机控制系统实时性的提高策略
铸造行业三维组态软件的应用
基于PLC和组态的新型回转类测试设备的研制
一种车载Profibus总线系统的实时性分析