论文部分内容阅读
摘要:近年来,用电需求量的不断增加,火电单元机组不断向大容量、高参数方向发展。为保证机组运行的安全性、经济性和稳定性,机组运行的难度也相应地增加,以往用常规仪表进行过程监控的办法已经不能适应大机组安全经济运行,代之而起的是以4C技术(计算机Computer、通讯Communication、控制Control、显示终端CRT)为基础发展起来的集散控制系统。因而新建机组及一些老机组的改造都无一例外地采用了DCS(集散控制系统)。重点介绍了如何有效的实现利用组件对象模型技术(COM技术)、面向对象技术和可视化软件的实现方法开发研制了组态软件,在火电机组中的一个DCS的实例应用。
关键词:组态软件;火电机组;DCS;实例设计
中图分类号:TP311文献标识码:A 文章编号:1009-3044(2008)33-1522-03
为了满足国民经济迅速增长带来的用电需求量的不断增加,提高电力工业生产的经济效益,火电单元机组不断向大容量、高参数方向发展。随着机组容量的增大,为了保证机组运行的安全性、经济性和稳定性,机组运行的难度也相应地增加,运行过程中需要监督控制的参数越来越多,以往用常规仪表进行过程监控的办法已经不能适应大机组安全经济运行,代之而起的是以4C技术为基础发展起来的集散控制系统。因而新建机组及一些老机组的改造都无一例外地采用了DCS(集散控制系统)。
1 集散控制系统及其组态软件设计思想
集散控制系统的实质是利用计算机技术对生产过程进行集中监视、操作、管理和分散控制,实现危险分散。集散控制系统概括起来由集中管理部分、分散控制监测部分和通讯部分组成。集散控制系统软件部分是由实时多任务操作系统、数据库管理系统、组态软件和各种应用软件所组成,其中组态软件的概念是设计的重点。
集散控制系统的软件一般是较为成熟的模块化结构,系统的图形显示功能、数据库管理功能、控制运算功能和历史存储功能等全有成熟的软件模块。但通常不同的应用对象,对这些内容要求有较大的区别。所以一般的DCS提供一个(或一组)功能很强的软件工具包,即组态软件。该组态软件提供友好的用户界面,使用户在不需要编写什么程序代码的情况下,便可生成自己需要的应用软件。
随着分布式计算机控制系统的发展,人们越来越注重系统的软件组态和配置功能,即系统中配有一套功能十分齐全的组态生成工具软件。组态软件应当具有很强的通用性,能够适用于一大类应用对象,而且系统的执行程序代码部分一般是固定不变的,为使用不同的应用对象只需由组态软件生成不同的数据实体(包括图形文件、报表文件、数据库文件、脚本文件等)即可。这样,既大大提高了系统的成套速度,又保证了系统软件的成熟性和可靠性。
2 实时监控系统及其组态生成系统
从国外引进的大机组及其配套的DCS系统固然有其无可比拟的优越性,但代价十分昂贵。在现有机组上进行技术改造,提高机组的自动化水平,减少工人的劳动强度,增加系统运行的安全性、经济性,对大多数电厂来说是一条切实可行的途径。国内许多根据集散控制系统的设计思想开发的实时监控系统,其功能相当于集散控制系统的一个子集,能够根据电厂生产的实际需要和资金状况进行灵活配置。在这些实时监控系统中,无论是计算机控制系统,还是数据采集系统(DAS系统),直接的流程画面显示和实时数据库都是必不可少的功能。利用显示实时数据库数据的过程监控画面来代替传统的庞大的模拟仪表屏,使得运行人员不需要时刻在排列的仪表盘上检查各仪表的数据,或巡视整个模拟屏来得到生产过程的运行情况,而只需轻松地坐在CRT终端前面就可以观看整个流程的工作概况,又可以逐层细化入微,观察每个调节回路的工作细节,即利用计算机强大的信息处理能力,实现系统的集中管理和显示。实时监控系统的过程监控画面不但可以显示生产过程的流程图和实时数据,还可以支持各种趋势图、棒图的显示、报表的显示和打印以及报警信息和操作指导等。
对一幅实时监控画面进行分析,可以发现它是由许多符号组成的,如流程画面中的各种设备表示,进一步分解发现它是由许多基本的几何图形组成的,如直线、折线、矩形、多边形、圆、椭圆、文本等,这些基本的图形被称为图形中的图元。图元具有一些属性,如边线的颜色、粗细、类型,内部填充的颜色以及在显示器上的显示位置等,另外,实时监控系统画面还须有动态显示属性,如开关符号根据实时参数的变化呈现打开或闭合状态、棒图的动态填充、曲线的连续变化等等。编制一幅监控画面时需要加入上述的静态和动态的属性特征。
“设备”包含五个子项目:“COM1”、“COM2”、“DDE”、“板卡”和“网络节点”。主要是支持与I/O设备的四种通讯方式:串行通讯方式、DDE(动态数据交换)方式、板卡方式和网络节点通讯方式。
“系统配置”包含七个子项目:“设置开发系统”、“设置运行系统”、“报警配置”、“网络配置”、“用户配置”、“打印配置”和“历史数据记录”,主要是对以上七个方面设置一些配置信息。
3 控制系统(Make)实例
功能方面对本图形组态软件进行了划分,它从功能上可以分为四大模块:工程管理器、画面开发系统、画面运行系统和实时数据库。其中子系统画面开发系统主要由菜单、固定工具条、绘图工具箱和画面编辑窗口组成,如图2所示。
3.1 菜单
菜单分为“文件”、“编辑”、“查看”、“排列”、“工具”、“颜色”、“帮助”和“画面”8个主菜单。“画面”菜单列表显示已经打开所有的画面(显示内容为画面名称),并可方便地在各画面之间进行切换。
4 组态软件的技术实现
下面将从MFC提供的基本应用程序框架入手,详细介绍工程浏览器和画面开发系统的图元类库、文档类、视图类和实时数据库的实现技术。
程序框架及框架类:本组态软件系统具体实现,是在Visual C 6.0平台上利用系统工具生成的比较重要的程序框架基础类。
利用Visual C 6.0工作平台的AppWizard为本系统建立一个名为Make的项目(Project),并生成具有以下特征的应用框架:
图1 工业控制计算机系统组态软件功能
1) 多文档界面(MDI:Multiple Documents Interface),支持文档视图结构;
2) 既是OLE容器又是OLE服务器,支持ActiveX文档和ActiveX控件;
3) 在程序主框架中初始化工具条和状态条;
4) 在视图中支持打印和打印预览;生成源文件中加入注释;
5) 生成的是MFC标准类型的项目;使用动态连接的MFC类库。
AppWizard为本系统生成出九个类,其中应用类、主框架窗口类、子框架窗口类、视图类和文档类构成了一个多文档应用程序的主要部分。这五个主要的类通过调用相互的公共成员函数以及传递消息,进行相互间的通讯和数据交换。表4.1简述了本系统中四种主要类的特征。
在程序框架中,上述五个主要的类除继承其父类全部可继承的功能以外,还重载了一些虚拟函数和添加了一些其他函数。下面对这部分成员函数进行说明:
4.1 CMakeApp
CMakeApp由CWinApp派生,是应用程序类。完成应用程序实例的初始化、登记文档模板、生成主窗口及系统的退出结束处理等。其重载函数包括:
1) 构造函数CMakeApp():构造应用程序实例对象;
2) 虚函数InitInstance():初始化应用程序实例,再此需要登记将使用的文档模板。文档模板提供了MFC用来将文档、视图和框架窗口结合在一起的框架结构,实际上是文档模板为应用程序创建新文档和新视图。文档模板常以两种形式出现:用于单文档(SDI)程序的CSingleDocTemplate和用于多文档(MDI)程序的CMultiDocTemplate。本组态软件使用的是多文档模板,主框架窗口也是以此模板为基础生成。其实现代码如下:
pDocTemplate = new CMultiDocTemplate(
IDR_MAKETYPE,
RUNTIME_CLASS(CDrawDoc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
RUNTIME_CLASS(CDrawView));
AddDocTemplate(pDocTemplate);
m_pDrawTemplate=pDocTemplate;
m_pDrawTemplate是应用程序对象的公有成员变量,其他类的对象可以通过应用程序对象来取得该文档模板,从而可以新建、打开文件等。
由于工程浏览器需要通过COM接口访问实时数据库对象来访问存放数据点信息的Access数据库,所以在初始化函数中需要对COM库进行初始化:
CoInitialize(NULL); //初始化COM库
工程浏览器与画面开发系统是不同的两个框架窗口,主窗口是画面开发系统,因而在初始化过程中还需要创建工程浏览器的框架窗口,工程浏览器框架窗口类是通过ClassWizard工具从CFrameWnd继承,关于工程浏览器窗口类将后面介绍。在此新建CProjectFrame的一个对象(即窗口)并显示,代码如下:
图3程序执行步骤
4.4 CDrawView
CDrawView是由滚动视图CScrollView派生而来,其初始成员函数包括:
构造、析构函数;
GetDocument():一个视图只能与一个文档相联系,该函数返回与该视图相联系的文档类对象指针,返回类型为CDrawDoc *,即CDrawDoc类对象的指针;
虚函数OnInitialUpdate():是视图的初始化函数;
虚函数OnDraw():用于更新视图窗口;
以上简单介绍了AppWizard为本组态软件生成的主要类的基本功能,并对本软件应用类作了较为详细的介绍。其中,对文档类的派生类CDrawDoc的成员和功能扩充后,就可实现画面开发系统的文档管理器功能;对视类CDrawView、主框架类CMainFrame、子框架类CChildFrame进行扩展,并与一些另外定义图元类、图元工具类相结合即可实现画面开发系统的编辑环境;工程浏览器则是由自定义的框架类和视图类来实现。
从应用框架的角度来讲,本组态软件的执行步骤如图3所示:
1) 调用CWinApp类构造函数;
2) 程序入口函数WinMain()接收控制,调用InitInstance()函数进行初始化,创建工程浏览器和画面开发系统框架;
3) WinMain()进入处理消息的循环;
4) 用户可以通过菜单命令启动画面运行系统;
5) WinMain()退出,程序终止执行;
6) 如果启动了画面运行系统View,可终止View。
其中,程序入口函数WinMain()是在MFC内定义的。
5 结束语
在本组态软件的设计过程中,充分体现了面向组件对象的设计思想,将画面的开发、运行和实时数据库可分成不同的模块,通过COM接口实现相互访问,在软件扩充时只需加入不同功能的模块并实现相应的接口,使本组态软件有较好的可扩充性;本软件采用了面向COM和面向对象的设计方法,在COM库和MFC类库的强大功能支持下开发完成,将各个模块的方法和数据封装在一起,并大量继承了MFC类库中经过很多测试的类,大大提高了系统的稳定和可靠性;由于COM支持聚合和包容,MFC中的各个类支持类的继承,每个图元有自己的方法和属性,所以本系统也具有较好的可扩充性。
本组态软件除了用于火电厂监控系统,同样可用作其它监控系统的组态;除了用于专用系统的图形组态外,本软件也可以作为通用的绘图工具软件来使用。因此具有较广泛的实用价值。本次开发只是建立了一个组态软件的框架,实现了组态软件的一些基本功能,还需要在实际应用中通过扩充手段不断丰富和加强。
参考文献:
[1] David J.Kruglinski,Scot Wingo,George Shepherd,著Visual C 6.0 技术内幕(第5版)[M].希望图书创作室,译.北京:希望电子出版社,1999.
[2] 程文斌,王一行,等.C库函数和MFC库类详解[M].北京:航空航天大学出版社,1995.
[3] 王叶,叶爱亮,祁立学.Visual C 6.0 编程实例与技巧[M].北京:机械工业出版社,1999.
[4] Chuck Wood著.Visual C 6.0数据库编程大全[M].梁普选,梁津,刘玉芬,等译.北京:电子工业出版社,2000.
[5] Steve Oualline著.实用C 编程大全[M].辛运帏,吴拉朵,译.北京:电子工业出版社,1997.
[6] John E.Swanke著.Visual C MFC扩展编程实例[M].前导译.北京:机械工业出版社,2000.
[7] Kate Gregory著.Visual C 6 开发使用手册[M].前导译.北京:机械工业出版社,1998.
[8] James L.Conger著.Microsoft Windows API大全[M].沈民,张燕,译.北京科海培训中心,1997.
[9] 木林森,等.Visual C 6.0使用与开发[M].北京:清华大学出版社,1998.
[10] Richard C.Leinecker,Jamie Nye著.Visual C 开发工具使用指南[M].廖安隶,等译.北京:机械工业出版社,1997.
[11] 顾良士,朱学武,张卫,等.InTouch人机接口应用生成程序[M].北京:学苑出版社,1993.
关键词:组态软件;火电机组;DCS;实例设计
中图分类号:TP311文献标识码:A 文章编号:1009-3044(2008)33-1522-03
为了满足国民经济迅速增长带来的用电需求量的不断增加,提高电力工业生产的经济效益,火电单元机组不断向大容量、高参数方向发展。随着机组容量的增大,为了保证机组运行的安全性、经济性和稳定性,机组运行的难度也相应地增加,运行过程中需要监督控制的参数越来越多,以往用常规仪表进行过程监控的办法已经不能适应大机组安全经济运行,代之而起的是以4C技术为基础发展起来的集散控制系统。因而新建机组及一些老机组的改造都无一例外地采用了DCS(集散控制系统)。
1 集散控制系统及其组态软件设计思想
集散控制系统的实质是利用计算机技术对生产过程进行集中监视、操作、管理和分散控制,实现危险分散。集散控制系统概括起来由集中管理部分、分散控制监测部分和通讯部分组成。集散控制系统软件部分是由实时多任务操作系统、数据库管理系统、组态软件和各种应用软件所组成,其中组态软件的概念是设计的重点。
集散控制系统的软件一般是较为成熟的模块化结构,系统的图形显示功能、数据库管理功能、控制运算功能和历史存储功能等全有成熟的软件模块。但通常不同的应用对象,对这些内容要求有较大的区别。所以一般的DCS提供一个(或一组)功能很强的软件工具包,即组态软件。该组态软件提供友好的用户界面,使用户在不需要编写什么程序代码的情况下,便可生成自己需要的应用软件。
随着分布式计算机控制系统的发展,人们越来越注重系统的软件组态和配置功能,即系统中配有一套功能十分齐全的组态生成工具软件。组态软件应当具有很强的通用性,能够适用于一大类应用对象,而且系统的执行程序代码部分一般是固定不变的,为使用不同的应用对象只需由组态软件生成不同的数据实体(包括图形文件、报表文件、数据库文件、脚本文件等)即可。这样,既大大提高了系统的成套速度,又保证了系统软件的成熟性和可靠性。
2 实时监控系统及其组态生成系统
从国外引进的大机组及其配套的DCS系统固然有其无可比拟的优越性,但代价十分昂贵。在现有机组上进行技术改造,提高机组的自动化水平,减少工人的劳动强度,增加系统运行的安全性、经济性,对大多数电厂来说是一条切实可行的途径。国内许多根据集散控制系统的设计思想开发的实时监控系统,其功能相当于集散控制系统的一个子集,能够根据电厂生产的实际需要和资金状况进行灵活配置。在这些实时监控系统中,无论是计算机控制系统,还是数据采集系统(DAS系统),直接的流程画面显示和实时数据库都是必不可少的功能。利用显示实时数据库数据的过程监控画面来代替传统的庞大的模拟仪表屏,使得运行人员不需要时刻在排列的仪表盘上检查各仪表的数据,或巡视整个模拟屏来得到生产过程的运行情况,而只需轻松地坐在CRT终端前面就可以观看整个流程的工作概况,又可以逐层细化入微,观察每个调节回路的工作细节,即利用计算机强大的信息处理能力,实现系统的集中管理和显示。实时监控系统的过程监控画面不但可以显示生产过程的流程图和实时数据,还可以支持各种趋势图、棒图的显示、报表的显示和打印以及报警信息和操作指导等。
对一幅实时监控画面进行分析,可以发现它是由许多符号组成的,如流程画面中的各种设备表示,进一步分解发现它是由许多基本的几何图形组成的,如直线、折线、矩形、多边形、圆、椭圆、文本等,这些基本的图形被称为图形中的图元。图元具有一些属性,如边线的颜色、粗细、类型,内部填充的颜色以及在显示器上的显示位置等,另外,实时监控系统画面还须有动态显示属性,如开关符号根据实时参数的变化呈现打开或闭合状态、棒图的动态填充、曲线的连续变化等等。编制一幅监控画面时需要加入上述的静态和动态的属性特征。
“设备”包含五个子项目:“COM1”、“COM2”、“DDE”、“板卡”和“网络节点”。主要是支持与I/O设备的四种通讯方式:串行通讯方式、DDE(动态数据交换)方式、板卡方式和网络节点通讯方式。
“系统配置”包含七个子项目:“设置开发系统”、“设置运行系统”、“报警配置”、“网络配置”、“用户配置”、“打印配置”和“历史数据记录”,主要是对以上七个方面设置一些配置信息。
3 控制系统(Make)实例
功能方面对本图形组态软件进行了划分,它从功能上可以分为四大模块:工程管理器、画面开发系统、画面运行系统和实时数据库。其中子系统画面开发系统主要由菜单、固定工具条、绘图工具箱和画面编辑窗口组成,如图2所示。
3.1 菜单
菜单分为“文件”、“编辑”、“查看”、“排列”、“工具”、“颜色”、“帮助”和“画面”8个主菜单。“画面”菜单列表显示已经打开所有的画面(显示内容为画面名称),并可方便地在各画面之间进行切换。
4 组态软件的技术实现
下面将从MFC提供的基本应用程序框架入手,详细介绍工程浏览器和画面开发系统的图元类库、文档类、视图类和实时数据库的实现技术。
程序框架及框架类:本组态软件系统具体实现,是在Visual C 6.0平台上利用系统工具生成的比较重要的程序框架基础类。
利用Visual C 6.0工作平台的AppWizard为本系统建立一个名为Make的项目(Project),并生成具有以下特征的应用框架:

