《先进控制软件系统实时数据库的设计.docx》由会员分享,可在线阅读,更多相关《先进控制软件系统实时数据库的设计.docx(13页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、先进控制软件系统实时数据库的设计近年度来,DCS集散控制系统以其强大的控制功能、可靠的平安性能和良好的可移植性在国内外工控领域获得广泛的应用,DCS的日益普及为实现先进控制、实时优化等新技术提供了强有力的硬件支持和保障。先进控制除了具有改善控制性能、进步经济效益等主要功能外,也是深度开发和利用DCS资源、进步企业自动化和治理程度的重要途径。先进控制软件的设计一般分为几个模块:模型辨识器、多变量预估控制器、鲁棒PID控制器含各种中间控制器、实时数据库、工艺计算包等,其中实时数据库模块是其他模块的纽带和桥梁。所以,实时数据库模块设计的好坏直接影响到先进控制软件设计的成败。实时数据库是先进控制软件系
2、统的重要组成局部,也是设计的难点之一。实时数据库是先进控制软件系统的数据处理中心。在先进控制系统投用运行环境时,工业现场的消费状况将实时地反映在变量的数值中,操纵者在计算机前发布的指令也要迅速送达消费现场,所有这一切都是以实时数据库为中介环节。同时,实时数据库又是事务调度中心,数据收集事务、图形显示事务、报警事务、历史数据存盘事务等等都由实时数据库统一调配,进而到达控制的实时性。1实时数据库概述在引入实时数据库概念之前,先介绍一下数据对象。在先进控制软件设计中定义的数据不同于传统意义的数据或者变量,它不只包含了变量的数值特征,还将与数据相关的其它属性如数据的状态、报警限值等和对数据的操纵方法如
3、存盘处理、报警处理等封装在一起,作为一个整体,以对象的形式提供效劳。这种把数值、属性和方法定义成一体的数据称为数据对象。在设计中,用数据对象来表述系统中的实时数据,用对象变量代替传统意义的值变量。用数据库技术治理的所有数据对象的集合称为实时数据库,实时数据库提供治理、刷新、查询数据对象等操纵。实时数据库与普通商用数据库不同,实时数据库的主要目的是使尽量多的事务在规定的时间要求内完成,而不是公平地分配系统以使所有的事务都得到执行。它有以下几个特点:1时间约束实时数据库系统的主要特征是在数据对象和事务上施加了时间约束。对数据的时间约束,就是在数据库的普通一致性要求以外,又规定了时态一致性要求。在实
4、时系统中,具有时间约束的数据主要来自于外部的动态数据,如由传感器收集的现场数据,和由这些数据导出的数据。因此,可将数据的时间约束分为两类,即数据的绝对一致性和数据的相对一致性。数据的绝对一致性是指实时数据库中的数据应与外部数据又称为环境数据相一致,即要求数据库中的数据能及时地反映外部环境的状态。例如,在化工经过控制系统中,要求数据库中记录的塔的温度、压力等信息,与塔的实际的温度、压力等参数保持一致。这种一致性的破坏有时可能会导致灾难性的后果。在实时系统中,经常需要从一组数据项导出另外的数据,例如,根据系统的电流、电压导出系统的功率。此时往往要求用来导出新数据的一组数据在时间上应尽量接近,这就形
5、成了实时数据库系统中数据的相对一致性概念。2事务调度传统数据库系统中,事务调度的目的是进步系统对事务的吞吐率,但实时数据库系统那么要求能使尽量多的事务在其期限内完成。因此,实时势务的调度与传统数据库系统中的事务调度是有差异的。大多数的实时势务调度策略都是围绕事务的优先级进展的。3实时数据库的实时数据存储治理实时数据库主要承当系统所有实时数据的存储和治理,为相关的功能提供快速、正确的实时信息,因此,对实时数据库来讲,其实时性是第一位的,考虑到这一点,实时数据库在系统运行经过中,应占用空间小,并常驻内存,以保证数据库读取速度快,存取灵敏,易于各功能模块之间的数据分享。实时数据库的数据分享采用内存文
6、件映射来实现。对于那些实时性要求不高的非分享数据和分享数据,如采样值的转换系数等可以放在外存储空间。因此,在实时数据库设计时,要妥善处理时间和存储空间之间的矛盾,以保证先进控制系统的实时性。2实时数据库的分析与设计首先从功能角度分析实时数据库的设计。1实时数据库系统的功能分析:现场数据收集:实时数据库提供了与典型数据源的接口,读写通讯设备存放器的现场值,送到开拓的内存缓冲区。预处理机制:可以直接在实时数据库中对原始数据进展处理,如数据转化。滚动存储机制:实时数据库的各数据对象以链表形式存放在内存中,故数据库的容量相对容固定,当新的数据产生时,自动更新数据对象的现场值属性。自动更新机制:当实时数
7、据库中的数据对象现场值属性改变时,自动启动线程,更新显示画面的数据显示,如需存盘,存入Access数据库中,实现实时监控。触发和定时机制:提供丰富的触发和定时机制,供各类数据处理、先进控制和优化算法使用,以保证数据的实时性、有效性、一致性。补偿机制:当不能保证连续运行时如系统备份,需要提供相应的补偿机制,以保证数据不会丧失。数据检索机制:可以以类似于关系型数据库的方式检索实时数据库中的数据对象,获得所需的数据对象属性或者操纵。态汇总机制:实时数据库提供了报警状态、操纵事件等信息的动态汇总功能。2实时数据库事务调度分析在先进控制软件系统投入运行后,同时要进展与DCS数据收集、数据处理、图形显示刷
8、新、历史数据存盘、紧急事件报警或者越位报警等等,所有的这些事务,都要并行处理,如等待时间太长,无法知足实时性的要求。这样就要求我们实现一种并行编程,在只有一个CPU的机器上,也就是要将该CPU时间按照一定的优先准那么分配给各个事件,定期处理某一事件而不会在某一事件处理过长,在32位Windows98或者WindowsNT4.0下,用多线程的编程技术来实现这种并行编程,实时调度各事务。3实时数据库的设计以面向对象编程OOP的设计技术,将实时数据库定义为类的形式。如图2所示,将实时数据库类定义的与各图形显示模块、历史数据存盘模块等相联络的接口函数划分为几个模块加以讲明:实时数据库初始化模块:该模块
9、主要是根据先进控制所需要的数据创立各数据对象,以链表作为存储方式,并建立各数据对象对应的对象名索引,以进步访问数据对象的访问速度,同时建立Access历史数据库。根本操纵模块:提供数据对象的根本操纵,如通过数据对象名或者ID获得数据对象的其他属性或者通过名称获得数据对象的ID等等。读写数据操纵模块:提供数据对象的读写数据操纵,将存放在数据缓冲区的现场值写入实时数据库的数据对象的现场值属性中去,读取数据对象中的当前值。3通讯设备读写操纵模块:治理通讯设备,读取设备的当前工作状态,对指定的设备进展操纵。窗口操纵模块:读取用户窗口的名称,对指定的用户窗口进展操纵,读取用户窗口的当前状态。报警操纵模块
10、:存储报警信息,读取数据对象的报警限值。存盘操纵模块:在Access数据库中存储需要存盘的数据。3实时数据库的实现实时数据库中的数据对象类的定义:数据对象分为模拟量、开关量、字符串三个类型,下面重点介绍模拟量类的定义,并给出局部VC+代码,其他类的定义与此类似,在此不做介绍。/模拟量的类定义:classAnalogType:publicCObjectpublic:AnalogType;virtualAnalogType;private:/根本属性操纵参数CStringObjectName;/对象名floatObjectInivalue;/初始值floatObjectMinvalue;/最小值f
11、loatObjectMaxvalue;/最大值CStringObjectUnit;/对象的工程单位intObjectPointN;/小数位数/存盘操纵参数BOOLIsSave;/是否存盘intSaveTime;/存盘时间/报警操纵参数BOOLIsAlarm/是否报警intAlarmPriority;/优先级floatLowLowvalue;/低低报警floatLowvalue;/低报警floatHeighHeighvalue;/高高报警floatHeighvalue;/高报警floatLowDevvalue;/低偏向报警值floatHeighDevvalue;/高偏向报警值intFieldva
12、lueInt;/现场的实时整型值floatFieldvalueFloat;/现场的实时模拟值/定义数据操纵public:/定义属性的输入接口提供初始化操纵voidSetObjectNameCStringnameObjectName=name;voidSetObjectInivaluefloatinivalueObjectInivalue=inivalue;voidSetObjectMinvaluefloatminvalueObjectMinvalue=minvalue;voidSetObjectMaxvaluefloatmaxvalueObjectMaxvalue=maxvalue;voidS
13、etObjectUnitCStringunitObjectUnit=unit;/定义输出接口,提供应根本数据操纵和存盘、报警操纵CStringGetObjectNamereturnObjectName;floatGetObjectInivaluereturnObjectInivalue;floatGetObjectMinvaluereturnObjectMinvalue;floatGetObjectMaxvaluereturnObjectMaxvalue;CStringGetObjectUnitreturnObjectUnit;/现场的实时值操纵voidSetFieldvaluefloatva
14、luefieldFieldvalue=valuefield;floatGetFieldvaluereturnFieldvalue;实时数据库类的设计,用VC+声明的头文件如下:classRealDB:publicCObjectprivate:AnalogTypeTemAnalog;SwitchTypeTemSwitch;POSITIONtemposition;intDataNum;private:/创立Access历史数据库和表BOOLCreateNewTable;BOOLCreateHistoryAlarmDB;BOOLCreateHistoryObjectTable;public:CDao
15、TableDefm_newtable;CDatabasem_dataobject;CObListm_listdata;/数据对象的链表CStringIndexTag200;/定义最大数据对象个数200intAnalogSwitchSign;/定义模拟和开关型的分割位置public:RealDB;virtualRealDB;BOOLCreateDataObject;/创立数据对象/数据对象的根本操纵BOOLGetProFromNameCStringName,intType,floatInitV,CStringUnit,floatMaxV,floatMinV,intPointN;BOOLGetPr
16、oFromIDintid,CStringName,intType,floatInitV,CStringUnit,floatMaxV,floatMinV,intPointN;intGetIDFromDataNameCStringdataname;/通过标记名获得ID号CStringGetDataNameFromIDintid;/通过ID获得数据对象的名称intGetDataTypeCStringName;intGetAlmDataNameCStringname200;/报警数据对象集合intGetSaveDataNameCStringalarmname200;/保存数据对象的集合/数据对象的现场
17、值读写操纵BOOLGetvalueFromNameCStringname,floatvalue;/通过标记名获得现场值BOOLSetvalueFromNameCStringname,floatvalue;/通过标记名将现场值写入数据对象中BOOLGetvalueFromIDintid,floatvalue;/通过ID号获得现场值BOOLSetvalueFromIDintid,floatvalue;/通过ID号写入现场值BOOLGetvalueArrayFromIDintNum,intid,floatvalue;/成组读取数据对象的现场值BOOLSetvalueArrayFromIDintNum,intid,floatvalue;/成组写入数据对象的现场值4完毕语实时数据库设计是先进控制软件设计的重要组成局部,是难点局部,本文通过对实时数据库的概述和分析,阐述了实时数据库模块的实现方法,以面向对象的编程方式给出了定义类的局部代码。实时数据库系统复杂,由于篇幅有限,本文没有逐一具体讲明。笔者所开发的实时数据库可以与已经开发的先进控制软件连接起来,已经在实验室调试通过,还有一些工作如实时数据库治理系统、实时数据库接口等也正在进展。
限制150内