资源描述:
《利用MATLAB提供的模糊逻辑工具箱函数进行仿真实验》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、clearall;closeall;ts=20;sys1=tf([1],[60,1],'inputdelay',80);%生成或转换传递函数模型dsys1=c2d(sys1,ts,'zoh');%将连续系统离散化[num1,den1]=tfdata(dsys1,'v');%获得传递函数模型数据例系统被控对象为:利用MATLAB提供的模糊逻辑工具箱函数进行仿真实验%传统PID算法u_1=0;u_2=0;u_3=0;u_4=0;u_5=0;y_1=0;y_2=0;y_3=0;error_1=0;ei=0;fork=1:1:300time(k)=k*t
2、s;rin(k)=40;yout(k)=-den1(2)*y_1+num1(2)*u_5;error(k)=rin(k)-yout(k);ei=ei+error(k)*ts;kp=0.8;ki=0.005;kd=3.0;u(k)=kp*error(k)+kd*(error(k)-error_1)/ts+ki*ei;ifu(k)>=110u(k)=110;endifu(k)<=-110u(k)=-110;end%返回PID参数u_5=u_4;u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k);y_3=y_2;y_2=y_1;y_1=y
3、out(k);error_1=error(k);end%模糊PID控制系统a=newfis('fuzzf');%创建新的模糊推理系统添加语言变量、隶属度函数(略)f1=1;f2=1;f3=1.5;Error=rin-Yout;sys1=tf([1],[60,1],'inputdelay',80);dsys=c2d(sys1,ts,'zoh');[num,den]=tfdata(dsys,'v');U_1=0;U_2=0;U_3=0;U_4=0;U_5=0;Y_1=0;Y_2=0;Y_3=0;e_1=0.0;ec_1=0.0;Error_1=0;E
4、i=0fork=1:1:300time(k)=k*ts;rin(k)=40;U(k)=evalfis([e_1,ec_1],a2);%完成模糊推理计算Yout(k)=-den(2)*Y_1+num(2)*U_5;Error(k)=rin(k)-Yout(k);ki=0.003;Ei=Ei+Error(k)*ts;U(k)=U(k)+ki*Ei;%返回参数U_5=U_4;U_4=U_3;U_3=U_2;U_2=U_1;U_1=U(k);Y_3=Y_2;Y_2=Y_1;Y_1=Yout(k);e_1=Error(k);ec_1=Error(k)-Er
5、ror_1;Error_1=Error(k);endfigure(1);plot(time,rin,'b',time,yout,'r');xlabel('time(s)');ylabel('rin,yout');figure(2);plot(time,u,'r');xlabel('time(s)');ylabel('u');figure(3);plot(time,rin,'b',time,Yout,'r');xlabel('time(s)');ylabel('rin,yout');figure(4);plot(time,U,'r');xlabel
6、('time(s)');ylabel('u');figure(5);plotfis(a2);figure(6);plotmf(a2,'input',1);figure(7);plotmf(a2,'input',2);figure(8);plotmf(a2,'output',1);常规PID控制系统输出响应在组态王中根据具体的控制算法编程模糊PID控制系统输出响应基本PD模糊控制系统输出响应