第三章MATLAB及基本PD控制系仿真课件.ppt
第三章 MATLAB与基本PID控制系统仿真,3.1 PID控制概述3.2 PID控制系统仿真作业,PID控制器是一种线性控制器,它根据给定值rin(t)与实际输出值yout(t)构成控制偏差:,PID控制规律:,其中:kp比例系数;TI积分时间常数;TD微分时间常数,3.1 PID控制概述,(1)当阶跃输入作用时,P作用是始终起作用的基本分量;I作用一开始不显著,随着时间逐渐增强;D作用与I作用相反,在前期作用强些,随着时间逐渐减弱。(2)PI控制器与被控对象串联连接时,可以使系统的型别提高一级,而且还提供了两个负实部的零点。(3)与PI控制器相比,PID控制器除了同样具有提高系统稳态性能的优点外,还多提供了一个负实部零点,因此在提高系统动态性能方面具有更大的优越性。(4)PID控制通过积分作用消除误差,而微分控制可缩小超调量,加快反应,是综合了PI控制与PD控制长处并去除其短处的控制。(5)从频域角度来看,PID控制是通过积分作用于系统的低频段,以提高系统的稳态性能,而微分作用于系统的中频段,以改善系统的动态性能。,PID控制的主要特点,PID参数整定规律,几条基本的PID参数整定规律:(1)增大比例系数一般将加快系统的响应,在有静差的情况下有利于减小静差,但是过大的比例系数会使系统有比较大的超调,并产生振荡,使稳定性变坏。(2)增大积分时间有利于减小超调,减小振荡,使系统的稳定性增加,但是系统静差消除时间变长。(3)增大微分时间有利于加快系统的响应速度,使系统超调量减小,稳定性增加,但系统对扰动的抑制能力减弱。,PID控制器参数整定,PID控制器参数整定的方法很多,概括起来有两大类:(1)理论计算整定法主要依据系统的数学模型,经过理论计算确定控制器参数。这种方法所得到的计算数据未必可以直接使用,还必须通过工程实际进行调整和修改。(2)工程整定方法主要有Ziegler-Nichols整定法、临界比例度法、衰减曲线法。这三种方法各有特点,其共同点都是通过试验,然后按照工程经验公式对控制器参数进行整定。但无论采用哪一种方法所得到的控制器参数,都需要在实际运行中进行最后调整与完善。工程整定法的基本特点是:不需要事先知道过程的数学模型,直接在过程控制系统中进行现场整定;方法简单,计算简便,易于掌握。,例:基本PID控制SIMULINK仿真仿真时取kp=60,ki=1,kd=3,输入指令为rin(k)=sin(0.4*pi*t)采用ODE45迭代方法,仿真时间为10s。,3.2 PID控制系统仿真,参数设置,仿真曲线,3.2.1 数字PID,离散PID控制算法:,1、离散系统的数字PID控制仿真:,例:被控对象为:采样时间为1ms,采用Z变换进行离散化,进过Z变换后的离散化对象为:yout(k)=-den(2)yout(k-1)-den(3)yout(k-2)-den(4)yout(k-3) +num(2)u(k-1)+num(3)u(k-2)+num(4)u(k-3)分别对阶跃信号、正弦信号和方波信号进行位置响应,设计离散PID控制器。其中,S为信号选择变量,S=1时为阶跃跟踪,S=2为方波跟踪,S=3为正弦跟踪。,clear all;close all; ts=0.001;sys=tf(523407,1,86.85,10465,0);dsys=c2d(sys,ts,z);num,den=tfdata(dsys,v); u_1=0.0;u_2=0.0;u_3=0.0;y_1=0.0;y_2=0.0;y_3=0.0;x=0,0,0;error_1=0;for k=1:1:500time(k)=k*ts; S=3;if S=1 kp=0.50;ki=0.001;kd=0.001; rin(k)=1; %Step Signalelseif S=2 kp=0.50;ki=0.001;kd=0.001; rin(k)=sign(sin(2*2*pi*k*ts); %Square Wave Signal,方法一,elseif S=3 kp=1.5;ki=1.0;kd=0.01; %Sine Signal rin(k)=0.5*sin(2*2*pi*k*ts); end u(k)=kp*x(1)+kd*x(2)+ki*x(3); %PID Controller%Restricting the output of controllerif u(k)=10 u(k)=10;endif u(k)=-10 u(k)=-10;end%Linear modelyout(k)=-den(2)*y_1-den(3)*y_2-den(4)*y_3+num(2)*u_1+num(3)*u_2+num(4)*u_3; error(k)=rin(k)-yout(k); %Return of parametersu_3=u_2;u_2=u_1;u_1=u(k);,y_3=y_2;y_2=y_1;y_1=yout(k); x(1)=error(k); %Calculating Px(2)=(error(k)-error_1)/ts; %Calculating Dx(3)=x(3)+error(k)*ts; %Calculating I error_1=error(k);endfigure(1);plot(time,rin,b,time,yout,r);xlabel(time(s),ylabel(rin,yout); figure(2);plot(time,error,r)xlabel(time(s);ylabel(error);,阶跃跟踪及其偏差,仿真曲线:,方波跟踪及其偏差,正弦跟踪及其偏差,方法二,参数设置,阶跃跟踪及其偏差,2、增量式PID控制算法,例 设传递函数为:,试应用MATLAB设计数字PID控制器。,ts=0.001;sys=tf(200,1,50,0); %生成传递函数模型dsys=c2d(sys,ts,z); %连续系统转换为离散系统,零阶保 持器法离散化。 %dsys=c2d(sys,ts,zoh),零阶保持器法;foh,一阶保持器法;num,den=tfdata(dsys,v); %以行向量的形式返回传递函数分子 与分母系数。 u_1=0.0;u_2=0.0;u_3=0.0;y_1=0;y_2=0;y_3=0;x=0,0,0;error_1=0;error_2=0;kp=10; ki=0.10; kd=8;for k=1:1:1000 time(k)=k*ts; rin(k)=1.0; du(k)=kp*x(1)+kd*x(2)+ki*x(3); u(k)=u_1+du(k);,程序:,if u(k)=10 u(k)=10; end if u(k)=-10 u(k)=-10; end yout(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2; error=rin(k)-yout(k); u_3=u_2;u_2=u_1;u_1=u(k); y_3=y_2;y_2=y_1;y_1=yout(k); x(1)=error-error_1; x(2)=error-2*error_1+error_2; x(3)=error; error_2=error_1; error_1=error;endplot(time,rin,b,time,yout,r);grid on;xlabel(time(s);ylabel(rin,yout),阶跃响应曲线,3、积分分离PID控制算法及仿真基本思想:当被控量与设定值偏差较大时,取消积分作用,以免由于积分作用使得系统稳定性降低,超调量增大;当被控量接近给定值时,引入积分控制,以便消除静差,提高控制精度。具体步骤:(1)人为设定阈值e0;(2)当 时,采用PD控制;(3)当 时,采用PID控制;,积分分离控制算法为:,式中,T为采样时间; 为积分项的开关系数,且,注意:若 过大,则达不到积分分离的目的;若 过小,则会导致无法进入积分区,使控制出现余差。,例:设被控对象为一延迟对象,即采样时间为20s,延迟时间为4个采样时间,被控对象离散化为 y(k)=-den(2)y(k-1)+num(2)u(k-5)取M=1,采用积分分离PID控制器进行阶跃响应,M=2,采用普通PID控制。,clear all;close all; ts=20;%Delay plantsys=tf(1,60,1,inputdelay,80);dsys=c2d(sys,ts,zoh);num,den=tfdata(dsys,v); u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;y_1=0;y_2=0;y_3=0;error_1=0;error_2=0;ei=0;for k=1:1:200time(k)=k*ts; %Delay plantyout(k)=-den(2)*y_1+num(2)*u_5; %I separationrin(k)=40;error(k)=rin(k)-yout(k);ei=ei+error(k)*ts;,程序:,M=1;if M=1 %Using integration separation if abs(error(k)=30 if u(k)=110 % Restricting the output of controller,u(k)=110;endif u(k)=-110 u(k)=-110;end u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k); y_3=y_2;y_2=y_1;y_1=yout(k);error_2=error_1;error_1=error(k);endfigure(1);plot(time,rin,b,time,yout,r);xlabel(time(s);ylabel(rin,yout);grid;figure(2);plot(time,u,r);xlabel(time(s);ylabel(u);grid;,积分分离PID阶跃响应,普通PID阶跃响应,仿真曲线:,4、微分先行PID控制算法及仿真基本思想:微分先行PID控制的结构如下图所示,其特点是只对输出量 进行微分,而对给定值 不作微分。这样,在改变给定值时,输出不会改变,而被控量的变化通常总是比较缓和的。这种输出量先行微分控制适用于给定值 频繁升降的场合,可以避免给定值升降时所引起的系统振荡,明显地改善了系统的动态特性。,微分先行PID算法的实质是将微分运算提前进行。有两种结构,一种是对输出量的微分;另一种是对偏差的微分,在第一种结构中,只对输出量c(t)进行微分,它适用于给定量频繁升降的场合,可以避免升降给定值时所引起的超调量过大,阀门动作过分剧烈振荡。后一种结构是对偏差值先行微分,它对给定值和偏差值都有微分作用,适用于串级控制的副控制回路。因为副控制回路的给定值是由主控回路给定的,也应对其作微分处理,因此,应该在副控制回路中采用偏差PID控制。,5带死区的PID控制在控制精度要求不高、控制过程要求平稳的场合,为了避免控制动作过于频繁,消除由此引起的振荡,可以人为的设置一个不灵敏区B,即带死区的PID控制。只有不在死区范围内时,才按PID算式计算控制量。,5、基于前馈补偿的PID控制算法及仿真基本思想:前馈环节与闭环系统的传递之积为1,以实现输出完全复制输入。前馈补偿控制器为:总控制输出为PID控制输出加前馈控制输出:,例:设被控对象为输入信号:r(k)=0.5sin(6*pi*t),采用时间为1ms。,clear all;close all; ts=0.001;sys=tf(133,1,25,0);dsys=c2d(sys,ts,z);num,den=tfdata(dsys,v); u_1=0;u_2=0;y_1=0;y_2=0; error_1=0;ei=0;for k=1:1:1000time(k)=k*ts; A=0.5;F=3.0;rin(k)=A*sin(F*2*pi*k*ts); drin(k)=A*F*2*pi*cos(F*2*pi*k*ts);ddrin(k)=-A*F*2*pi*F*2*pi*sin(F*2*pi*k*ts);%Linear modelyout(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2;,程序:,error(k)=rin(k)-yout(k); ei=ei+error(k)*ts; up(k)=80*error(k)+20*ei+2.0*(error(k)-error_1)/ts; uf(k)=25/133*drin(k)+1/133*ddrin(k); M=2;if M=1 %Only using PID u(k)=up(k);elseif M=2 %PID+Feedforward u(k)=up(k)+uf(k);end if u(k)=10 u(k)=10;endif u(k)=-10 u(k)=-10;end u_2=u_1;u_1=u(k);y_2=y_1;y_1=yout(k);error_1=error(k);end,figure(1);plot(time,rin,r,time,yout,b);xlabel(time(s);ylabel(rin,yout);figure(2);plot(time,error,r);xlabel(time(s);ylabel(error);figure(3);plot(time,up,k,time,uf,b,time,u,r);xlabel(time(s);ylabel(up,uf,u);,前馈补偿PID正弦跟踪,仿真曲线:,6、PID多变量控制,对一个二变量PID控制系统结构框图为:,控制算法为:,其中:T为采样时间, , 。,例:设有耦合二变量被控对象设采样时间T=1s。给定输入为单位阶跃信号,即:,clear all;close all; u1_1=0.0;u1_2=0.0;u1_3=0.0;u1_4=0.0;u2_1=0.0;u2_2=0.0;u2_3=0.0;u2_4=0.0; y1_1=0;y2_1=0; x1=0;0;x2=0;0;x3=0;0; kp=0.020;ki=0.050;kd=0.0001; error_1=0;0;ts=1;for k=1:1:1500time(k)=k*ts; %Step Signal%R=1;0;R=0;1;,程序:,%PID Decouple Controlleru1(k)=kp*x1(1)+kd*x2(1)+ki*x3(1); u2(k)=kp*x1(2)+kd*x2(2)+ki*x3(2); u=u1(k),u2(k); if u1(k)=10 u1(k)=10;endif u2(k)=10 u2(k)=10;endif u1(k)=-10 u1(k)=-10;endif u2(k)=-10 u2(k)=-10;end %Coupling Plantyout1(k)=1.0/(1+y1_1)2*(0.8*y1_1+u1_2+0.2*u2_3);yout2(k)=1.0/(1+y2_1)2*(0.9*y2_1+0.3*u1_3+u2_2);,error1(k)=R(1)-yout1(k);error2(k)=R(2)-yout2(k);error=error1(k);error2(k); u1_4=u1_3;u1_3=u1_2;u1_2=u1_1;u1_1=u(1); u2_4=u2_3;u2_3=u2_2;u2_2=u2_1;u2_1=u(2); y1_1=yout1(k);y2_1=yout2(k); x1=error; %Calculating Px2=(error-error_1)/ts; %Calculating Dx3=x3+error*ts; %Calculating I error_1=error;endfigure(1);plot(time,R(1),k,time,yout1,b);hold on;plot(time,R(2),k,time,yout2,r);xlabel(time(s);ylabel(rin,yout);,响应曲线(R=0;1),响应曲线(R=1;0),仿真曲线:,作业,1、设被控对象 试采用增量式PID进行控制,PID的参数 , 输入信号选单位阶跃信号。2、设被控对象 采样时间为10s,延迟时间为2个采样时间。试采用积分分离式PID进行控制,并与基本PID控制进行比较。输入信号选单位阶跃信号。,