200 likes | 450 Views
基于 matlab 的典型二阶系统的模糊控制与传统 PID 控制的性能比较. 一.相关概念 1.系统数学模型:系统的数学模型在系统的分析中起着重要的作用,建立数学模型的目的之一是为了用数学方法定量地对系统进行分析。当系统微分方程列出后,只要给定输入量的初始条件,便可以对微分方程求解。 假设系统是单输入单输出系统(简称 SISO )系统,其输入输出分别用 u ( t ), y ( t )来表示,并且系统的初始条件为零,则得到线性系统的传递函数模型:
E N D
基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较 一.相关概念 1.系统数学模型:系统的数学模型在系统的分析中起着重要的作用,建立数学模型的目的之一是为了用数学方法定量地对系统进行分析。当系统微分方程列出后,只要给定输入量的初始条件,便可以对微分方程求解。 假设系统是单输入单输出系统(简称SISO)系统,其输入输出分别用u(t),y(t)来表示,并且系统的初始条件为零,则得到线性系统的传递函数模型: 若系数 (i=0,…m) 与(i=0,…n-1)为常数,则系统称为线性定常系统。在MATLAB语言中,可以利用传递函数分子、分母多项式的系数向量进行描述。分子多项式的系数向量为 分母多项式的系数向量为 这里分子、分母多项式系数按s的降幂排列。
基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较 2.二阶系统:用二阶微分方程描述的系统,称二阶系统。它在控制系统中应用极为广泛 ,许多高阶系统,在一定条件下,往往可以简化成二阶系统。因此,详细研究和分析二阶系统的特性,具有重要的实际意义。 系统闭环传递函数为: 我们这里所要讨论的是二阶系统加上一些典型的非线性环节,如死区.饱和,纯延迟
控制器 对象 基于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维直接传输阵。
基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较 我们的目标就是根据控制量U求出系统输出量Y,然后将其跟参考参考输入进行比较得到系统偏差及偏差变化率,最后将其用于系统控制 3.龙格-库塔算法:求解常微分方程的数值解法,此方法可使局部截断误差达到 ,也就是三阶精度,具体推导见 《计算方法》(第二版)易大义 沈云宝 李有法编 浙江大学出版社 这里直接应用其得出的结论: 对于一阶常微分方程:
基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较 其数值解为:
基于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);%参考值
u PID 对象 基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较 1.传统PID控制过程 其matlab程序如下: e=0; de=0;ie=0; kp=5;ki=0.1;kd=0.001;%设定的比例,积分,微分常数
基于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
基于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);
基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较 2.模糊控制 1)量化:设e和de的模糊量为:”负大NB”, “负小NS”,“零ZR”,’’正小PS”,” 正大PB”,将它们量化在[-6 6]论域上,控制量u的模糊量为: ”负大NB”, “负小NS”,“零ZR”,’’正小PS”,” 正大PB”, 将其量化到[-3 3],隶属函数分别如下图
基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较
基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较 2)模糊推理规则如下定义 e u de
基于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]);
基于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;
基于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的量化因子
基于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
基于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
基于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
基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较
基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较基于matlab的典型二阶系统的模糊控制与传统PID控制的性能比较 • 结论:由两种控制得出的系统阶跃响应曲线可以看,通过模糊控制的方法,其稳态误差明显小于传统的PID控制方法.