图1 工业控制计算机系统组态软件功能
1) 多文档界面(MDI:Multiple Documents Interface),支持文档视图结构;
2) 既是OLE容器又是OLE服务器,支持ActiveX文档和ActiveX控件;
3) 在程序主框架中初始化工具条和状态条;
4) 在视图中支持打印和打印预览;生成源文件中加入注释;
5) 生成的是MFC标准类型的项目;使用动态连接的MFC类库。
AppWizard为本系统生成出九个类,其中应用类、主框架窗口类、子框架窗口类、视图类和文档类构成了一个多文档应用程序的主要部分。这五个主要的类通过调用相互的公共成员函数以及传递消息,进行相互间的通讯和数据交换。表4.1简述了本系统中四种主要类的特征。
在程序框架中,上述五个主要的类除继承其父类全部可继承的功能以外,还重载了一些虚拟函数和添加了一些其他函数。下面对这部分成员函数进行说明:
4.1 CMakeApp
CMakeApp由CWinApp派生,是应用程序类。完成应用程序实例的初始化、登记文档模板、生成主窗口及系统的退出结束处理等。其重载函数包括:
1) 构造函数CMakeApp():构造应用程序实例对象;
2) 虚函数InitInstance():初始化应用程序实例,再此需要登记将使用的文档模板。文档模板提供了MFC用来将文档、视图和框架窗口结合在一起的框架结构,实际上是文档模板为应用程序创建新文档和新视图。文档模板常以两种形式出现:用于单文档(SDI)程序的CSingleDocTemplate和用于多文档(MDI)程序的CMultiDocTemplate。本组态软件使用的是多文档模板,主框架窗口也是以此模板为基础生成。其实现代码如下:
pDocTemplate = new CMultiDocTemplate(
IDR_MAKETYPE,
RUNTIME_CLASS(CDrawDoc),
RUNTIME_CLASS(CChildFrame), // custom MDI child frame
RUNTIME_CLASS(CDrawView));
AddDocTemplate(pDocTemplate);
m_pDrawTemplate=pDocTemplate;
m_pDrawTemplate是应用程序对象的公有成员变量,其他类的对象可以通过应用程序对象来取得该文档模板,从而可以新建、打开文件等。
由于工程浏览器需要通过COM接口访问实时数据库对象来访问存放数据点信息的Access数据库,所以在初始化函数中需要对COM库进行初始化:
CoInitialize(NULL); //初始化COM库
工程浏览器与画面开发系统是不同的两个框架窗口,主窗口是画面开发系统,因而在初始化过程中还需要创建工程浏览器的框架窗口,工程浏览器框架窗口类是通过ClassWizard工具从CFrameWnd继承,关于工程浏览器窗口类将后面介绍。在此新建CProjectFrame的一个对象(即窗口)并显示,代码如下:

