面向对象的Visual C.docx
《面向对象的Visual C.docx》由会员分享,可在线阅读,更多相关《面向对象的Visual C.docx(16页珍藏版)》请在冰豆网上搜索。
面向对象的VisualC
《面向对象的VisualC++程序设计》
课程设计报告
学号:
姓名:
专业年级:
10测控技术与仪器
河南大学物理与电子学院
测控技术与仪器教研室
考试形式为提交一篇课程设计报告,题目A或B,自选。
基本要求:
1.严禁出现完全相同的报告,80%以上算雷同,成绩作废;
2.提交打印稿,6月25号前交于史瑞泽处;
3.3页以上内容,16开打印。
题目A——PID控制器的面向对象方法实现
题目要求:
1.深刻理解面向对象的程序设计方法,并使用C++实现PID功能;
2.利用重载两个构造函数初始化PID控制器,实现控制器的参数设置与控制量的更新输出;
3.在老师提供的MATLAB环境中调用PID控制器,并调节PID参数达到较好的控制效果;
4.按照格式要求撰写报告。
题目B——基于对话框的计算器MFC方法实现
题目要求:
1.深刻理解面向对象的程序设计方法,并使用MFC实现计算器功能;
2.理解并掌握MFC程序设计方法;
3.写出主要代码,并注释之;
4.按照格式要求撰写报告。
PID控制器的面向对象方法实现
1.面向对象的程序设计方法
面向对象编程
20世纪70年代中期,Bjarnestroustrup在剑桥大学计算机中心工作。
他使用过Simula和ALGOL,实现过低级语言BCPL,接触过C。
他对Simula的类体系感受颇深,对ALGOL的结构也颇有好感,深知运行效率的意义。
1979年Bjarnestroustrup到了Bell实验室,与他的同事一起开始从事将C改良为带类的C的工作,1983年该语言被正式命名为C++。
C++保留了C语言原有的所有优点,增加了面向对象的机制。
出发点是为了能更直接的描述客观世界中存在的事物(即对象),以及他们之间的关系。
面向对象编程语言将客观事物看作具有属性和行为的对象,通过抽象找出同一类对象的共同属性(静态特性)和行为(动态特性)形成类。
通过类的继承和多态可以很方便的实现代码的重用。
继承性
继承是面向对象程序设计语言的基本特性之一。
是用来表达基类与派生类之间特定关系的一种机制,该机制自动地为派生类提供来自基类的操作和数据,这样程序员就能通过只对派生类和基类之间的差异进行编码从而很快建立新类。
继承也是C++语言中类机制的一部分,该机制使类与类之间可以建立一种上下级关系。
可以通过提供来自另一个类的操作和数据成员来创建新类,程序员只需在新类中定义已有类中没有的成分即可建立新类。
在C++中,继承机制通过类的派生实现,被继承的类称为基类或父类;在继承类的基础上创建的新类称为派生类或子类。
2.PID基本原理
3.C++实现PID的程序设计
提供程序流程图
4.PID试验结果
提供试验图,并说明之。
5.总结
参考文献
[1]5-10篇
基于对话框的计算器MFC方法实现
1.面向对象的程序设计方法
综述
2.MFC程序设计方法
3.MFC实现计算器的程序设计
(提供程序流程图,可选)
4.试验结果
提供结果图,并说明之。
5.总结
3. C++实现PID的程序设计
PID控制器程序流程图:
4. PID试验结果
采样周期:
Ts=0.002; 设定值:
Setpoint=100;
1)当只有P控制器时,响应速度快,波形会出现一定的振荡。
Kp=0.8; //比例增益 Ti=0.0; //积分时间 Td=0.0; //微分时间
开始
PID控制
初始化PID 控制器参数
FeedBack
SetPoint 偏差ek
被控对象
PidOut
2)适当调节积分时间Ti后波形如下:
Kp=6; //比例增益 Ti=0.001; //积分时间 Td=0.0; //微分时间
增加了积分调节后波形变的平滑了
3)最后增加微分调节,以提高动态性能。
Kp=30; //比例增益 Ti=0.0005; //积分时间 Td=0.004; //微分时间
由以上分析知,经过PID综合调节后达到稳定的时间提前了,响应速度快,静态误差变小了,抗干扰能力大大增强。
5. 总结
通过这次课程设计让我巩固了所学的知识,学以致用,对所学的课程有了更深一步的认识。
不仅练习了本门课程C++高级语言,而且理解了PID控制的原理和掌握了其是如何实现的。
参考文献
[1] Stanley B.Lippman, Josee Lajoie, Barbara E.Moo著.李诗贤等译.C++ Primer中文版,第四
版.北京:
人民邮电出版社,2006.3.
[2] 张福祥,面对对象程序设计基础.北京:
高等教育出版社,2004.12. [3] 胡寿松,自动控制原理简明教程。
北京:
科学出版社,2008
[4] XX文库, 3&weight=4&lastweight=3&count=5
附录
PID部分源代码:
//_________头文件pid.h 实现类的定义________________________
class PID
{
public:
double Ts,Kp,Ti,Td,Setpoint;
double ek,ek_1,ek_2;
PID();
PID (double ts,double kp,double ti,double td,double setpoint);
double pid_out (double pid_in);
~PID (){} //析构函数
};
/**************************************************************** 主文件pid.cpp主要实现:
*对PID类的成员变量初始化(构造函数重载)
*PID:
:
PID()
*PID:
:
PID(double ts,double kp,double ti,double td,double setpoint)
*成员函数函数double PID:
:
pid_out(double pid_in) //增量式 PID
**********************************************************/
#include "pid.h"
//-------无参的---------------------------------------
PID:
:
PID()
{
Ts=0.002; //采样周期
Kp=30; //比例增益
Ti=0.0005; //积分时间
Td=0.004; //微分时间
Setpoint=100; //设置位置
ek=0; //当前偏差
ek_1=0; //上次偏差
ek_2=0; //前次偏差
}
//-------有参的----------------------------------------------
PID:
:
PID(double ts,double kp,double ti,double td,double setpoint)
{
Ts=ts;
Kp=kp;
Ti=ti;
Td=td;
Setpoint=setpoint;
ek=0;
ek_1=0;
ek_2=0;
}
//-----------PID 主成员函数---------------------------------
double PID:
:
pid_out(double pid_in) //增量式 PID
{
ek=Setpoint-pid_in; //当前偏差=设定的值 - PID输入值(反馈值)
double PidOut; //PID调节后输出
PidOut=Kp*(Ts/Ti+Td/Ts)*ek-Kp*(1+2*Td/Ts)*ek_1+Kp*Td/Ts*ek_2; //PID主要
ek_2=ek_1; //更新:
把“现在”的赋值给“上次”
ek_1=ek; //更新:
把“上次”的赋值给“前次”
return (double)PidOut; //返回PID调节后值,进行输出
}
参考文献
当今的自动控制技术都是基于反馈的概念。
反馈理论的要素包括三个部分:
测量、比较和执行。
测量关心的变量,与期望值相比较,用这个偏差纠正调节控制系统的响应。
目录
1概述
2基本用途
3现实意义
4系统分类
▪ 开环控制
▪ 闭环控制
▪ 阶跃响应
5调节方法
6原理特点
▪ 比例控制
▪ 积分控制
▪ 微分控制
7参数整定
8预置调整
▪ 比例增益
▪ 积分时间
▪ 微分时间
▪ 调整原则
9专利
1概述编辑
这个理论和应用的关键是,做出正确的测量和比较后,如何才能更好地纠正系统。
PID(比例(proportion)、积分(integration)、微分(differentiation))控制器作为最早实用化的控制器已有近百年历史,现在仍然是应用最广泛的工业控制器。
PID控制器简单易懂,使用中不需精确的系统模型等先决条件,因而成为应用最为广泛的控制器。
PID控制器由比例单元(P)、积分单元(I)和微分单元(D)组成。
其输入e(t)与输出u(t)的关系为
u(t)=kp[e(t)+1/TI∫e(t)dt+TD*de(t)/dt]式中积分的上下限分别是0和t
因此它的传递函数为:
G(s)=U(s)/E(s)=kp[1+1/(TI*s)+TD*s]
其中kp为比例系数;TI为积分时间常数;TD为微分时间常数
2基本用途编辑
它由于用途广泛、使用灵活,已有系列化产品,使用中只需设定三个参数(Kp,Ti和Td)即可。
在很多情况下,并不一定需要全部三个单元,可以取其中的一到两个单元,但比例控制单元是必不可少的。
首先,PID应用范围广。
虽然很多工业过程是非线性或时变的,但通过对其简化可以变成基本线性和动态特性不随时间变化的系统,这样PID就可控制了。
其次,PID参数较易整定。
也就是,PID参数Kp,Ti和Td可以根据过程的动态特性及时整定。
如果过程的动态特性变化,例如可能由负载的变化引起系统动态特性变化,PID参数就可以重新整定。
第三,PID控制器在实践中也不断的得到改进,下面两个改进的例子。
在工厂,总是能看到许多回路都处于手动状态,原因是很难让过程在“自动”模式下平稳工作。
由于这些不足,采用PID的工业控制系统总是受产品质量、安全、产量和能源浪费等问题的困扰。
PID参数自整定就是为了处理PID参数整定这个问题而产生的。
现在,自动整定或自身整定的PID控制器已是商业单回路控制器和分散控制系统的一个标准。
在一些情况下针对特定的系统设计的PID控制器控制得很好,但它们仍存在一些问题需要解决:
如果自整定要以模型为基础,为了PID参数的重新整定在线寻找和保持好过程模型是较难的。
闭环工作时,要求在过程中插入一个测试信号。
这个方法会引起扰动,所以基于模型的PID参数自整定在工业应用不是太好。
如果自整定是基于控制律的,经常难以把由负载干扰引起的影响和过程动态特性变化引起的影响区分开来,因此受到干扰的影响控制器会产生超调,产生一个不必要的自适应转换。
另外,由于基于控制律的系统没有成熟的稳定性分析方法,参数整定可靠与否存在很多问题。
因此,许多自身整定参数的PID控制器经常工作在自动整定模式而不是连续的自身整定模式。
自动整定通常是指根据开环状态确定的简单过程模型自动计算PID参数。
PID在控制非线性、时变、耦合及参数和结构不确定的复杂过程时,工作得不是太好。
最重要的是,如果PID控制器不能控制复杂过程,无论怎么调参数都没用。
虽然有这些缺点,但简单的PID控制器有时却是最好的控制器。
3现实意义编辑
目前工业自动化水平已成为衡量各行各业现代化水平的一个重要标志。
同时,控制理论的发展也经历了古典控制理论、现代控制理论和智能控制理论三个阶段。
智能控制的典型实例是模糊全自动洗衣机等。
自动控制系统可分为开环控制系统和闭环控制系统。
一个控制系统包括控制器、传感器、变送器、执行机构、输入输出接口。
控制器的输出经过输出接口、执行机构,加到被控系统上;控制系统的被控量,经过传感器,变送器,通过输入接口送到控制器。
不同的控制系统,其传感器、变送器、执行机构是不一样的。
比如压力控制系统要采用压力传感器,电加热控制系统的传感器是温度传感器。
目前,PID控制及其控制器或智能PID控制器(仪表)已经很多,产品已在工程实际中得到了广泛的应用,有各种各样的PID控制器产品,各大公司均开发了具有PID参数自整定功能的智能调节器(intelligentregulator),其中PID控制器参数的自动调整是通过智能化调整或自校正、自适应算法来实现。
有利用PID控制实现的压力、温度、流量、液位控制器,能实现PID控制功能的可编程控制器(PLC),还有可实现PID控制的PC系统等等。
可编程控制器(PLC)是利用其闭环控制模块来实现PID控制,而可编程控制器(PLC)可以直接与ControlNet相连,如Rockwell的PLC-5等。
还有可以实现PID控制功能的控制器,如Rockwell的Logix产品系列,它可以直接与ControlNet相连,利用网络来实现其远程控制功能。
4系统分类编辑
开环控制
开环控制系统(open-loopcontrolsystem)是指被控对象的输出(被控制量)对控制器(controller)的输入没有影响。
在这种控制系统中,不依赖将被控量反送回来以形成任何闭环回路。
闭环控制
闭环控制系统(closed-loopcontrolsystem)是指被控对象的输出(被控制量)会反送回来影响控制器的输入,形成一个或多个闭环。
闭环控制系统有正反馈和负反馈,若反馈信号与系统给定值信号相反,则称为负反馈(NegativeFeedback),若极性相同,则称为正反馈,一般闭环控制系统均采用负反馈,又称负反馈控制系统。
闭环控制系统的例子很多。
比如人就是一个具有负反馈的闭环控制系统,眼睛便是传感器,充当反馈,人体系统能通过不断的修正最后作出各种正确的动作。
如果没有眼睛,就没有了反馈回路,也就成了一个开环控制系统。
另例,当一台真正的全自动洗衣机具有能连续检查衣物是否洗净,并在洗净之后能自动切断电源,它就是一个闭环控制系统。
阶跃响应
阶跃响应是指将一个阶跃输入(stepfunction)加到系统上时,系统的输出。
稳态误差是指系统的响应进入稳态后,系统的期望输出与实际输出之差。
控制系统的性能可以用稳、准、快三个字来描述。
稳是指系统的稳定性(stability),一个系统要能正常工作,首先必须是稳定的,从阶跃响应上看应该是收敛的;准是指控制系统的准确性、控制精度,通常用稳态误差(Steady-stateerror)来描述,它表示系统输出稳态值与期望值之差;快是指控制系统响应的快速性,通常用上升时间来定量描述。
5调节方法编辑
PID是工业生产中最常用的一种控制方式,PID调节仪表也是工业控制中最常用的仪表之一,PID适用于需要进行高精度测量控制的系统,可根据被控对象自动演算出最佳PID控制参数。
PID参数自整定控制仪可选择外给定(或阀位)控制功能。
可取代伺服放大器直接驱动执行机构(如阀门等)。
PID外给定(或阀位)控制仪可自动跟随外部给定值(或阀位反馈值)进行控制输出(模拟量控制输出或继电器正转、反转控制输出)。
可实现自动/手动无扰动切换。
手动切换至自动时,采用逼近法计算,以实现手动/自动的平稳切换。
PID外给定(或阀位)控制仪可同时显示测量信号及阀位反馈信号。
PID光柱显示控制仪集数字仪表与模拟仪表于一体,可对测量值及控制目标值进行数字量显示(双LED数码显示),并同时对测量值及控制目标值进行相对模拟量显示(双光柱显示),显示方式为双LED数码显示+双光柱模拟量显示,使测量值的显示更为清晰直观。
PID参数自整定控制仪可随意改变仪表的输入信号类型。
采用最新无跳线技术,只需设定仪表内部参数,即可将仪表从一种输入信号改为另一种输入信号。
PID参数自整定控制仪可选择带有一路模拟量控制输出(或开关量控制输出、继电器和可控硅正转、反转控制)及一路模拟量变送输出,可适用于各种测量控制场合。
PID参数自整定控制仪支持多机通讯,具有多种标准串行双向通讯功能,可选择多种通讯方式,如RS-232、RS-485、RS-422等,通讯波特率300~9600bps仪表内部参数自由设定。
可与各种带串行输入输出的设备(如电脑、可编程控制器、PLC等)进行通讯,构成管理系统。
1.PID常用口诀:
参数整定找最佳,从小到大顺序查
先是比例后积分,最后再把微分加
曲线振荡很频繁,比例度盘要放大
曲线漂浮绕大湾,比例度盘往小扳
曲线偏离回复慢,积分时间往下降
曲线波动周期长,积分时间再加长
曲线振荡频率快,先把微分降下来
动差大来波动慢。
微分时间应加长
理想曲线两个波,前高后低4比1
一看二调多分析,调节质量不会低
2.PID控制器参数的工程整定,各种调节系统中P.I.D参数经验数据以下可参照:
温度T:
P=20~60%,T=180~600s,D=3-180s
压力P:
P=30~70%,T=24~180s,
液位L:
P=20~80%,T=60~300s,
流量F:
P=40~100%,T=6~60s。
[1]
6原理特点编辑
在工程实际中,应用最为广泛的调节器控制规律为比例、积分、微分控制,简称PID控制,又称PID调节。
PID控制器问世至今已有近70年历史,它以其结构简单、稳定性好、工作可靠、调整方便而成为工业控制的主要技术之一。
当被控对象的结构和参数不能完全掌握,或得不到精确的数学模型时,控制理论的其它技术难以采用时,系统控制器的结构和参数必须依靠经验和现场调试来确定,这时应用PID控制技术最为方便。
即当我们不完全了解一个系统和被控对象,或不能通过有效的测量手段来获得系统参数时,最适合用PID控制技术。
PID控制,实际中也有PI和PD控制。
PID控制器就是根据系统的误差,利用比例、积分、微分计算出控制量进行控制的。
比例控制
比例控制是一种最简单的控制方式。
其控制器的输出与输入误差信号成比例关系。
当仅有比例控制时系统输出存在稳态误差(Steady-stateerror)。
积分控制
在积分控制中,控制器的输出与输入误差信号的积分成正比关系。
对一个自动控制系统,如果在进入稳态后存在稳态误差,则称这个控制系统是有稳态误差的或简称有差系统(SystemwithSteady-stateError)。
为了消除稳态误差,在控制器中必须引入“积分项”。
积分项对误差取决于时间的积分,随着时间的增加,积分项会增大。
这样,即便误差很小,积分项也会随着时间的增加而加大,它推动控制器的输出增大使稳态误差进一步减小,直到等于零。
因此,比例+积分(PI)控制器,可以使系统在进入稳态后无稳态误差。
微分控制
在微分控制中,控制器的输出与输入误差信号的微分(即误差的变化率)成正比关系。
自动控制系统在克服误差的调节过程中可能会出现振荡甚至失稳。
其原因是由于存在有较大惯性组件(环节)或有滞后(delay)组件,具有抑制误差的作用,其变化总是落后于误差的变化。
解决的办法是使抑制误差的作用的变化“超前”,即在误差接近零时,抑制误差的作用就应该是零。
这就是说,在控制器中仅引入“比例”项往往是不够的,比例项的作用仅是放大误差的幅值,而目前需要增加的是“微分项”,它能预测误差变化的趋势,这样,具有比例+微分的控制器,就能够提前使抑制误差的控制作用等于零,甚至为负值,从而避免了被控量的严重超调。
所以对有较大惯性或滞后的被控对象,比例+微分(PD)控制器能改善系统在调节过程中的动态特性。
7参数整定编辑
PID控制器的参数整定是控制系统设计的核心内容。
它是根据被控过程的特性确定PID控制器的比例系数、积分时间和微分时间的大小。
PID控制器参数整定的方法很多,概括起来有两大类:
一是理论计算整定法。
它主要是依据系统的数学模型,经过理论计算确定控制器参数。
这种方法所得到的计算数据未必可以直接用,还必须通过工程实际进行调整和修改。
二是工程整定方法,它主要依赖工程经验,直接在控制系统的试验中进行,且方法简单、易于掌握,在工程实际中被广泛采用。
PID控制器参数的工程整定方法,主要有临界比例法、反应曲线法和衰减法。
两种方法各有其特点,其共同点都是通过试验,然后按照工程经验公式对控制器参数进行整定。
但无论采用哪一种方法所得到的控制器参数,都需要在实际运行中进行最后调整与完善。
现在一般采用的是临界比例法。
利用该方法进行PID控制器参数的整定步骤如下:
(1)首先预选择一个足够短的采样周期让系统工作;
(2)仅加入比例控制环节,直到系统对输入的阶跃响应出现临界振荡,记下这时的比例放大系数和临界振荡周期;
(3)在一定的控制度下通过公式计算得到PID控制器的参数。
此条应该不属于大的,抽象的PID控制理论的内容了,而是PID理论的具体应用。
8预置调整编辑
比例增益
变频器的PID功能是利用目标信号和反馈信号的差值来调节输出频率的,一方面,我们希望目标信号和反馈信号无限接近,即差值很小,从而满足调节的精度:
另一方面,我们又希望调节信号具有一定的幅度,以保证调节的灵敏度。
解决这一矛盾的方法就是事先将差值信号进行放大。
比例增益P就是用来设置差值信号的放大系数的。
任何一种变频器的参数P都给出一个可设置的数值范围,一般在初次调试时,P可按中间偏大值预置.或者暂时默认出厂值,待设备运转时再按实际情况细调。
积分时间
如上所述.比例增益P越大,调节灵敏度越高,但由于传动系统和控制电路都有惯性,调节结果达到最佳值时不能立即停止,导致“超调”,然后反过来调整,再次超调,形成振荡。
为此引入积分环节I,其效果是,使经过比例增益P放大后的差值信号在积分时间内逐渐增大(或减小),从而减缓其变化速度,防止振荡。
但积分时间I太长,又会当反馈信号急剧变化时,被控物理量难以迅速恢复。
因此,I的取值与拖动系统的时间常数有关:
拖动系统的时间常数较小时,积分时间应短些;拖动系统的时间常数较大时,积分时间应长些。
微分时间
微分时间D是根据差值信号变化的速率,提前给出一个相应的调节动作,从而缩短了调节时间,克服因积分时间过长而使恢复滞后的缺陷。
D的取值也与拖动系统的时间常数有关:
拖动系统的时间常数较小时,微分时间应短些;反之,拖动系统的时间常数较大时,微分时间应长些。
调整原则
PID参数的预置是相辅相成