模糊PID参数自整定.docx
- 文档编号:11901156
- 上传时间:2023-06-03
- 格式:DOCX
- 页数:13
- 大小:581.61KB
模糊PID参数自整定.docx
《模糊PID参数自整定.docx》由会员分享,可在线阅读,更多相关《模糊PID参数自整定.docx(13页珍藏版)》请在冰点文库上搜索。
模糊PID参数自整定
模糊PID参数自整定(总9页)
模糊PID参数自整定
设被控对象为
采样时间为1ms,采样模糊PID控制进行阶跃响应,在第300个采样时间时控制加1.0的干扰,相应的响应结果如下图:
Ki的录属度函数
Kp的录属度函数
e的录属度函数
ec的录属度函数
下面是系统在外界有干扰输入时普通PID和模糊PID参数自整定控制的阶跃响应曲线:
模糊PID控制阶跃响应
普通PID控制阶跃响应
.从上面的仿真图可以看出,经过模糊PID参数自整定后,在外界干扰输入时,可以得到很好的控制效果。
下面是PID参数的整定曲线:
.
Kp的自整定调整
Ki的自整定调整
Kd的自整定调整
程序文本:
%FuzzyTunningPIDControl
clearall;
closeall;
a=newfis('fuzzpid');
a=addvar(a,'input','e',[-3,3]);%Parametere
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]);%Parameterec
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]);%Parameterkp
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]);%Parameterki
a=addmf(a,'output',2,'NB','zmf',[-0.06,-0.02]);
a=addmf(a,'output',2,'NM','trimf',[-0.06,-0.04,0]);
a=addmf(a,'output',2,'NS','trimf',[-0.06,-0.02,0.02]);
a=addmf(a,'output',2,'Z','trimf',[-0.04,0,0.04]);
a=addmf(a,'output',2,'PS','trimf',[-0.02,0.02,0.06]);
a=addmf(a,'output',2,'PM','trimf',[0,0.04,0.06]);
a=addmf(a,'output',2,'PB','smf',[0.02,0.06]);
a=addvar(a,'output','kd',[-3,3]);%Parameterkp
a=addmf(a,'output',3,'NB','zmf',[-3,-1]);
a=addmf(a,'output',3,'NM','trimf',[-3,-2,0]);
a=addmf(a,'output',3,'NS','trimf',[-3,-1,1]);
a=addmf(a,'output',3,'Z','trimf',[-2,0,2]);
a=addmf(a,'output',3,'PS','trimf',[-1,1,3]);
a=addmf(a,'output',3,'PM','trimf',[0,2,3]);
a=addmf(a,'output',3,'PB','smf',[1,3]);
rulelist=[1171511;
1271311;
1362111;
1462111;
1553111;
1644211;
1744511;
2171511;
2271311;
2362111;
2453211;
2553211;
2644311;
2734411;
3161411;
3262311;
3363211;
3453211;
3544311;
3635311;
3735411;
4162411;
4262311;
4353311;
4444311;
4535311;
4626311;
4726411;
5152411;
5253411;
5344411;
5435411;
5535411;
5626411;
5727411;
6154711;
6244511;
6335511;
6425511;
6526511;
6627511;
6717711;
7144711;
7244611;
7325611;
7426611;
7526511;
7617511;
7717711];
a=addrule(a,rulelist);
a=setfis(a,'DefuzzMethod','mom');
writefis(a,'fuzzpid');
a=readfis('fuzzpid');
%PIDController
ts=0.001;
sys=tf(5.235e005,[1,87.35,1.047e004,0]);
dsys=c2d(sys,ts,'tustin');
[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;
e_1=0.0;
ec_1=0.0;
kp0=0.40;
kd0=1.0;
ki0=0.0;
fork=1:
1:
500
time(k)=k*ts;
rin(k)=1;
%UsingfuzzyinferencetotunningPID
k_pid=evalfis([e_1,ec_1],a);
kp(k)=kp0+k_pid
(1);
ki(k)=ki0+k_pid
(2);
kd(k)=kd0+k_pid(3);
u(k)=kp(k)*x
(1)+kd(k)*x
(2)+ki(k)*x(3);
ifk==300%Addingdisturbance(1.0vattime0.3s)
u(k)=u(k)+1.0;
end
ifu(k)>=10
u(k)=10;
end
ifu(k)<=-10
u(k)=-10;
end
yout(k)=-den
(2)*y_1-den(3)*y_2-den(4)*y_3+num
(1)*u(k)+num
(2)*u_1+num(3)*u_2+num(4)*u_3;
error(k)=rin(k)-yout(k);
%ReturnofPIDparameters%
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(k);%CalculatingP
x
(2)=error(k)-error_1;%CalculatingD
x(3)=x(3)+error(k);%CalculatingI
e_1=x
(1);
ec_1=x
(2);
error_2=error_1;
error_1=error(k);
end
showrule(a)
figure
(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');
figure(3);plot(time,u,'r');
xlabel('time(s)');ylabel('u');
figure(4);plot(time,kp,'r');
xlabel('time(s)');ylabel('kp');
figure(5);plot(time,ki,'r');
xlabel('time(s)');ylabel('ki');
figure(6);plot(time,kd,'r');
xlabel('time(s)');ylabel('kd');
figure(7);plotmf(a,'input',1);
figure(8);plotmf(a,'input',2);
figure(9);plotmf(a,'output',1);
figure(10);plotmf(a,'output',2);
figure(11);plotmf(a,'output',3);
plotfis(a);
fuzzyfuzzpid.fis
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模糊 PID 参数