网站大量收购独家精品文档,联系QQ:2885784924

基于c++的pid控制设计.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于c的pid控制设计

《面向对象的Visual C++程序设计》 课程设计报告 学 号: 姓 名: 专业年级: 河南大学物理与电子学院 测控技术与仪器教研室 PID控制器的面向对象方法实现 1. 面向对象的程序设计方法 面对对象编程(Object-oriented Programming,OOP) C++是由ATT Bell(贝尔)实验室的Bjarne Stroustrup 博士及其同事与20世纪80年代在C语言的基础上开发成功的。C++保留了C语言原有的所有优点,增加了面向对象的机制。 出发点是为了能更直接的描述客观世界中存在的事物(即对象),以及它们之间的关系。面对对象编程语言将客观事物看作具有属性和行为的对象,通过抽象找出同一类对象的共同属性(静态特性)和行为(动态特性)形成类。通过类的继承与多态可以很方便的实现代码的重用。 抽象 抽象是忽略与与所处理问题无关或非本质的信息,以充分的注意与当前目标有关的特征。封装性, 类,对象:将数据及对数据的操作方法放在一起,作为一个相互依存、不可分割的整体——对象。对同类型的对象抽象出其共性,形成类。 继承性 基类,派生类:继承是一种连接类的层次模型,提供了一种表述共性的方法。新的类可以从现有的类中派生,派生的类可以继承现有类的属性和操作,也可以修改和增加新的操作。 多态性 重载,动态联编:类中具有相似功能的不同函数使用同一个名字来使用,允许不同类的对象对同一个消息作出不同的响应。允许派生类的的对象当作基类的来使用。多态性提高了代码的重用性和可扩展性。 2. PID基本原理 PID代表Proportonal-Integral-Differential,即比例积分微分,指的是一项流行的线性控制策略。 P控制器实质上是一个可调增益的放大器。其控制器的输出与输入误差信号成比例关系。 I控制器可以提高系统的性别(无差度),I应发生在系统频率特性的低频段以提高系统的稳态性能。 D能反应输入信号的变化趋势,产生早期的修正信号,增加系统的阻尼程度,从而改善系统的稳定性。应使D发生在频率特性的中频段,以改善系统的动态性能。 3. C++实现PID的程序设计 PID控制器程序流程图: 4. PID试验结果 采样周期:Ts=0.002; 设定值:Setpoint=100; 1)当只有P控制器时,响应速度快,波形会出现一定的振荡。 Kp=0.8; //比例增益 Ti=0.0; //积分时间 Td=0.0; //微分时间 2)适当调节积分时间Ti后波形如下: Kp=6; //比例增益 Ti=0.001; //积分时间 Td=0.0; //微分时间 增加了积分调节后波形变的平滑了 3)最后增加微分调节,以提高动态性能。 Kp=30; //比例增益 Ti=0.0005; //积分时间 Td=0.004; //微分时间 由以上分析知,经过PID综合调节后达到稳定的时间提前了,响应速度快,静态误差变小了,抗干扰能力大大增强。 5. 总结 通过这次课程设计让我巩固了所学的知识,学以致用,对所学的课程有了更深一步的认识。不仅练习了本门课程C++高级语言,而且理解了PID控制的原理和掌握了其是如何实现的。 参考文献 Stanley B.Lippman, Josee Lajoie, Barbara E.Moo著..北京,. ,.,2004.12. [4] 百度文库,/view/6a84c522bcd126fff7050b0e.html?from=ecpos= 3weight=4lastweight=3count=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

文档评论(0)

shenlan118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档