版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录河南大学物理与电子学院本科毕业论文PAGE24PAGE25编号:河南大学2014届本科毕业论文基于VC的控制系统仿真实现技术研究论文作者姓名:作者学号:所在学院:物理与电子学院所学专业:测控技术与仪器导师姓名职称:耿涛(副教授)论文完成时间:2014年05月16日目录TOC\o"1-4"\u摘要: 11绪论 21.1引言 21.2MicrosoftVisualStudio2010中文版的简介 22PID控制器 42.1PID控制器的基本原理 42.2数字PID控制器 62.3Stehfest算法 92.4easysize窗口大小调整简单实现 102.5MSchart控件 123系统整体设计 133.1VC工程文件的建立 133.2VC界面建立 153.3应用程序设计 183.4应用程序实现功能 224结论 24参考文献 25河南大学物理与电子学院本科毕业论文基于VC的控制系统仿真实现技术研究(河南大学物理与电子学院,河南开封,475004)摘要:本文基于VS2010进行软件平台的开发,主要是考虑到VS2010软件平台有较好的开放性以及运行速度的高效性,同时有可视化编程环境IDE、Win32应用程序接口API、友好的图形用户界面GUI,本文首先详细分析了PID控制器算法的基本原理,尤其是数字式PID控制器中的增量式PID控制器,论文从分析其基本原理出发,详细阐述了增量式PID控制器算法的实现过程;本文还采用一种拉普拉斯反变换的近似算法:Stehfest算法,将S域的拉普拉斯表达式近似转换为时域的函数表达式,最后采用MSChart控件将显示出来,完成PID控制系统的仿真,经实验,最终取得满意的结果。关键词:VC;PID;Stehfest算法;MSChart控件TheresearchofcontrolsystemsimulationtechnologybasedonVCXiangQi-dan(SchoolofPhysicsandElectronics,HenanUniversity,HenanKaifeng475004,China)Abstract:ConsideringtheVS2010softwareplatformhasgoodopennessandrunningspeedofhighefficiency,atthesametimehasavisualprogrammingenvironmentIDE,Win32applicationprogramminginterfaceAPI,friendlygraphicaluserinterfaceGUI,IusetheVS2010forThedevelopmentofsoftwareplatforminthispaper.Firstofall,thispaperhasadetailedanalysisofthebasicprincipleofthePIDcontrolleralgorithm,especiallytheincrementaldigitalPIDcontroller.Startingfromtheanalysisofitsbasicprinciple,thepaperexpoundstheprocessoftheimplementationoftheincrementalPIDcontrolleralgorithm;ThispaperalsoadoptsanapproximatealgorithmofinverseLaplacetransform:Stehfestalgorithm,whichconvertsSdomainLaplaceexpressionsoftimedomaininanapproximatemethod.FinallytheMSChartcontrolwilldisplaytheimageof,completeingsimulationofPIDcontrolsystem,Accordingtotheexperiment,theprogremachievedsatisfactoryresultsintheend.Keywords:VC;PID;Stehfestalgorithm;MSChartcontrol1绪论1.1引言从20世纪30年代以来,生产自动化技术取得巨大成就,工业自动化涉及范围很广,过程控制是其中最重要的一个分支,工业生产对过程控制的要求是稳定性、安全性和经济性。过程控制的任务是在了解、掌握工艺流程和生产过程的静态和动态特性的基础上,根据上述三项要求,应用理论对控制系统进行分析和综合,最后采用合适的技术手段加以实现。在很多情况下,只需采用商品化的常规调节器进行PID控制就可以实现其控制任务。 基于偏差的比例(Proportional)、积分(Integral)和微分(Derivative)的控制器简称为PID控制器,是在工业过程控制中的最常见的一种过程控制器[]王述彦,师宇.基于模糊PID控制器的控制方法研究[J].北京:机械科学与技术2011年01期。这是因为PID控制器算法有很多优点,首先,虽然很多工业过程是非线性或时变的,但通过对其简化可以变成基本线性和动态特性不随时间变化的系统,这样PID就可控制了;其次,PID参数较易整定[]王述彦,师宇.基于模糊PID控制器的控制方法研究[J].北京:机械科学与技术2011年01期 尽管在控制领域,不断涌现出各种新型控制器,但PID控制器还是以其结构简单、易实现、鲁棒性强等优点,在控制领域中处于主导地位,是工业过程控制的基础。根据日本有关调查资料显示,现今使用的各种控制技术中,PID技术站84.5%,优化PID控制技术占6.8%,现代控制技术占1.6%,人工智能技术占0.6%。如果把优化PID控制技术和PID控制技术加起来,那么PID技术占到整个控制技术的90%以上,有资料也指出,工业过程控制中,95%以上的回路具有PID结构[][]王蕾,宋文忠.PID控制[J].北京:自动化仪表2004年04期1.2MicrosoftVisualStudio2010中文版的简介本文介绍了基于MicrosoftVisualStudio2010平台的VC的PID控制模块设计。而MicrosoftVisualStudio2010是目前最流行的Windows平台应用程序开发环境,于2010年4月12日上市,它的集成开发环境的界面被重新设计,变得更加简洁明了,它是在多年使用过程中不断改进的基础上推出的,做了很大改进,增添了许多新功能,其主要的功能特点可概括为以下几个方面:(1)语言方面: a)VisualBasic2010的新功能:隐含行接续、自动实作属性、集合初始设定式等 b)VisualC#2010的新功能:dynamic型别、具名和选择性引数、增强型Office程式设计和变更数。 c)VisualC++2010的新功能:Lambda运算式、右值参考宣告子及auto、decltype与static_assert关键字 d)VisualF#2010的新功能:支持.NETFramework的函数程序设计。(2)其他技术: a)多显示器支持; b)使用VisualStudio2010的特性支持TDD; c)支持Office; d)QuickSearch特性 e)IDE增强 f)使用VisualC++2010创建Ribbon界面;此外,MicrosoftVisualStudio2010在外观行为、浏览代码、调试、项目功能对应、测试先行支持、代码生成、起始页、扩展管理器、对话框、新帮助查看器等方面均做了改进,还支持WindowsAzure,微软云计算架构迈入重要里程碑;助力移动与嵌入式装置开发;实践当前最热门的Agile/Scrum开发方法,可以强化团队竞争力;搭配Windows7,Silverlight4与Office,发挥多核并行运算威力。MicrosoftVisualStudio2010目前有五个版本:专业版(Professional)、高级版(Premium)、旗舰版(Ultimate))、学习版(Express)和测试版(TestProfessional)。(1)专业版(Professional)面向个人开发人员,提供集成开发环境、开发平台支持、测试工具等。(2)高级版(Premium):创建可扩展、高质量程序的完整工具包,相比专业版增加了数据库开发、TeamFoundationServer(TFS)、调试与诊断、MSDN订阅、程序生命周期管理(ALM)。(3)旗舰版(Ultimate):面向开发团队的综合性ALM工具,相比高级版增加了架构与建模、实验室管理等。(4)学习版(Express):VisualStudio2010(Express)是一个免费工具。它从VisualStudio产品线,提供了新的集成开发环境,vs2010一个新的编辑器内建在WindowsPresentationFoundation(WPF)和新的支持像爱好者非专业开发人员,从本质上时,VisualStudio2010Express是轻量级版本。(5)测试专业版(TestProfessional):简化测试规划与人工测试执行的特殊版本,包含TFS、ALM、MSDN订阅、实验室管理、测试工具。2PID控制器2.1PID控制器的基本原理PID调节器是一种线性调节器,是基于对变量“过去”、“现在”和未来信息估计的交叉控制算法,控制系统框图如图1所示,它将给定值r(t)与实际输出值c(t)的偏差的比例(P)、积分(I)、微分(D)通过线性组合构成控制量,对控制对象进行控制[][]何芝强.PID控制器参数整定方法及其应用研究[D].杭州:浙江大学图2-1控制系统框图PID控制器由比例单元(P)、积分单元(I)和微分单元(D)组成,是具有比例-积分-微分控制规律的控制器[]韩帮华.PID控制器参数整定方法及应用研究[D].青岛:青岛科技大学。当系统是连续控制时,[]韩帮华.PID控制器参数整定方法及应用研究[D].青岛:青岛科技大学(1-1)相应的传递函数为(1-2)其中为比例系数;为积分时间常数;为微分时间常数。 使用中只需设定三个参数(,和)即可。在很多情况下,并不一定需要全部三个单元,可以取其中的一到两个单元,但比例控制单元是必不可少的。各种控制作用(即比例作用、微分作用和积分作用)的实现在表达式(1-1)、(1-2)中表达得很清楚,相应的控制器参数包括比例系数,积分时间常数,微分(1)比例控制 比例控制是一种最简单的控制方式,可以及时地反应控制系统的偏差信号,一旦系统出现了偏差,比例调节作用即产生调节作用,减小系统偏差的变化。具有比例控制规律的控制器,称为P控制器[]白金,韩俊伟.基于Matlab/Simulink环境下的PID参数整定[J].哈尔滨:哈尔滨商业大学学报2007年06期。P控制器实质上是一个具有可调增益的放大器,在信号变换过程中,P控制器只改变信号增益而不影响其相位。在串联校正中,加大控制器增益,可以提高系统的开环增益,减小系统稳态误差,从而提高系统的控制精度,但会降低系统的相对稳定性,甚至可能造成闭环系统不稳定。因此,在系统校正设计中,很少单独使用比例控制规律[][]白金,韩俊伟.基于Matlab/Simulink环境下的PID参数整定[J].哈尔滨:哈尔滨商业大学学报2007年06期[]李晓丹.模糊PID控制器的设计研究[D].天津:天津大学(2)积分控制 具有积分控制规律的控制器,称为I控制。I控制器的输出信号与其输入信号的积分成正比,即(1-3)其中,为可调系数。由于I控制器的积分作用,当其输入消失后,输出信号有可能是一个不为零的常量。 在串联校正时,采用I控制器可以提高系统的型别,有利于系统稳定性的的提高,但积分控制使系统增加了一个位于原点的开环极点,使信号产生的相角滞后,不利于系统的稳定性[]黄宜庆.PID控制器参数整定及其应用研究[D].安徽:安徽理工大学。如果I控制器和之前提到的P控制器结合起来,便构成了具有比例-积分控制规律的控制器,称PI控制器,其输出信号[]黄宜庆.PID控制器参数整定及其应用研究[D].安徽:安徽理工大学(1-4)其中,为可调比例系数;为可调积分时间常数。在串联校正时,PI控制器相当于在系统中增加了一个位于原点的开环极点,同时也增加了一个位于s左半平面的开环零点。位于原点的极点可以提高系统的型别,以消除或减小系统的稳态误差,改善系统的稳态性能;而增加的负实零点则用来减小系统的阻尼程度,缓和PI控制器极点对系统稳定性及动态过程产生的不利影响[]金奇,邓志杰.PID控制原理与整定方法[J].重庆:重庆工学院学报2008年05期。只要积分时间常数足够大,PI控制器对系统稳定性的不利影响可大为减弱。在控制工程实践中,PI控制器主要用来改善控制系统的稳态性能。[]金奇,邓志杰.PID控制原理与整定方法[J].重庆:重庆工学院学报2008年05期(3)微分控制 微分控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系,可以改善控制系统的响应速度和稳定性,微分作用能预见偏差变化的趋势,并能在偏差信号变得太大之前,在系统中引入一个有效的早期修正信号,反应系统偏差变化的规律,能产生超前的控制作用,从而加快系统的动作速度,减少调节时间。简单来说,微分作用能在偏差还没有形成之前,就可以消除误差,改善系统的动态性能[][]胡寿松.自动控制原理[M].北京:科学出版社 微分作用取决于微分时间常数,越大,控制器的微分作用表现得就越强,偏大时,超调量会较大,调节时间也会较长;越小,控制器的微分作用越弱,偏小时,超调量也较大,相应调节时间也会较长;调节合适时,系统的超调量和调节时间可以有效的减小。微分作用反映的是输入信号的变化率,当偏差没有变化时,微分作用的输出为零。此外,从滤波器角度来说,微分控制器相当于一个高通滤波器,对噪声干扰有放大作用,这对系统是非常不利的,因此我们就不能过多的增加微分调节[]苏明,陈伦军,林浩.模糊PID控制及其MatLab仿真[J].北京:现代机械2004年04期。[]苏明,陈伦军,林浩.模糊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.3Stehfest算法 对于函数定义其拉普拉斯变换为:3-1 称为函数的拉普拉斯变换像函数。在VC中要实现对控制系统的输出值的计算,需要将S域的拉普拉斯表达式转换为时域的函数表达式,则需要拉普拉斯反变换。 目前经常使用的反变换法有部分分式展开法和围线积分法。当表达式比较复杂时,这两种方法都很难实现反变换.这时就需要采用一种新的算法来实现拉普拉斯反变换。Stehfest算法就是这样的一种拉普拉斯反变换的近似算法。采用围线积分法实现反变换时,需要计算被积表达式在各极点上的留数。但当表达式比较复杂或存在多重极点时,微分运算用手工实现比较困难;借助计算机运算时,由于数值微分算法具有天生的数值不稳定性,又使运算误差不易控制。Stehfest算法用一个全新的表达式代替围线积分法中的积分式,可在计算机辅助下近似实现拉普拉斯反变换,其形式如下:(3-2) 其中:(3-3)(3-4)(3-5) 表达式(3-2)中为的近似表达式,式中的必须是正的偶数,具体的选值下文将详细说明。 Stehfest算法易于编程,在程序部分中提供利用TurobC语言编制的该算法程序。接着对其使用条件和适用范围做进一步的讨论。Stehfest指出,对于那些随变量t的变化振荡较快的函数,使用该算法误差较大。而通过实际运算,作者发现,对于表达式中含有的函数,像、甚至(这里a是常数),当变量t较小时(通常在0~1之间),近似效果较好,当超出这一范围时,误差明显增大.另外,当表达式中分母多项式的次数M与分子多项式的次数N之间存在关系时,近似效果较好。同时,Stehfest推荐n在4~32之间选取,一般情况下取16。有研究指出,使用Stehfest算法所得结果与实际结果非常接近,其误差一般都能控制在~之间,因而对于振荡频率较低,且用部分分式展开法和围线积分法实现拉普拉斯反变换较困难的情况采用Stehfest算法进行反变换会取得比较满意的结果[]刘利强.拉普拉斯反变换的一种数值算法[J].内蒙古:内蒙古工业大学学报第21卷第1期。[]刘利强.拉普拉斯反变换的一种数值算法[J].内蒙古:内蒙古工业大学学报第21卷第1期2.4easysize窗口大小调整简单实现 由于对话框按原大小运行时,受其本身大小的影响,不能够将图形有效的显示,因此需要设置窗口使其能够实现最大化。首先,要设置对话框属性,将最大化,最小化设置为TRUE。其次使用easysize,它是很好用的宏,解决了控件随窗口大小改变而改变大小及位置的要求。首先需要准备好使用easysize所需的头文件,下面介绍其具体实现方法[][]MarcRicharme,EasySize-Dialogresizinginnotime![J/OL]http:///Articles/1657/EasySize-Dialog-resizing-in-no-time创建的对话框的类名是CLunwenDlg,具体过程如下:步骤一:把easysize.h拷贝到CLunwenDlg项目文件夹中,同时在CLunwenDlg的.h文件和.cpp文件中加入#include"easysize.h";步骤二:在CMyDlg类的h文件中,加入DECLARE_EASYSIZE,注意结尾处不要加“;”。
classCMyDlg:publicCDialog{
DECLARE_EASYSIZE//Construction…} 步骤三:在CLunwenDlg类的OnInitDialog()函数的结尾处加入INIT_EASYSIZE,注意此处结尾处要加“;”。BOOLCMyDlg::OnInitDialog(){
…//TODO:Addextrainitializationhere
INIT_EASYSIZE;
returnTRUE;
//returnTRUE
unlessyousetthefocustoacontrol}步骤四:增加WM_SIZE消息响应函数OnSize(),在函数中加入UPDATE_EASYSIZE,注意此处结尾处要加“;”。voidCMyDlg::OnSize(UINTnType,intcx,intcy){
CDialog::OnSize(nType,cx,cy);
//TODO:Addyourmessagehandlercodehere
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.5MSchart控件在VC的环境下显示控制曲线,可以选择ZedGraph.dll,TEECHART以及本文所介绍的MSchart控件[]郭先春,姜林,罗定贵.基于MSChart控件的动态综合水文GIS专题图的生成[J].安徽:[]郭先春,姜林,罗定贵.基于MSChart控件的动态综合水文GIS专题图的生成[J].安徽:安徽农业科学2010年01期[]张成才.利用MSChart控件动态生成统计图[J].郑州:郑州大学学报2007年03期图2-3MSChart控件加载需要注意的是很多时候VC6.0中不带这个库,需要自己添加。其具体添加方法:(1)下载mschrt20.ocx,放在system32中,安装并注册控件,注册方法:复制本文件到C盘window/system32/下,然后再命令行中输入regsvr32mschrt20.ocx即可。在运行实例,成功!完成后,在VC6.0或VS2010中便可加载该控件(2)然后,建立工程,选择对话框程序。添加Microsoftchartcontrol控件(选择ActiveX控件中com中找到,添加ActiveX控件:Tools->choosetoolboxitems->COMcomponents
选择Microsoftchartcontrol)[]曲国伟,王英慧.VC++环境下利用MSChart控件对GPS数据的处理[J].北京:计算机与现代化2007年第九期[]曲国伟,王英慧.VC++环境下利用MSChart控件对GPS数据的处理[J].北京:计算机与现代化2007年第九期(3)添加类Project->Addclass->MFCclassfromTypelib选择Microsoftchartcontrol。初学者可以全部添加,这时工程中会生成许多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.1VC工程文件的建立 运行VS2010中文版,新建一个工程文件,如下设置: 打开VS2010会出现如图所示的界面,点击新建项目图3-1vs2010打开界面选择MFC应用程序,并确定项目名称和存储位置图3-2MFC应用程序加载界面随后是MFC向导,可根据自己的需要设置相应功能,在此我们选择基于对话框编程,其它选项默认图3-3基于对话框应用程序3.2VC界面建立新建好的工程文件界面如下:在资源视图中点击Dialog图3-4对话框界面点击控件栏,放置完控件的界面如下:图3-5程序界面设计(1)加载MSchart控件 可以在对话框的空白处单击右键选择ActiveX控件,然后单击菜单项的工具,选择选择工具箱项,出现如下窗口选择MicrosoftChartControl6.0(2)MSchart控件属性设置右击MSchart控件,选择属性菜单,出现下图所示的窗口图3-6MSChart控件属性(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"#defineN16#defineln20.693147181#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif2.初始化成员变量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.0f; yt=0.0; et_1=0.0; et_2=0.0; ts=0.001f; ncount=0; ut_1=0.0; n=1; //}}AFX_DATA_INIT //NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32 m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);}3.实现控件和内存之间的数据交换voidCLunwenDlg::DoDataExchange(CDataExchange*pDX){ CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CLunwenDlg) DDX_Text(pDX,IDC_EDIT1,m_kp); DDX_Text(pDX,IDC_EDIT2,m_ki); DDX_Text(pDX,IDC_EDIT3,m_kd); DDX_Text(pDX,IDC_EDIT4,m_gv); DDX_Control(pDX,IDC_MSCHART1,m_Chart); //}}AFX_DATA_MAP4.“运行”按钮程序段voidCLunwenDlg::OnClickedStart(){ UpdateData(TRUE);将控件的数据传递给控件变量initChart();m_timer=SetTimer(1,100,NULL);//1/10second设置计时器}5.“参数重设”按钮程序段voidCLunwenDlg::OnRetry(){ //TODO:Addyourcontrolnotificationhandlercodeherem_kp=0.0;m_ki=0.0;m_kd=0.0;m_gv=0;UpdateData(FALSE);KillTimer(m_timer);m_Chart.Refresh();}6.“退出”按钮程序段voidCLunwenDlg::OnClose(){ //TODO:Addyourcontrolnotificationhandlercodehere CDialog::OnOK();}7.初始化MSChart控件voidCLunwenDlg::initChart(){m_Chart.SetShowLegend(TRUE); m_Chart.SetColumnLabel((LPCTSTR)"PID曲ú线?");m_Chart.SetStacking(FALSE); VARIANTvar;m_Chart.GetPlot().GetAxis(1,var).GetValueScale().SetAuto(FALSE);m_Chart.GetPlot().GetAxis(1,var).GetValueScale().SetMaximum(1);m_Chart.GetPlot().GetAxis(1,var).GetValueScale().SetMinimum(0);m_Chart.GetPlot().GetAxis(1,var).GetValueScale().SetMajorDivision(10);m_Chart.GetPlot().GetAxis(1,var).GetValueScale().SetMinorDivision(1);m_Chart.GetPlot().GetAxis(0,var).GetCategoryScale().SetAuto(FALSE);m_Chart.GetPlot().GetAxis(0,var).GetCategoryScale().SetDivisionsPerLabel(1);m_Chart.GetPlot().GetAxis(0,var).GetCategoryScale().SetDivisionsPerTick(1);m_Chart.SetColumnCount(1);m_Chart.GetPlot().GetAxis(1,var).GetAxisTitle().SetText("yt");m_Chart.GetP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《制备实验方案的设计与评价》教学设计
- 《智能洗衣机控制系统设计与调试:PLC与传感器技术综合应用》教案(高职机电一体化技术专业二年级)
- 八年级物理(上册)《光的折射规律探究》教学设计
- 八、生活·科技·社会-中考物理跨学科实践专题复习教学设计
- 八年级英语上册第六单元语法:过去进行时与故事叙述跨学科整合教学设计
- 本科工业工程专业二年级《人体工效学》作业空间数字化建模项目式教案
- 第20课 抗日战争的胜利教学设计中职基础课-中国历史(全一册)-高教版-(历史)-60
- 初中人教版27.3位似教学设计
- 八年级生物下册 第七单元 第一章 第二节《食品保存》教案 济南版
- 川教版(2019)小学信息技术六年级下册第一单元第1节《初识机器人》教学设计及反思
- 大学生如何规范网络行为
- 儿童眼睛保健知识宣传
- ip地址管理规范制度
- 2026年高考化学一轮复习:必修1默写小纸条(57天含答案)
- 吡喹酮在不同温度条件下的保质期确定研究-洞察及研究
- 2026年二级建造师之二建水利水电实务考试题库300道附答案【模拟题】
- 智能无人驾驶车辆标准体系研究报告
- 隧道安全隐患排查培训课件
- 教育部突发事件应急预案
- 讲解软体家具方案
- 数控刀具刀柄讲解
评论
0/150
提交评论