模糊PID控制的MATLAB仿真代码.txt

上传人:b****1 文档编号:228001 上传时间:2022-10-07 格式:TXT 页数:5 大小:5.14KB
下载 相关 举报
模糊PID控制的MATLAB仿真代码.txt_第1页
第1页 / 共5页
模糊PID控制的MATLAB仿真代码.txt_第2页
第2页 / 共5页
模糊PID控制的MATLAB仿真代码.txt_第3页
第3页 / 共5页
模糊PID控制的MATLAB仿真代码.txt_第4页
第4页 / 共5页
模糊PID控制的MATLAB仿真代码.txt_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

模糊PID控制的MATLAB仿真代码.txt

《模糊PID控制的MATLAB仿真代码.txt》由会员分享,可在线阅读,更多相关《模糊PID控制的MATLAB仿真代码.txt(5页珍藏版)》请在冰豆网上搜索。

模糊PID控制的MATLAB仿真代码.txt

%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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 财务管理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1