1 / 20

基于 matlab 的典型二阶系统的模糊控制与传统 PID 控制的性能比较

基于 matlab 的典型二阶系统的模糊控制与传统 PID 控制的性能比较. 一.相关概念 1.系统数学模型:系统的数学模型在系统的分析中起着重要的作用,建立数学模型的目的之一是为了用数学方法定量地对系统进行分析。当系统微分方程列出后,只要给定输入量的初始条件,便可以对微分方程求解。 假设系统是单输入单输出系统(简称 SISO )系统,其输入输出分别用 u ( t ), y ( t )来表示,并且系统的初始条件为零,则得到线性系统的传递函数模型:

thane-glenn
Download Presentation

基于 matlab 的典型二阶系统的模糊控制与传统 PID 控制的性能比较

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较 一.相关概念 1.系统数学模型:系统的数学模型在系统的分析中起着重要的作用,建立数学模型的目的之一是为了用数学方法定量地对系统进行分析。当系统微分方程列出后,只要给定输入量的初始条件,便可以对微分方程求解。 假设系统是单输入单输出系统(简称SISO)系统,其输入输出分别用u(t),y(t)来表示,并且系统的初始条件为零,则得到线性系统的传递函数模型: 若系数 (i=0,…m) 与(i=0,…n-1)为常数,则系统称为线性定常系统。在MATLAB语言中,可以利用传递函数分子、分母多项式的系数向量进行描述。分子多项式的系数向量为 分母多项式的系数向量为 这里分子、分母多项式系数按s的降幂排列。

  2. 基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较  2.二阶系统:用二阶微分方程描述的系统,称二阶系统。它在控制系统中应用极为广泛 ,许多高阶系统,在一定条件下,往往可以简化成二阶系统。因此,详细研究和分析二阶系统的特性,具有重要的实际意义。  系统闭环传递函数为:  我们这里所要讨论的是二阶系统加上一些典型的非线性环节,如死区.饱和,纯延迟

  3. 控制器 对象 基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较  这里假设系统(传递函数模型)为: 控制执行结构具有0.07的死区和0.7的饱和,取样时间间隔T=0.01 在matlab是利用系统的状态空间模型,因此我们要将上述模型转换为 状态空间模型,matlab中提供了tf2ss(num,den)函数进行模型的转换 注:状态方程的一阶微分方程表示形式为: X为n维状态向量,U为m维输入矩阵;Y为l维输出向量;A为n×n的系统状态阵,由系统参数决定,B为n×m维系统输入阵;C为l×n维输出阵;D为l×m维直接传输阵。

  4. 基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较  我们的目标就是根据控制量U求出系统输出量Y,然后将其跟参考参考输入进行比较得到系统偏差及偏差变化率,最后将其用于系统控制 3.龙格-库塔算法:求解常微分方程的数值解法,此方法可使局部截断误差达到    ,也就是三阶精度,具体推导见 《计算方法》(第二版)易大义 沈云宝 李有法编  浙江大学出版社 这里直接应用其得出的结论: 对于一阶常微分方程:

  5. 基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较 其数值解为:

  6. 基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较  具体过程(matlab程序):  系统模型建立: num=20; den=[1.6,4.4,1]; [a1,b,c,d]=tf2ss(num,den);%将传递函数转化为状态模型 x=[0;0]; T=0.01;h=T; %T为采样时间 umin=0.07;umax=0.7; td=0.02;Nd=td/T; %Nd延迟时间 N=500;R=1.5*ones(1,N);%参考值

  7. u PID 对象 基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较 1.传统PID控制过程  其matlab程序如下: e=0; de=0;ie=0; kp=5;ki=0.1;kd=0.001;%设定的比例,积分,微分常数

  8. 基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较 for k=1:N% N为采集次数 uu1(1,k)= -(kp*e+ki*ie+kd*de);%控制量生成 if k<=Nd %纯延迟 u=0; else u=uu1(1,k-Nd); end if abs(u)<=umin%死区和饱和环节 u=0 elseif abs(u)>umax u=sign(u)*umax; end

  9. 基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较 %龙格-库塔算法求对象的输出 k1=a1*x+b*u; k2=a1*(x+h*k1/2)+b*u; k3=a1*(x+h*k2/2)+b*u; k4=a1*(x+h*k3)+b*u; x=x+(k1+2*k2+2*k3+k4)*h/6; y=c*x+d*u; %计算误差.微分和积分 e1=e; e=y(1,1)-R(1,k); de=(e-e1)/T; ie=e*T+ie; yy1(1,k)=y;end;kk=[1:N]*T;figure(1);plot(kk,yy1);

  10. 基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较 2.模糊控制   1)量化:设e和de的模糊量为:”负大NB”, “负小NS”,“零ZR”,’’正小PS”,” 正大PB”,将它们量化在[-6 6]论域上,控制量u的模糊量为: ”负大NB”, “负小NS”,“零ZR”,’’正小PS”,” 正大PB”, 将其量化到[-3 3],隶属函数分别如下图 

  11. 基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较

  12. 基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较 2)模糊推理规则如下定义 e u de

  13. 基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较 matlab建立过程: a=newfis(‘simple’);% 建立模糊推理系统 a=addvar(a,‘input’,‘e’,[-6 6]);%增加第一个输入变量e a=addmf(a,‘input’,1,‘NB’,‘trapmf’,[-6 -6 -5 -3]);%添加隶属函数 a=addmf(a,'input',1,'NS','trapmf',[-5 -3 -2 0]); a=addmf(a,'input',1,'ZR','trimf',[-2 0 2]); a=addmf(a,'input',1,'PS','trapmf',[0 2 3 5]); a=addmf(a,'input',1,'PB','trapmf',[3 5 6 6]); a=addvar(a,‘input’,‘de’,[-6 6]);增加第二个输入变量e a=addmf(a,'input',2,'NB','trapmf',[-6 -6 -5 -3]); %添加隶属函数 a=addmf(a,'input',2,'NS','trapmf',[-5 -3 -2 0]); a=addmf(a,'input',2,'ZR','trimf',[-2 0 2]); a=addmf(a,'input',2,'PS','trapmf',[0 2 3 5]); a=addmf(a,'input',2,'PB','trapmf',[3 5 6 6]);

  14. 基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较 a=addvar(a,‘output’,‘u’,[-3 3]);%添加输出变量u a=addmf(a,‘output’,1,‘NB’,‘trapmf’,[-3 -3 -2 -1]);%添加隶属函数 a=addmf(a,'output',1,'NS','trimf',[-2 -1 0]); a=addmf(a,'output',1,'ZR','trimf',[-1 0 1]); a=addmf(a,'output',1,'PS','trimf',[0 1 2]); a=addmf(a,'output',1,'PB','trapmf',[1 2 3 3]); %建立模糊规则矩阵 rr=[5 5 4 4 3;5 4 4 3 3;4 4 3 3 2;4 3 3 2 2;3 3 2 2 1]; r1=zeros(prod(size(rr)),3);%得到一个25X3的0阶矩阵 k=1;

  15. 基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较 for i=1:size(rr,1) for j=1:size(rr,2) r1(k,:)=[ i,j,rr(i,j)]; k=k+1; end end [r,s]=size(r1); r2=ones(r,2); rulelsit=[r1,r2]; a=addrule(a,rulelsit);%rulelist 为25X(2+1+2)矩阵,每一行代表一个规则,某一 %行的前2列为输入,接着一列为输出,最后两列为控制所有均 %为1 e=0;de=0;ie=0; x=[0;0]; ke=60;kd=2.5;ku=0.8;%定义e de u的量化因子

  16. 基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较 for k=1:N e1=ke*e; de1=kd*de; if e1>=6 e1=6; elseif e1<-6 e1=-6; end if de1>=6 de1=6; elseif de1<-6 de1=-6; end

  17. 基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较 in=[e1 de1]; uu(1,k)=ku*evalfis(in,a); if k<=Nd u=0; else u=uu(1,k-Nd); end if abs(u)<=umin u=0 elseif abs(u)>umax u=sign(u)*umax; end

  18. 基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较 %龙格-库塔算法求对象的输出 k1=a1*x+b*u; k2=a1*(x+h*k1/2)+b*u; k3=a1*(x+h*k2/2)+b*u; k4=a1*(x+h*k3)+b*u; x=x+(k1+2*k2+2*k3+k4)*h/6; y=c*x+d*u; e1=e; e=y-R(1,k); de=(e-e1)/T; ie=ie+e*T; yy(1,k)=y; end

  19. 基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较

  20. 基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较 • 结论:由两种控制得出的系统阶跃响应曲线可以看,通过模糊控制的方法,其稳态误差明显小于传统的PID控制方法.

More Related