C++实现PID控制算法.doc_第1页
C++实现PID控制算法.doc_第2页
C++实现PID控制算法.doc_第3页
C++实现PID控制算法.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学习资料收集于网络,仅供参考C+实现PID控制算法|C+/VC/MFC/PID算法2008-06-10 18:50第一步:控制系统的结构仿真我们要用C+实现对这个单输入单输出系统的PID控制算法,就需要先进行结构仿真,系统结构和对象的数学模型如上图所示,我们取定参数:K=2、T1=1、T2=2.5,tao=0.6(tao代表上面那个延时参数)。系统性能指标要求:超调=10%,调节时间Ts1为整数den、num参数的获取参看“C+实现PID控制算法 理论分析|C+/VC/MFC/PID算法”2、参数声明在算法中要用到很多参数,为了方便我们定义一个结构体。typedef struct tagPid double tao;/系统纯延时参数,一般为采样时间的整数倍double ts;/采样时间int n;/n=tao/tsdouble rin,yout,u;/系统输入、系统输出、PID控制器输出double kp,ki,kd;/PID控制器参数double error_1,error_2;/,前1、2次的误差,在增量PID算法中需要error_2double error,perror,ierror,derror;/用于计算PID输出u的参数double den_1,den_2,den_3;/Z传函分母的系数double num_1,num_2,num_3;/Z传函的分子系数double yout_2; /系统输出过去时刻的值 CArray u_; /控制器过去时刻的输出值,就是上面公式中的u(k-2-n) 等int size_Yout;/Yout的大小,算法循环次数,每次的输出值计入数组Yout,用来绘制输出曲线 CArray Yout; /输出数据数组double maxYout,minYout; /输出值的最大值和最小值Pid;定义控制对象参数:double m_t1,m_t2,m_k,m_tao; /控制对象参数3、初始化参数void CICDoc:PidInit(Pid* pid)m_t1=1;m_t2=2.5;m_k=2;pid-ts=0.1;pid-tao=0.6;pid-n=(int)(pid-tao/pid-ts+0.5);pid-rin=1;pid-yout=0.0;pid-u=0.0;pid-kp=0.70;pid-ki=0.15;pid-kd=0.90;pid-error_1=0.0;pid-error_2=0.0;pid-error=0.0;pid-perror=0.0;pid-ierror=0.0;pid-derror=0.0;double z1,z2,b,c;if (m_t1=m_t2) z1=exp(-(pid-ts/m_t1); /e(-T/T1) z2=z1 pid-num_1=0; pid-num_2=m_k*(1-z1-pid-ts*z1/m_t1); pid-num_3=m_k*(z1*z1-z1+pid-ts*z1/m_t1); pid-den_1=1; pid-den_2=-2*z1; pid-den_3=z1*z1; else z1=exp(-(pid-ts/m_t1); /e(-T/T1) z2=exp(-(pid-ts/m_t2); /e(-T/T2) b=m_t1/(m_t2-m_t1); c=m_t2/(m_t1-m_t2); pid-num_1=0; pid-num_2=m_k*(1+b*z1+c*z2); pid-num_3=m_k*(z1*z2+b*z2+c*z1); pid-den_1=1; pid-den_2=-(z1+z2); pid-den_3=z1*z2; pid-yout_0=0.0;pid-yout_1=0.0;pid-u_.SetSize(pid-n+2,0);for (int i=0;in+2;i+) pid-u_i=0.0;pid-size_Yout=500;pid-Yout.SetSize(pid-size_Yout); for (int i=0;isize_Yout-1;i+) pid-Youti=0.0;/最大值和最小值初始化为第一个值pid-maxYout=pid-Yout0;pid-minYout=pid-Yout0;4、PID控制算法for (int k=0;k10) pid.u=10; if (pid.u0;j-) pid.u_j=pid.u_j-1; pid.u_0=pid.u; pid.Youtk=pid.yout;/得到最大输出值if (pid.Yo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论