资源描述
河南大学物理与电子学院本科毕业论文
编号:
河南大学2014届本科毕业论文
基于VC的控制系统仿真实现技术研究
论文作者姓名:
作 者 学 号:
所 在 学 院: 物理与电子学院
所 学 专 业: 测控技术与仪器
导师姓名职称: 耿涛(副教授)
论文完成时间: 2014年05月16日
目 录
摘 要: 1
1 绪论 2
1.1 引言 2
1.2 Microsoft Visual Studio 2010中文版的简介 2
2 PID控制器 4
2.1 PID控制器的基本原理 4
2.2数字PID控制器 6
2.3 Stehfest 算法 9
2.4 easysize窗口大小调整简单实现 10
2.5 MSchart控件 12
3 系统整体设计 13
3.1 VC工程文件的建立 13
3.2 VC界面建立 15
3.3 应用程序设计 18
3.4 应用程序实现功能 22
4 结论 24
参考文献 25
25
基于VC的控制系统仿真实现技术研究
(河南大学物理与电子学院,河南 开封,475004)
摘 要:
本文基于 VS2010进行软件平台的开发,主要是考虑到VS2010软件平台有较好的开放性以及运行速度的高效性,同时有可视化编程环境 IDE、Win32 应用程序接口 API、友好的图形用户界面 GUI,本文首先详细分析了PID控制器算法的基本原理,尤其是数字式PID控制器中的增量式PID控制器,论文从分析其基本原理出发,详细阐述了增量式PID控制器算法的实现过程;本文还采用一种拉普拉斯反变换的近似算法:Stehfest 算法,将S 域的拉普拉斯表达式近似转换为时域的函数表达式,最后采用MSChart控件将显示出来,完成PID控制系统的仿真,经实验,最终取得满意的结果。
关键词:
VC;PID;Stehfest 算法;MSChart控件
The research of control system simulation technology based on VC
Xiang Qi-dan
(School of Physics and Electronics, Henan University, Henan Kaifeng 475004, China)
Abstract:
Considering the VS2010 software platform has good openness and running speed of high efficiency, at the same time has a visual programming environment IDE, Win32 application programming interface API, friendly graphical user interface GUI,I use the VS2010 for The development of software platform in this paper.First of all, this paper has a detailed analysis of the basic principle of the PID controller algorithm, especially the incremental digital PID controller . Starting from the analysis of its basic principle,the paper expounds the process of the implementation of the incremental PID controller algorithm ;This paper also adopts an approximate algorithm of inverse Laplace transform: Stehfest algorithm, which converts S domain Laplace expressions of time domain in an approximate method.Finally the MSChart control will display the image of , completeing simulation of PID control system,
According to the experiment,the progrem achieved satisfactory results in the end .
Key words:
VC;PID;Stehfest algorithm; MSChart control
1 绪论
1.1 引言
从20世纪30年代以来,生产自动化技术取得巨大成就,工业自动化涉及范围很广,过程控制是其中最重要的一个分支,工业生产对过程控制的要求是稳定性、安全性和经济性。过程控制的任务是在了解、掌握工艺流程和生产过程的静态和动态特性的基础上,根据上述三项要求,应用理论对控制系统进行分析和综合,最后采用合适的技术手段加以实现。在很多情况下,只需采用商品化的常规调节器进行PID控制就可以实现其控制任务。
基于偏差的比例(Proportional)、积分(Integral)和微分(Derivative)的控制器简称为PID控制器,是在工业过程控制中的最常见的一种过程控制器[] 王述彦,师宇.基于模糊PID控制器的控制方法研究[J].北京:机械科学与技术2011年01期
。这是因为PID控制器算法有很多优点,首先,虽然很多工业过程是非线性或时变的,但通过对其简化可以变成基本线性和动态特性不随时间变化的系统,这样PID就可控制了;其次,PID参数较易整定,也就是,PID参数Kp,Ti和Td可以根据过程的动态特性及时整定,如果过程的动态特性变化,例如可能由负载的变化引起系统动态特性变化,PID参数就可以重新整定;还有包括控制算法简单、鲁棒性强等等优点,使得PID控制器算法广泛应用于冶金、化工、机械、热工和轻工等工业过程控制系统中。
尽管在控制领域,不断涌现出各种新型控制器,但PID控制器还是以其结构简单、易实现、鲁棒性强等优点,在控制领域中处于主导地位,是工业过程控制的基础。根据日本有关调查资料显示,现今使用的各种控制技术中,PID技术站84.5%,优化PID控制技术占6.8%,现代控制技术占1.6%,人工智能技术占0.6%。如果把优化PID控制技术和PID控制技术加起来,那么PID技术占到整个控制技术的90%以上,有资料也指出,工业过程控制中,95%以上的回路具有PID结构[] 王蕾,宋文忠.PID控制[J].北京:自动化仪表2004年04期
。所以,可以毫不夸张地说,随着现代工业化和其他各种先进控制技术的发展,PID控制技术仍然不过时,而且还站着主导地位。同时,由于难以建立工业过程对象的精确模型,系统参数又经常发生变化,因而在用PID控制器进行调节时,又往往难以得到最佳的控制效果。
1.2 Microsoft Visual Studio 2010中文版的简介
本文介绍了基于Microsoft Visual Studio 2010平台的VC的PID控制模块设计。 而Microsoft Visual Studio 2010是目前最流行的Windows平台应用程序开发环境,于2010年4月12日上市,它的集成开发环境的界面被重新设计,变得更加简洁明了,它是在多年使用过程中不断改进的基础上推出的,做了很大改进,增添了许多新功能,其主要的功能特点可概括为以下几个方面:
(1)语言方面:
a)Visual Basic 2010的新功能:隐含行接续、自动实作属性、集合初始设定式等
b)Visual C# 2010的新功能:dynamic型别、具名和选择性引数、增强型Office程式设计和变更数。
c)Visual C++ 2010的新功能:Lambda运算式、右值参考宣告子及auto、decltype与static_assert关键字
d)Visual F# 2010的新功能:支持.NET Framework的函数程序设计。
(2)其他技术:
a)多显示器支持;
b)使用Visual Studio 2010的特性支持TDD;
c)支持Office;
d)Quick Search特性
e)IDE增强
f)使用Visual C++ 2010创建Ribbon界面;
此外,Microsoft Visual Studio 2010在外观行为、浏览代码、调试、项目功能对应、测试先行支持、代码生成、起始页、扩展管理器、对话框、新帮助查看器等方面均做了改进,还支持Windows Azure,微软云计算架构迈入重要里程碑;助力移动与嵌入式装置开发;实践当前最热门的Agile/Scrum开发方法,可以强化团队竞争力;搭配Windows 7,Silverlight4 与 Office,发挥多核并行运算威力。
Microsoft Visual Studio 2010目前有五个版本:专业版(Professional)、高级版(Premium)、旗舰版(Ultimate))、学习版(Express)和测试版(Test Professional)。
(1)专业版(Professional) 面向个人开发人员,提供集成开发环境、开发平台支持、测试工具等。
(2)高级版(Premium):创建可扩展、高质量程序的完整工具包,相比专业版增加了数据库开发、Team Foundation Server(TFS)、调试与诊断、MSDN订阅、程序生命周期管理(ALM)。
(3)旗舰版(Ultimate):面向开发团队的综合性ALM工具,相比高级版增加了架构与建模、实验室管理等。
(4)学习版(Express):Visual Studio 2010(Express)是一个免费工具。它从Visual Studio产品线,提供了新的集成开发环境,vs2010一个新的编辑器内建在Windows Presentation Foundation(WPF)和新的支持像爱好者非专业开发人员,从本质上时,Visual Studio 2010 Express是轻量级版本。
(5)测试专业版(Test Professional):简化测试规划与人工测试执行的特殊版本,包含TFS、ALM、MSDN订阅、实验室管理、测试工具。
2 PID控制器
2.1 PID控制器的基本原理
PID调节器是一种线性调节器,是基于对变量“过去”、“现在”和未来信息估计的交叉控制算法,控制系统框图如图1所示,它将给定值r(t)与实际输出值c(t)的偏差的比例(P)、积分(I)、微分(D)通过线性组合构成控制量,对控制对象进行控制[] 何芝强.PID控制器参数整定方法及其应用研究[D]. 杭州:浙江大学
。
图 2-1 控制系统框图
PID控制器由比例单元(P)、积分单元(I)和微分单元(D)组成,是具有比例-积分-微分控制规律的控制器[] 韩帮华.PID控制器参数整定方法及应用研究[D].青岛:青岛科技大学
。当系统是连续控制时,其输入与输出的关系为
(1-1)
相应的传递函数为
(1-2)
其中为比例系数;为积分时间常数;为微分时间常数。
使用中只需设定三个参数(,和)即可。在很多情况下,并不一定需要全部三个单元,可以取其中的一到两个单元,但比例控制单元是必不可少的。各种控制作用(即比例作用、微分作用和积分作用)的实现在表达式(1-1)、(1-2)中表达得很清楚,相应的控制器参数包括比例系数,积分时间常数,微分
(1)比例控制
比例控制是一种最简单的控制方式,可以及时地反应控制系统的偏差信号,一旦系统出现了偏差,比例调节作用即产生调节作用,减小系统偏差的变化。具有比例控制规律的控制器,称为P控制器[] 白金,韩俊伟.基于Matlab/Simulink环境下的PID参数整定[J].哈尔滨:哈尔滨商业大学学报2007年06期
。P控制器实质上是一个具有可调增益的放大器,在信号变换过程中,P控制器只改变信号增益而不影响其相位。在串联校正中,加大控制器增益,可以提高系统的开环增益,减小系统稳态误差,从而提高系统的控制精度,但会降低系统的相对稳定性,甚至可能造成闭环系统不稳定。因此,在系统校正设计中,很少单独使用比例控制规律[] 李晓丹.模糊PID控制器的设计研究[D].天津:天津大学
。
(2)积分控制
具有积分控制规律的控制器,称为I控制。I控制器的输出信号与其输入信号的积分成正比,即
(1-3)
其中,为可调系数。由于I控制器的积分作用,当其输入消失后,输出信号有可能是一个不为零的常量。
在串联校正时,采用I控制器可以提高系统的型别,有利于系统稳定性的的提高,但积分控制使系统增加了一个位于原点的开环极点,使信号产生的相角滞后,不利于系统的稳定性[] 黄宜庆.PID控制器参数整定及其应用研究[D].安徽:安徽理工大学
。如果I控制器和之前提到的P控制器结合起来,便构成了具有比例-积分控制规律的控制器,称PI控制器,其输出信号同时成比例的反应输入信号及其积分:
(1-4)
其中,为可调比例系数;为可调积分时间常数。在串联校正时,PI控制器相当于在系统中增加了一个位于原点的开环极点,同时也增加了一个位于s左半平面的开环零点。位于原点的极点可以提高系统的型别,以消除或减小系统的稳态误差,改善系统的稳态性能;而增加的负实零点则用来减小系统的阻尼程度,缓和PI控制器极点对系统稳定性及动态过程产生的不利影响[] 金奇,邓志杰.PID控制原理与整定方法[J].重庆:重庆工学院学报2008年05期
。只要积分时间常数足够大,PI控制器对系统稳定性的不利影响可大为减弱。在控制工程实践中,PI控制器主要用来改善控制系统的稳态性能。
(3)微分控制
微分控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系,可以改善控制系统的响应速度和稳定性,微分作用能预见偏差变化的趋势,并能在偏差信号变得太大之前,在系统中引入一个有效的早期修正信号,反应系统偏差变化的规律,能产生超前的控制作用,从而加快系统的动作速度,减少调节时间。简单来说,微分作用能在偏差还没有形成之前,就可以消除误差,改善系统的动态性能[] 胡寿松.自动控制原理[M].北京:科学出版社
。
微分作用取决于微分时间常数,越大,控制器的微分作用表现得就越强,偏大时,超调量会较大,调节时间也会较长;越小,控制器的微分作用越弱,偏小时,超调量也较大,相应调节时间也会较长;调节合适时,系统的超调量和调节时间可以有效的减小。微分作用反映的是输入信号的变化率,当偏差没有变化时,微分作用的输出为零。此外,从滤波器角度来说,微分控制器相当于一个高通滤波器,对噪声干扰有放大作用,这对系统是非常不利的,因此我们就不能过多的增加微分调节[] 苏明,陈伦军,林浩.模糊PID控制及其MatLab仿真[J].北京:现代机械2004年04期
。
(4)PID控制算法的特点
实践表明,对于像PID控制器这样简单的控制器,能够如此适用于广泛的工业与民用对象,并仍以很高的性价比在市场中占据着主导地位,充分地反映了PID控制器的良好品质。总的来说,PID控制器的优点主要体现在以下两个方面[] 曾军.神经网络PID控制器的研究及仿真[D]. 长沙:湖南大学
:
(a)原理简单、结构简明、实现方便,能够满足大多数实际需要
(b)控制器适用于多种截然不同的对象,算法在结构上拥有较强的鲁棒性;深入来说,在很多情况下,其控制品质对被控对象的结构或参数摄动不敏感。
但从另一方面来说,控制算法的普遍适用性也反映了PID控制器在控制品质上的局限性。具体来说,它的局限性主要来自以下几个方面:
(a)算法结构的简单性决定了PID控制比较适用于SISO最小相位系统,在处理大时滞、开环不稳定过程等难控对象时,需要多个PID控制器和其他控制器的组合,才能得到较好的控制效果;
(b)算法结构的简单性同时决定了PID控制只能确定闭环系统的少数主要零极点,闭环特性从根本上只是基于动态特性的低阶近似假定的;
(c)由于同样的原因,决定了单一PID控制器无法同时满足对假定设定值控制和伺服/跟踪控制的不同性能要求。
2.2数字PID控制器
(1) 数字PID控制器原理
PID控制器是控制系统中应用最为广泛的一种控制器,广泛应用于工业过程控制中。随着微型计算机,特别是现代嵌入式位处理器的普及应用,原先由硬件实现的PID控制器的功能都可以用软件来代替实现,形成数值PID算法,实现由模拟PID控制器到数字PID控制器的转变[] 吴洪鑫,沈少萍.PID控制的应用与理论依据[J].北京:控制工程2007年01期
。
在实际应用中,数字PID控制器分为两种:位置式PID控制器和增量式PID控制器。
a)位置式PID控制器
计算机实际上是采样控制,它根据采样时刻的偏差值计算控制量。所以式(1-1)中的积分项和微分项不能直接使用,需要进行离散化处理。具体实现方法是:以K作为采样信号,T作为采样周期,则连续时间对应离散化的采样时间KT,用求和的形式代替积分,用增量的形式代替微分,则可作如下的近似变换[] 林浩.模糊PID控制器仿真研究[D].贵州:贵州大学
:
(1-5)
将式(1-5)代入式(1-2)中,则得到离散的PID控制器表达式为:
(1-6)
或:
(1-7)
式中:
采样序列号,=0,1,2,...;
第次采样时刻计算机输出值;
第次采样时刻的输入偏差值;
第-1次采样时刻的输入偏差值;
积分系数,
微分系数,
开始进行PID控制时的计算机的输出值
因此,如果采样周期足够小的话,那么由式(1-6)和(1-7)得到的近似结果可获得足够的精确度,此时连续的和离散的PID控制过程会十分接近。由于式(1-6)和(1-7)的控制算法是直接按式(1-1)给出的PID控制规律进行计算的,所以给出了全部控制量的大小,被称为全量式或位置式PID控制算法[] 樊国平.智能PID控制系统的设计与研究[D].杭州:浙江工业大学
。
由于位置式PID控制器每次输出全部控制量,因此它可以直接作用于执行机构。另一方面,由于这种算法全量输出,每次输出均与过去的状态有关,计算时要对进行累加,容易造成积分饱和,计算机运算工作量很大;此外,因为计算机输出的对应的是实际的执行机构的位置,如果计算机出现故障,大幅度变化,这将会引起执行机构位置的大幅度变化,可能造成重大生产安全事故。这就导致这种算法不适用于生产实践中,催生了增量式PID控制器算法。
b)增量式PID控制器
增量式PID控制器是指PID控制器每次输出的只是控制量的增量,当例如步进电机等执行机构,需要的是增量而不是位置量的绝对数值时,就可以使用增量式PID控制器进行控制。
由式(1-7),根据递推原理可得:
(1-8)
用式(1-8)减去式(1-7)可得: (1-9)
式中,。
式(1-9)称为增量式PID控制算法。将该式整理合并得到:
(1-10)
式中,
它们都是与采样周期、比例增益、积分时间常数和微分时间常数有关的常系数。
根据增量式PID算法可以推导出位置式PID算法的递推形式,其表达式为:
(1-11)
其中为系统的输入,为控制对象的测量量。
位置式PID控制器实质上与增量式PID控制器是一样的,但是增量式PID控制器比位置式PID控制器有许多优越之处[] 刘玲玲.PID参数整定技术的研究及应用[D].郑州;郑州大学
:
a) 只与,,时刻的偏差有关,节省运算时间和内存。
b) 每次只做计算,则计算误差影响很小
c) 由于每次只输出增量,因此误动作产生的误差很小,并便于实现无扰动切换。
但增量式控制也有不足之处:有静态误差,积分截断效应大,溢出的影响大等。因此,在选择时不能一概而论,需视不同场合而定。
鉴于增量式PID控制的种种优点,本论文采用增量式PID控制来进行仿真。
(2) 增量式PID控制的算法实现
应用中,增量式PID控制器的算法实现如图所示:
2.3 Stehfest 算法
对于函数定义其拉普拉斯变换为:
3-1
称为函数的拉普拉斯变换像函数。在VC中要实现对控制系统的输出值的计算,需要将S 域的拉普拉斯表达式转换为时域的函数表达式,则需要拉普拉斯反变换。
目前经常使用的反变换法有部分分式展开法和围线积分法。当表达式比较复杂时, 这两种方法都很难实现反变换. 这时就需要采用一种新的算法来实现拉普拉斯反变换。Stehfest 算法就是这样的一种拉普拉斯反变换的近似算法。
采用围线积分法实现反变换时, 需要计算被积表达式在各极点上的留数。 但当表达式比较复杂或存在多重极点时, 微分运算用手工实现比较困难; 借助计算机运算时, 由于数值微分算法具有天生的数值不稳定性, 又使运算误差不易控制。 Stehfest 算法用一个全新的表达式代替围线积分法中的积分式,可在计算机辅助下近似实现拉普拉斯反变换, 其形式如下:
(3-2)
其中: (3-3)
(3-4)
(3-5)
表达式(3-2)中为的近似表达式,式中的必须是正的偶数,具体的选值下文将详细说明。
Stehfest 算法易于编程,在程序部分中提供利用Turob C 语言编制的该算法程序。接着对其使用条件和适用范围做进一步的讨论。 Stehfest 指出, 对于那些随变量t 的变化振荡较快的函数, 使用该算法误差较大。而通过实际运算, 作者发现, 对于表达式中含有的函数, 像、甚至(这里a 是常数) , 当变量t 较小时( 通常在0~1 之间) , 近似效果较好, 当超出这一范围时, 误差明显增大. 另外, 当表达式中分母多项式的次数M 与分子多项式的次数N 之间存在关系时,近似效果较好。同时, Stehfest 推荐n 在4~32 之间选取, 一般情况下取16。有研究指出,使用Stehfest算法所得结果与实际结果非常接近,其误差一般都能控制在~之间,因而对于振荡频率较低,且用部分分式展开法和围线积分法实现拉普拉斯反变换较困难的情况采用Stehfest算法进行反变换会取得比较满意的结果[] 刘利强.拉普拉斯反变换的一种数值算法[J].内蒙古:内蒙古工业大学学报第21卷第1期
。
2.4 easysize窗口大小调整简单实现
由于对话框按原大小运行时,受其本身大小的影响,不能够将图形有效的显示,因此需要设置窗口使其能够实现最大化。
首先,要设置对话框属性,将最大化,最小化设置为TRUE。其次使用easysize,它是很好用的宏,解决了控件随窗口大小改变而改变大小及位置的要求。首先需要准备好使用easysize所需的头文件,下面介绍其具体实现方法[]MarcRicharme,EasySize- Dialog resizing in no time! [J/OL] http ://
。
创建的对话框的类名是CLunwenDlg,具体过程如下:
步骤一:把easysize.h拷贝到CLunwenDlg项目文件夹中,同时在CLunwenDlg的.h文件和.cpp文件中加入#include "easysize.h";
步骤二:在CMyDlg类的h文件中,加入DECLARE_EASYSIZE,注意结尾处不要加“;”。
class CMyDlg : public CDialog
{
DECLARE_EASYSIZE
// Construction
…
}
步骤三:在CLunwenDlg类的OnInitDialog()函数的结尾处加入INIT_EASYSIZE, 注意此处结尾处要加“;”。
BOOL CMyDlg::OnInitDialog()
{ …
// TODO: Add extra initialization here
INIT_EASYSIZE;
return TRUE; // return TRUE unless you set the focus to a control
}
步骤四:增加WM_SIZE消息响应函数OnSize(),在函数中加入UPDATE_EASYSIZE,注意此处结尾处要加“;”。
void CMyDlg::OnSize(UINT nType, int cx, int cy)
{
CDialog::OnSize(nType, cx, cy);
// TODO: Add your message handler code here
UPDATE_EASYSIZE;
}
步骤五:在CLunwenDlg的cpp文件中添加EASYSIZE 的宏映射
BEGIN_EASYSIZE_MAP(CLunwenDlg)
EASYSIZE(control,left,top,right,bottom,options)
END_EASYSIZE_MAP
有一点注意是,如果没有添加EASYSIZE 的宏映射就开始编译的话,会出现链接错误!下面解释一下宏EASYSIZE()的用法,其原型如下:
EASYSIZE(control,left,top,right,bottom,options)
该宏表示对ID值为control的控件实施缩放效果,缩放后的上下左右位置由control,left,top,right,bottom来确定,大小由options确定。其中:control为对话框中的控件ID值,left,top,right,bottom四个参数为控件位置的坐标,其值可以选择 ES_BOARD,ES_KEEPSIZE, 控件ID值三者之一。Options可以为ES_HCENTER, ES_VCENTER的结合,options可置0。ES_BOARD表示控件与对话框边界(以下简称边界)的距离;ES_KEEPSIZE表示控件水平/垂直方向上尺寸保持不变;控件ID值表示当前控件与指定控件之间的距离;ES_HCENTER表示缩放后控件在指定位置内水平居中;ES_VCENTER表示缩放后控件在指定位置内垂直居中;例如:
EASYSIZE(IDOK,ES_BORDER,ES_BORDER,ES_BORDER,ES_BORDER,0)
表示缩放后,值为IDOK的控件,距离边界上下左右位置保持不变,水平和垂直方向尺寸拉伸;
EASYSIZE(IDOK,ES_BORDER,ES_BORDER,ES_BORDER,ES_BORDER,ES_HCENTER)
表示缩放后,值为IDOK的控件,距离边界上下位置保持不变,垂直方向尺寸拉伸,水平居中;
EASYSIZE(IDOK,ES_BORDER,ES_KEEPSIZE,ES_KEEPSIZE,ES_BORDER,0)
表示缩放后,值为IDOK的控件,距离边界左、下方位置保持不变,同时保持控件尺寸。
2.5 MSchart控件
在VC的环境下显示控制曲线,可以选择ZedGraph.dll,TEECHART以及本文所介绍的MSchart控件[] 郭先春,姜林,罗定贵.基于MSChart控件的动态综合水文GIS专题图的生成[J].安徽:安徽农业科学2010年01期
。MSChart给报表图形显示和图形统计提供了很好的解决办法,同时支持Web和WinForm两种方式,包含英文版,中文版,MSChart控件和一个数据网格(DataGrid对象)关联,该数据网格存放了要显示的数据,数据网格也可以包含用于图表中标识类别或系列的标签[] 张成才. 利用MSChart控件动态生成统计图[J].郑州:郑州大学学报2007年03期
。本论文用来绘制坐标曲线图。如果要使用这个控件,在vc6.0中则可以按下图的示意进行添加此控件。
图 2-3 MSChart控件加载
需要注意的是很多时候VC6.0中不带这个库,需要自己添加。其具体添加方法:
(1)下载mschrt20.ocx,放在system32中,安装并注册控件,注册方法:复制本文件到C盘window/system32/下,然后再命令行中输入regsvr32 mschrt20.ocx即可。在运行实例,成功!完成后,在VC6.0或VS2010中便可加载该控件
(2)然后,建立工程,选择对话框程序。添加Microsoft chart control控件(选择ActiveX控件中com中找到,添加ActiveX控件: Tools->choose toolbox items->COM components 选择Microsoft chart control)[]曲国伟,王英慧.VC++环境下利用MSChart控件对GPS数据的处理[J].北京:计算机与现代化 2007年第九期
。
(3)添加类 Project->Addclass ->MFC class from Typelib 选择 Microsoft chart control。初学者可以全部添加,这时工程中会生成许多CVc开头的头文件。
如果此时还不能运行MSchart控件,可以直接在网上下载MSchart控件的安装包,直接安装就能使用。另外在使用MSchart控件时,需要在程序中包含头文件,否则运行时有错误。
#include"VcPlot.h"
#include"VcAxis.h"
#include"VcValueScale.h"
#include"VcSeriesCollection.h"
#include"VcSeries.h"
#include"VcPen.h"
#include"VcCategoryScale.h"
#include"VcColor.h"
#include"VcDataGrid.h"
#include"VcBackdrop.h"
#include"VcFill.h"
#include"VcBrush.h"
#include"VcDataPoints.h"
#include"VcDataPoint.h"
#include"VcDataPointLabel.h"
#include"VcAxisTitle.h"
#include"math.h"
3 系统整体设计
3.1 VC工程文件的建立
运行VS2010中文版,新建一个工程文件,如下设置:
打开VS2010会出现如图所示的界面,点击新建项目
图 3-1 vs2010打开界面
选择MFC应用程序,并确定项目名称和存储位置
图 3-2 MFC应用程序加载界面
随后是MFC向导,可根据自己的需要设置相应功能,在此我们选择基于对话框编程,其它选项默认
图 3-3 基于对话框应用程序
3.2 VC界面建立
新建好的工程文件界面如下:在资源视图中点击Dialog
图 3-4 对话框界面
点击控件栏,放置完控件的界面如下:
图 3-5 程序界面设计
(1)加载MSchart控件
可以在对话框的空白处单击右键选择Active X控件,然后单击菜单项的工具,选择选择工具箱项,出现如下窗口选择Microsoft Chart Control 6.0
(2) MSchart控件属性设置
右击MSchart控件,选择属性菜单,出现下图所示的窗口
图 3-6 MSChart控件属性
(3) MFC向导设置
用MFC向导设置各个控件的变量,点击菜单项的视图,选择类向导,则显示下图所示的窗口
1.添加消息处理函数
图 3-7 添加消息处理函数
2.添加成员变量
图 3-8 添加成员变量
3.3 应用程序设计
1.头文件包含和宏定义
#include"stdafx.h"
#include"lunwen.h"
#include"lunwenDlg.h"
#include"EasySize.h"
#include"VcPlot.h"
#include"VcAxis.h"
#include"VcValueScale.h"
#include"VcSeriesCollection.h"
#include"VcSeries.h"
#include"VcPen.h"
#include"VcCategoryScale.h"
#include"VcColor.h"
#include"VcDataGrid.h"
#include"VcBackdrop.h"
#include"VcFill.h"
#include"VcBrush.h"
#include"VcDataPoints.h"
#include"VcDataPoint.h"
#include"VcDataPointLabel.h"
#include"VcAxisTitle.h"
#include"math.h"
#define N 16
#define ln2 0.693147181
#ifdef _DEBUG
#definenew DEBUG_NEW
#undef THIS_FILE
staticchar THIS_FILE[] = __FILE__;
#endif
2.初始化成员变量
CLunwenDlg::CLunwenDlg(CWnd* pParent /*=NULL*/)
: CDialog(CLunwenDlg::IDD, pParent)
, n(0)
{
//{{AFX_DATA_INIT(CLunwenDlg)
m_kp = 0.0f;
m_ki = 0.0f;
m_kd = 0.0f;
m_gv = 0
展开阅读全文