Matlab实验报告电气与控制工程学院测控0802班任雅月08060702042011.01.082基于MATLAB的PID控制器设计PID控制是最早发展起来的经典控制策略,是用于过程控制最有效的策略之一。由于其原理简单、技术成,在实际应用中较易于整定,在工业控制中得到了广泛的应用。它最大的优点是不需了解被控对象精确的数学模型,只需在线根据系统误差及误差的变化率等简单参数,经过经验进行调节器参数在线整定,即可取得满意的结果,具有很大的适应性和灵活性。1.PID控制简介PID控制中的积分作用可以减少稳态误差,但另一方面也容易导致积分饱和,使系统的超调量增大。微分作用可提高系统的响应速度,但其对高频干扰特别敏感,甚至会导致系统失稳。所以,正确计算控制器的参数,有效合理地实现PID控制器的设计,对于PID控制器在过程控制中的广泛应用具有重要的理论和现实意义。在PID控制系统中,PID控制器分别对误差信号e(t)进行比例、积分与微分运算,其结果的加权和构成系统的控制信号u(t),送给对象模型加以控制。PID控制器的数学描述为其传递函数可表示为:从根本上讲,设计PID控制器也就是确定其比例系数Kp、积分系数Ti和微分系数Td,这三个系数取值的不同,决定了比例、积分和微分作用的强弱。控制系统的整定就是在控制系统的结构已经确定、控制仪表和控制对象等处在正常状态的情况下,适当选择控制器的参数使控制仪表的特性和控制对象的特性相配合,从而使控制系统的运行达到最佳状态,取得最好的控制效果。下面介绍基于MATLAB的Ziegler-Nichols算法PID控制器设计。2.PID控制器的Ziegler-Nichols参数整定在实际的过程控制系统中,有大量的对象模型可以近似地由一阶模型来表示。这个对象模型可以表示为sL-esT1KG(s)如果不能建立起系统的物理模型,可通过试验测取对象模型的阶跃响应,从而得到模型参数。当然,我们也可在已知对象模型的情况下,利用MATLAB,通过使用step()函数得到对象模型的开环阶跃响应曲线。在被控对象的阶跃响应中,可获取K、L和T参数,也可在MATLAB中由dcgain()函数求取K值。33.在MATLAB下实现PID控制器的设计与仿真已知被控对象的K、L和T值后,我们可以根据Ziegler—Nichols整定公式编写一个MATLAB函数ziegler_std()用以设计PID控制器。该函数程序如下:function[num,den,Kp,Ti,Td,H]=Ziegler_std(key,vars)Ti=[];Td=[];H=[];K=vars(1);L=vars(2);T=vars(3);a=K*L/T;ifkey==1num=1/a;%判断设计P控制器elseifkey==2Kp=0.9/a;Ti=3.33*L;%判断设计PI控制器elseifkey==3,Kp=1.2/a;Ti=2*L;Td=L/2;%判断设计PID控制器endswitchkeycase1num=Kp;den=1;%P控制器case2num=Kp*[Ti,1];den=[Ti,0];%PI控制器case3%PID控制器p0=[Ti*Td,0,0];p1=[0,Ti,1];p2=[0,0,1];p3=p0+p1+p2;4p4=Kp*p3;num=p4/Ti;den=[1,0];end二、现在选取一个待校正的开环传递函数;222.5s)4.8s(40.5G(s))(利用PID控制器的设计来校正将函数Zidgler_std输入以下文件并保存。num=[40.5];den=conv(conv([1,2.5],[1,2.5]),conv([1,4.8],[1,4.8]));step(num,den);K=dcgain(num,den)K=0.281356由上图的T=1.79,L=0.618;调用函数来求取参数Kp,Ti,Td输入以下命令;K=0.2813;L=0.618;T=1.79;[num,den,Kp,Ti,Td]=Ziegler_std(3,[K,L,T])num=3.818012.355919.9934den=10Kp=12.3559Ti=1.23607Td=0.3090得出参数Kp,Ti,Td后可进行动态仿真集成环境Simulink下构造系统模型8未加入PID控制的系统;Step的参数设置910上图为未加入PID控制的系统闭环响应曲线11加入PID控制后的闭环响应图三、心得这次的Matlab实验上机总的来说,还是比较顺利的,但是,还是遇到了一些问题,例如:在做开环曲线的切线斜率时选取的有些偏差,经过多次选取、验证,才得到较为准确的切线斜率,当时做的让人有点气馁,但万幸的是,最终还是成功了,心里还是非常高兴的。总共只用了两个小时作PID的设计并成功了,当然也是在与理解的基础上加上聪明的大脑,勤奋的双手就很容易了。这次的实验学到了不少东西,不仅Matlab,EDA实验都学到了很多有用的东西,可以用来实践,同时也熟悉了Matlab和Pspice软件。