图3程序执行步骤
4.4 CDrawView
CDrawView是由滚动视图CScrollView派生而来,其初始成员函数包括:
构造、析构函数;
GetDocument():一个视图只能与一个文档相联系,该函数返回与该视图相联系的文档类对象指针,返回类型为CDrawDoc *,即CDrawDoc类对象的指针;
虚函数OnInitialUpdate():是视图的初始化函数;
虚函数OnDraw():用于更新视图窗口;
以上简单介绍了AppWizard为本组态软件生成的主要类的基本功能,并对本软件应用类作了较为详细的介绍。其中,对文档类的派生类CDrawDoc的成员和功能扩充后,就可实现画面开发系统的文档管理器功能;对视类CDrawView、主框架类CMainFrame、子框架类CChildFrame进行扩展,并与一些另外定义图元类、图元工具类相结合即可实现画面开发系统的编辑环境;工程浏览器则是由自定义的框架类和视图类来实现。
从应用框架的角度来讲,本组态软件的执行步骤如图3所示:
1) 调用CWinApp类构造函数;
2) 程序入口函数WinMain()接收控制,调用InitInstance()函数进行初始化,创建工程浏览器和画面开发系统框架;
3) WinMain()进入处理消息的循环;
4) 用户可以通过菜单命令启动画面运行系统;
5) WinMain()退出,程序终止执行;
6) 如果启动了画面运行系统View,可终止View。
其中,程序入口函数WinMain()是在MFC内定义的。
5 结束语
在本组态软件的设计过程中,充分体现了面向组件对象的设计思想,将画面的开发、运行和实时数据库可分成不同的模块,通过COM接口实现相互访问,在软件扩充时只需加入不同功能的模块并实现相应的接口,使本组态软件有较好的可扩充性;本软件采用了面向COM和面向对象的设计方法,在COM库和MFC类库的强大功能支持下开发完成,将各个模块的方法和数据封装在一起,并大量继承了MFC类库中经过很多测试的类,大大提高了系统的稳定和可靠性;由于COM支持聚合和包容,MFC中的各个类支持类的继承,每个图元有自己的方法和属性,所以本系统也具有较好的可扩充性。
本组态软件除了用于火电厂监控系统,同样可用作其它监控系统的组态;除了用于专用系统的图形组态外,本软件也可以作为通用的绘图工具软件来使用。因此具有较广泛的实用价值。本次开发只是建立了一个组态软件的框架,实现了组态软件的一些基本功能,还需要在实际应用中通过扩充手段不断丰富和加强。
参考文献:
[1] David J.Kruglinski,Scot Wingo,George Shepherd,著Visual C 6.0 技术内幕(第5版)[M].希望图书创作室,译.北京:希望电子出版社,1999.
[2] 程文斌,王一行,等.C库函数和MFC库类详解[M].北京:航空航天大学出版社,1995.
[3] 王叶,叶爱亮,祁立学.Visual C 6.0 编程实例与技巧[M].北京:机械工业出版社,1999.
[4] Chuck Wood著.Visual C 6.0数据库编程大全[M].梁普选,梁津,刘玉芬,等译.北京:电子工业出版社,2000.
[5] Steve Oualline著.实用C 编程大全[M].辛运帏,吴拉朵,译.北京:电子工业出版社,1997.
[6] John E.Swanke著.Visual C MFC扩展编程实例[M].前导译.北京:机械工业出版社,2000.
[7] Kate Gregory著.Visual C 6 开发使用手册[M].前导译.北京:机械工业出版社,1998.
[8] James L.Conger著.Microsoft Windows API大全[M].沈民,张燕,译.北京科海培训中心,1997.
[9] 木林森,等.Visual C 6.0使用与开发[M].北京:清华大学出版社,1998.
[10] Richard C.Leinecker,Jamie Nye著.Visual C 开发工具使用指南[M].廖安隶,等译.北京:机械工业出版社,1997.
[11] 顾良士,朱学武,张卫,等.InTouch人机接口应用生成程序[M].北京:学苑出版社,1993.