0
对象模型参数变化时仿真
为了比较变参数时传统 PID 与模糊 PID 的控制效果,改变 K,当 K=300000
时,响应曲线如图所示。
在三阶传递函数
3 2
523500
( )
87.35 10470
G s
s s s
=
+ +
作为控制对象时,用模糊PID进行
阶跃响应跟踪程序,并在 t=0.35s处增加扰动,再改变模型参数,使k=300000。
clear
a=newfis('fuzzpid'); %设定范围、隶属度
a=addvar(a,'input','e',[-3 3]);
a=addmf(a,'input',1,'NB','zmf',[-3 -1]);
a=addmf(a,'input',1,'NM','trimf',[-3 -2 0]);
a=addmf(a,'input',1,'Ns','trimf',[-3 -1 1]);
a=addmf(a,'input',1,'Z','trimf',[-2 0 2]);
a=addmf(a,'input',1,'PS','trimf',[-1 1 3]);
a=addmf(a,'input',1,'PM','trimf',[0 2 3]);
a=addmf(a,'input',1,'PB','smf',[1 3]);
a=addvar(a,'input','ec',[-3 3]);
a=addmf(a,'input',2,'NB','zmf',[-3 -1]);
a=addmf(a,'input',2,'NM','trimf',[-3 -2 0]);
a=addmf(a,'input',2,'Ns','trimf',[-3 -1 1]);
a=addmf(a,'input',2,'Z','trimf',[-2 0 2]);
a=addmf(a,'input',2,'PS','trimf',[-1 1 3]);
a=addmf(a,'input',2,'PM','trimf',[0 2 3]);
a=addmf(a,'input',2,'PB','smf',[1 3]);
a=addvar(a,'output','Kp',[-0.3 0.3]);
a=addmf(a,'output',1,'NB','zmf',[-0.3 -0.1]);
a=addmf(a,'output',1,'NM','trimf',[-0.3 -0.2 0]);
a=addmf(a,'output',1,'Ns','trimf',[-0.3 -0.1 0.1]);
a=addmf(a,'output',1,'Z','trimf',[-0.2 0 0.2]);
a=addmf(a,'output',1,'PS','trimf',[-0.1 0.1 0.3]);
a=addmf(a,'output',1,'PM','trimf',[0 0.2 0.3]);
a=addmf(a,'output',1,'PB','smf',[0.1 0.3]);
a=addvar(a,'output','Ki',[-0.06 0.06]);
a=addmf(a,'output',2,'NB','zmf',[-0.06 -0.02]);