版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、WORD7/7先进控制软件系统实时数据库的设计周东球收稿日期:2003-2-14 修稿日期:2003-4-8作者简介:周东球(1975-),男(汉族),湖北麻城人,助理工程师,在读硕士研究生,从事先进过程控制与其软件开发等科研工作。* 通讯联系人 杜殿林左信(石油大学自动化研究所,昌平102249)摘要:实时数据库是先进控制软件系统的重要组成部分,也是设计先进控制软件系统的难点之一,本文结合作者从事先进控制软件系统实时数据库模块设计开发的实际经验,介绍了基于VC+6.0实时数据库模块的设计思想和实现方法,并给出了部分实现代码。关键词: 实时数据库;数据对象;实时调度 ;多线程中图分类号:TP3
2、11.311 文献标识码:ADesign of Real-Time Database of Advanced Process ControlSoftware SystemZhou,Dongqiu Du,Dianlin Zuo,Xin(Research Institute of Automation,University of Petroleum,Beijing. 102249, China)Abstract:The real-time database, as the important part of advanced process control software system, is
3、also one of the most difficult sections to be designed. In this paper, how to design and realize real-time database with VC+ is introduced, on the basis of the authors practical experience in the research field. In addition, part of source codesare provided。Key words: Real-time database; Data object
4、;Real-time schedule;Multithreading0 前言近年来,DCS(集散控制系统)以其强大的控制功能、可靠的安全性能和良好的可移植性在国外工控领域获得广泛的应用 1 ,DCS的日益普与为实现先进控制、实时优化等新技术提供了强有力的硬件支持和保障。先进控制除了具有改善控制性能、提高经济效益等主要功能外,也是深度开发和利用DCS资源、提高企业自动化和管理水平的重要途径。 2 先进控制软件的设计一般分为几个模块:模型辨识器、多变量预估控制器、鲁棒PID控制器(含各种中间控制器)、实时数据库、工艺计算包等3,其中实时数据库模块是其他模块的纽带和桥梁。所以,实时数据库模块设计的好
5、坏直接影响到先进控制软件设计的成败。实时数据库是先进控制软件系统的重要组成部分,也是设计的难点之一。实时数据库是先进控制软件系统的数据处理中心。在先进控制系统投用运行环境时,工业现场的生产状况将实时地反映在变量的数值中,操作者在计算机前发布的指令也要迅速送达生产现场,所有这一切都是以实时数据库为中介环节。同时,实时数据库又是事务调度中心,数据采集事务、图形显示事务、报警事务、历史数据存盘事务等等都由实时数据库统一调配,从而达到控制的实时性。1 实时数据库概述在引入实时数据库概念之前,先介绍一下数据对象。在先进控制软件设计中定义的数据不同于传统意义的数据或变量,它不只包含了变量的数值特征,还将与
6、数据相关的其它属性(如数据的状态、报警限值等)以与对数据的操作方法(如存盘处理、报警处理等)封装在一起,作为一个整体,以对象的形式提供服务。这种把数值、属性和方法定义成一体的数据称为数据对象。在设计中,用数据对象来表述系统中的实时数据,用对象变量代替传统意义的值变量。用数据库技术管理的所有数据对象的集合称为实时数据库,实时数据库提供管理、刷新、查询数据对象等操作。实时数据库与普通商用数据库不同,实时数据库的主要目标是使尽量多的事务在规定的时间要求完成,而不是公平地分配系统以使所有的事务都得到执行。它有以下几个特点:1)时间约束实时数据库系统的主要特征是在数据对象和事务上施加了时间约束。对数据的
7、时间约束,就是在数据库的普通一致性要求以外,又规定了时态一致性要求。在实时系统中,具有时间约束的数据主要来自于外部的动态数据,如由传感器采集的现场数据,和由这些数据导出的数据。因此,可将数据的时间约束分为两类,即数据的绝对一致性和数据的相对一致性。数据的绝对一致性是指实时数据库中的数据应与外部数据(又称为环境数据)相一致,即要求数据库中的数据能与时地反映外部环境的状态。例如,在化工过程控制系统中,要求数据库中记录的塔的温度、压力等信息,与塔的实际的温度、压力等参数保持一致。这种一致性的破坏有时可能会导致灾难性的后果。在实时系统中,常常需要从一组数据项导出另外的数据,例如,根据系统的电流、电压导
8、出系统的功率。此时往往要求用来导出新数据的一组数据在时间上应尽量接近,这就形成了实时数据库系统中数据的相对一致性概念。2)事务调度传统数据库系统中,事务调度的目标是提高系统对事务的吞吐率,但实时数据库系统则要求能使尽量多的事务在其期限完成。因此,实时事务的调度与传统数据库系统中的事务调度是有差别的。大多数的实时事务调度策略都是围绕事务的优先级进行的。3)实时数据库的实时数据存储管理 实时数据库主要承担系统所有实时数据的存储和管理,为相关的功能提供快速、正确的实时信息,因此,对实时数据库来说,其实时性是第一位的,考虑到这一点,实时数据库在系统运行过程中,应占用空间小,并常驻存,以保证数据库读取速
9、度快,存取灵活,易于各功能模块之间的数据共享。4实时数据库的数据共享采用存文件映射来实现。 对于那些实时性要求不高的非共享数据和共享数据,如采样值的转换系数等可以放在外存储空间。因此,在实时数据库设计时,要妥善处理时间和存储空间之间的矛盾,以保证先进控制系统的实时性。2 实时数据库的分析与设计首先从功能角度分析实时数据库的设计。1)实时数据库系统的功能分析:现场数据采集:实时数据库提供了与典型数据源的接口,读写通讯设备寄存器的现场值,送到开辟的存缓冲区。预处理机制:可以直接在实时数据库中对原始数据进行处理,如数据转化。滚动存储机制:实时数据库的各数据对象以链表形式存放在存中,故数据库的容量相对
10、容固定,当新的数据产生时,自动更新数据对象的现场值属性。自动更新机制:当实时数据库中的数据对象现场值属性改变时,自动启动线程,更新显示画面的数据显示,如需存盘,存入Access数据库中,实现实时监控。 触发和定时机制:提供丰富的触发和定时机制,供各类数据处理、先进控制和优化算法使用,以保证数据的实时性、有效性、一致性。 补偿机制:当不能保证连续运行时(如系统备份),需要提供相应的补偿机制,以保证数据不会丢失。数据检索机制:可以以类似于关系型数据库的方式检索实时数据库中的数据对象,取得所需的数据对象属性或操作。动态汇总机制:实时数据库提供了报警状态、操作事件等信息的动态汇总功能。2)实时数据库事
11、务调度分析在先进控制软件系统投入运行后,同时要进行与DCS数据采集、数据处理、图形显示刷新、历史数据存盘、紧急事件报警或越位报警等等,所有的这些事务,都要并行处理,如等待时间太长,无法满足实时性的要求。这样就要求我们实现一种并行编程,在只有一个CPU的机器上,也就是要将该CPU时间按照一定的优先准则分配给各个事件,定期处理某一事件而不会在某一事件处理过长,在32位Windows98或WindowsNT4.0下,用多线程的编程技术来实现这种并行编程,实时调度各事务。分析如下图:图1 实时数据库事务调度图3)实时数据库的设计以面向对象编程(OOP)的设计技术,将实时数据库定义为类的形式。如图2所示
12、,将实时数据库类定义的与各图形显示模块、历史数据存盘模块等相联系的接口函数划分为几个模块加以说明:实时数据库初始化模块:该模块主要是根据先进控制所需要的数据创建各数据对象,以链表作为存储方式,并建立各数据对象对应的对象名索引,以提高访问数据对象的访问速度,同时建立Access历史数据库。基本操作模块:提供数据对象的基本操作,如通过数据对象名或ID取得数据对象的其他属性或通过名称取得数据对象的ID等等。读写数据操作模块:提供数据对象的读写数据操作,将存放在数据缓冲区的现场值写入实时数据库的数据对象的现场值属性中去,读取数据对象中的当前值。图2:实时数据库模块的结构图通讯设备读写操作模块:管理通讯
13、设备,读取设备的当前工作状态,对指定的设备进行操作。窗口操作模块:读取用户窗口的名称,对指定的用户窗口进行操作,读取用户窗口的当前状态。报警操作模块:存储报警信息,读取数据对象的报警限值。存盘操作模块:在Access数据库中存储需要存盘的数据。3 实时数据库的实现实时数据库中的数据对象类的定义:数据对象分为模拟量、开关量、字符串三个类型,下面重点介绍模拟量类的定义,并给出部分VC+代码,其他类的定义与此类似,在此不做介绍。5/模拟量的类定义:class AnalogType : public CObject public: AnalogType();virtual AnalogType();p
14、rivate: /基本属性操作参数 CString ObjectName; /对象名 float ObjectIniValue; /初始值 float ObjectMinValue; /最小值 float ObjectMaxValue; /最大值 CString ObjectUnit; /对象的工程单位 int ObjectPointN; /小数位数 /存盘操作参数 BOOL IsSave; /是否存盘 int SaveTime; /存盘时间 /报警操作参数 BOOL IsAlarm ; /是否报警 int AlarmPriority; /优先级 float LowLowValue; /低低报
15、警 float LowValue; /低报警float HeighHeighValue; /高高报警 float HeighValue; /高报警 float LowDevValue; /低偏差报警值 float HeighDevValue; /高偏差报警值int FieldValueInt; /现场的实时整型值 float FieldValueFloat; /现场的实时模拟值/定义数据操作 public: /定义属性的输入接口提供初始化操作 void SetObjectName(CString name) ObjectName=name; void SetObjectIniValue(flo
16、at inivalue) ObjectIniValue=inivalue; void SetObjectMinValue(float minvalue) ObjectMinValue=minvalue; void SetObjectMaxValue(float maxvalue) ObjectMaxValue=maxvalue; void SetObjectUnit(CString unit) ObjectUnit=unit; /定义输出接口,提供给基本数据操作和存盘、报警操作 CString GetObjectName() return ObjectName; float GetObject
17、IniValue() return ObjectIniValue; float GetObjectMinValue() return ObjectMinValue; float GetObjectMaxValue() return ObjectMaxValue; CString GetObjectUnit() return ObjectUnit; /现场的实时值操作 void SetFieldValue(float valuefield) FieldValue=valuefield; float GetFieldValue() return FieldValue; ; 2)实时数据库类的设计,
18、用VC+声明的头文件如下:class RealDB : public CObject private :AnalogType *TemAnalog;SwitchType *TemSwitch;POSITION temposition;int DataNum;private: /创建Access历史数据库和表BOOL CreateNewTable(); BOOL CreateHistoryAlarmDB(); BOOL CreateHistoryObjectTable();public: CDaoTableDef *m_newtable; CDatabase m_dataobject;CObLi
19、st m_listdata; /数据对象的链表CString IndexTag200; /定义最大数据对象个数200 int AnalogSwitchSign; /定义模拟和开关型的分割位置/操作public:RealDB();virtual RealDB(); BOOL CreateDataObject(); /创建数据对象 /数据对象的基本操作BOOL GetProFromName(CString Name, int Type , float InitV ,CString Unit ,float MaxV , float MinV , int PointN );BOOL GetProFro
20、mID(int id,CString Name, int Type , float InitV ,CString Unit ,float MaxV , float MinV , int PointN );int GetIDFromDataName(CString dataname); /通过标记名取得ID号 CString GetDataNameFromID(int id); /通过ID取得数据对象的名称 int GetDataType(CString Name); int GetAlmDataName(CString name200); /报警数据对象集合 int GetSaveDataNa
21、me(CString alarmname200); /保存数据对象的集合 /数据对象的现场值读写操作 BOOL GetValueFromName(CString name,float value); /通过标记名取得现场值 BOOL SetValueFromName(CString name,float value); /通过标记名将现场值写入数据对象中 BOOL GetValueFromID(int id,float value); /通过ID号取得现场值BOOL SetValueFromID(int id,float value); /通过ID号写入现场值 BOOL GetValueArr
22、ayFromID(int Num,int id,float value);/成组读取数据对象的现场值BOOL SetValueArrayFromID(int Num, int id, float value);/成组写入数据对象的现场值;4 结束语实时数据库设计是先进控制软件设计的重要组成部分,是难点部分,本文通过对实时数据库的概述和分析,论述了实时数据库模块的实现方法,以面向对象的编程方式给出了定义类的部分代码。实时数据库系统复杂,由于篇幅有限,本文没有一一详细说明。笔者所开发的实时数据库可以与已经开发的先进控制软件连接起来,已经在实验室调试通过,还有一些工作(如实时数据库管理系统、实时数据库接口等)也正在进行。参考文献
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《弹力》听评课记录
- 陕西省汉中市宁强县2024年一级造价工程师《土建计量》深度自测卷含解析
- 基站防雷接地网施工方案
- 基坑支护双层锚杆施工方案
- 呼和浩特高速防滑施工方案
- 吉林儿童环保地板施工方案
- 二00五年督查工作总结和二00六年工作计划
- 2021年白酒销售员工作计划
- 公民道德建设工作计划范文个人工作计划范文大全
- 班级个人计划托班
- 《康复评定》期末考试复习题库(含答案)
- 身临其境 课件-2024-2025学年人教版(2024)初中美术七年级上册
- 吉林省长春市2023-2024学年七年级上学期期末考试数学试题(含答案)
- 中国宝安财务报表分析报告
- 新《药品管理法》考试题及答案
- HY/T 0394-2024海洋观测装备水下结构防腐防污技术要求
- 【课件】第11课《再塑生命的人》课件-2024-2025学年七年级语文上册课件(统编版2024)
- 三角形的高、中线与角平分线课件
- 在线教育平台行业五年发展洞察及发展预测分析报告
- 2023年部编版道德与法治五年级下册全册单元复习课教案
- 学校食堂舆情处置预案
评论
0/150
提交评论