matlab、simulink实现PID设计
- 格式:doc
- 大小:549.50 KB
- 文档页数:14
自动化专业07级《计算机仿真与MATLAB》课程报告题目:基于MATLAB/Simulink的PID控制系统的设计与仿真班级:姓名:学号:2010年6月基于MATLAB/Simulink的PID控制系统的设计与仿真摘要:介绍了基于Ziegler- Nichols整定方法的PID 控制器设计, 给出了基于MATLAB和Simulink的实现方法和仿真。
仿真结果表明, 此算法设计的PID 控制器有良好的性能指标。
1 控制对象建模1.1 PID 控制系统的建模PID(Proportional,Integral and Differemial)控制器是一种基于“过去”,“现在”和“未来”信息估计的简单算法。
常规PID控制系统原理框图如下图所示,系统主要由PID 控制器和被控对象组成。
作为一种线性控制器,它根据给定值rin(t)与实际输出值yout(t)构成控制偏差e(t),将偏差按比例、积分、和微分通过线性组合构成控制量u(t),对被控对象进行控制。
PID控制系统原理图PID 控制器的数学描述为:其传递函数可表示为:PID控制器各校正环节的作用如下:1.比例环节:成比例地反映控制系统的偏差信号e(t),偏差一旦产生,控制器立即产生控制作用,以减少偏差。
2.积分环节:主要用于消除静差,提高系统的无差度。
积分作用的强弱取决于积分时间常数Ti,Ti越大,积分作用越弱,反之越强。
3.微分环节:反映偏差信号的变化趋势(变化速率),并能在偏差信号变得太大之前,在系统中引入一个有效的早期修正信号,从而加快系统的动作速度,减少调节时间。
从根本上讲,设计 PID 控制器也就是确定其比例系数K p、积分系数Ti 和微分系数Td , 这三个系数取值的不同,决定了比例、积分和微分作用的强弱。
控制系统的整定就是在控制系统的结构已经确定、控制仪表和控制对象等处在正常状态的情况下, 适当选择控制器的参数使控制仪表的特性和控制对象的特性相配合, 从而使控制系统的运行达到最佳状态, 取得最好的控制效果。
本文介绍基于Ziegler- Nichols整定方法的 PID 控制器设计。
1.2 被控对象的建模在实际的过程控制系统中,有大量的对象模型可以近似地由带有延迟的一阶传递函数模型来表示,该对象的模型可以表示如下:如果不能建立起系统的物理模型,可通过试验测取对象模型的阶跃响应,从而得到模型参数。
当然, 我们也可在已知对象模型的情况下, 由 MATLAB 通过 STEP( ) 函数得到对象模型的开环阶跃响应曲线。
在被控对象的阶跃响应输出信号图(如图所示)中, 可获取 K、L 和 T 参数。
2 PID控制系统的设计Ziegler- Nichols法是一种基于频域设计 PID 控制器的方法。
此法首先通过实验获取控制对象单位阶跃响应,获得K、L 和 T 参数。
令a=KL/T,我们可以通过下表给出的Ziegler- Nichols经验公式确定P、PI 和 PID 控制器的参数。
3 PID 控制系统MATLAB/Simulink仿真分析3.1 在MATLAB 下实现PID 控制器的设计与仿真根据Ziegler- Nichols法,这里编写一个MATLAB函数ziegler,该函数的功能实现由Ziegler- Nichols公式设计PID 控制器,在设计过程中可以直接调用。
其源程序如下:function [Gc,Kp,Ti,Td,H]=ziegler(key,vars)Ti=[]; Td=[]; H=1;if length(vars)==4,K=vars(1); L=vars(2); T=vars(3); N=vars(4); a=K*L/T;if key==1, Kp=1/a;elseif key==2, Kp=0.9/a; Ti=3.33*L;elseif key==3 | key==4, Kp=1.2/a; Ti=2.2*L; Td=L/2; endelseif length(vars)==3,K=vars(1); Tc=vars(2); N=vars(3);if key==1, Kp=0.5*K;elseif key==2, Kp=0.4*K; Ti=0.8*Tc;elseif key==3 | key==4, Kp=0.6*K; Ti=0.5*Tc; Td=0.12*Tc; endelseif length(vars)==5,K=vars(1); Tc=vars(2); rb=vars(3); N=vars(5);pb=pi*vars(4)/180; Kp=K*rb*cos(pb);if key==2, Ti=-Tc/(2*pi*tan(pb));elseif key==3|key==4, Ti=Tc*(1+sin(pb))/(pi*cos(pb)); Td=Ti/4; endendswitch keycase 1,Gc=Kp;case 2,Gc=tf(Kp*[Ti,1],[Ti,0]);case 3,nn=[Kp*Ti*Td*(N+1)/N,Kp*(Ti+Td/N),Kp];dd=Ti*[Td/N,1,0];Gc=tf(nn,dd);end该函数的调用格式为:[Gc,Kp,Ti,Td]=Ziegler(key,vars)其中,key为选择控制器类型的变量:当key=1,2,3时分别表示设计P、PI、PID控制器;若给出的是阶跃响应数据,则变量vars=[K,L,T,N];若给出的是频域响应数据,则变量vars=[Kc,Tc,N]。
在实际的过程控制系统中,有大量的对象模型可以近似地由带有延迟的一阶传递函数模型来表示,该对象的模型可以表示如下:这里我们不妨设K=8,T=360,L=180,则对象模型可以表示为:利用ziegler()函数计算系统P、PI、PID控制器的参数,并给出校正后系统阶跃响应曲线。
程序如下:K=8;T=360;L=180;num=[K];den=[T 1];G1=tf(num,den)[np,dp]=pade(L,2);Gp=tf(np,dp)figure,step(G1*Gp);title('未校正前系统阶跃响应曲线曲线');grid;[Gc1,Kp1]=ziegler(1,[K,L,T,1]);Gc1[Gc2,Kp2,Ti2]=ziegler(2,[K,L,T,1]);Gc2[Gc3,Kp3,Ti3,Td3]=ziegler(3,[K,L,T,1]);Gc3G_c1=feedback(G1*Gc1,Gp);figure,step(G_c1);title('P控制器校正后的系统阶跃响应曲线')grid;G_c2=feedback(G1*Gc2,Gp);figure,step(G_c2);title('PI 控制器校正后的系统阶跃响应曲线');grid;G_c3=feedback(G1*Gc3,Gp);figure,step(G_c3);title('PID控制器校正后的系统阶跃响应曲线');grid;figure,step(G_c1);hold on;step(G_c2);hold on;step(G_c3);title('P、PI、PID控制器校正后的系统阶跃响应曲线');grid;gtext('P')gtext('PI')gtext('PID')运行程序,输出如下:Gc1 =0.2500Transfer function: 134.9 s + 0.225----------------------- 599.4 s(PI 控制器的传递函数)Transfer function:2.138e004 s^2 + 145.8 s + 0.3 -------------------------------------------3.564e004 s^2 + 396 s (PID 控制器的传递函数)05001000150020002500-1012345678未校正前系统阶跃响应曲线Time (sec)A m p l i t u d eP 、PI 、PID 校正后的系统阶跃响应曲线如下图:02004006008001000120014001600180020000.10.20.30.40.50.60.70.80.91P 控制器校正后的系统阶跃响应曲线Time (sec)A m p l i t u d e05001000150020002500300035000.20.40.60.811.21.4P I 控制器校正后的系统阶跃响应曲线Time (sec)A m p l i t u d e0100020003000400050006000700080000.20.40.60.811.21.41.61.8P ID 控制器校正后的系统阶跃响应曲线Time (sec)A m p l i t u d e0100020003000400050006000700080000.20.40.60.811.21.41.61.8P 、P I 、P ID 控制器校正后的系统阶跃响应曲线Time (sec)A m p l i t u d e由上图可知,用Ziegler- Nichols 公式计算P 、PI 、PID 控制器对系统校正后,其阶跃响应曲线中的P 、PI 控制二者的响应速度基本相同,因为两种控制的比例系数不同,因此系统稳定的输出值不同。
PI 控制超调量比P 控制的要小一些。
PID 控制比前者的响应速度都快,但超调量最大。
3.2 在Simulink 下实现PID 控制器的设计与仿真这里仍然设被控对象的传递函数是建立Simulink模型:图中,“Integrator”为积分器,“Derivative”为微分器,“Kp”为比例系数,“Ti”为积分时间常数,“Td”为微分时间常数。
进行P控制器参数整定时,微分器和积分器的输出不连到系统中,在Simulink中,把微分器和积分器的输出连线断开即可。
同理,进行PI控制器参数整定时,微分器的输出连线断开。
Ziegler- Nichols整定的第一步是获取开环系统的单位阶跃响应,在Simulink中,把反馈连线、微分器的输出连线、积分器的输出连线都断开,“Kp”的值置为1,连线得:选定仿真时间,仿真运行,运行完毕后,双击“Scope”得到结果:根据Ziegler- Nichols经验公式,可知P控制整定时,比例放大系数Kp=0.25,将“Kp”的值置为0.25,并连上反馈连线,得:选定仿真时间,仿真运行,运行完毕后,双击“Scope”得到结果:上图即为P控制时系统的单位阶跃响应。