您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 模糊控制---模糊自适应整定PID控制仿真实验
实验三模糊自适应整定PID控制仿真实验一、实验目的1.通过实验了解数字PID控制的原理2.通过实验实现离散系统的数字PID控制仿真3.通过实验了解模糊自适应整定PID控制的原理4.通过实验实现模糊自适应整定PID控制仿真5.通过实验进一步熟悉并掌握Matlab软件的使用方法二、实验内容1.针对给定离散系统的输入信号的位置响应,设计离散PID控制器,编制相应的仿真程序。2.若采样时间为1ms,采用模糊PID控制进行阶跃响应,在第300个采样时间时控制器输出加1.0的干扰,编制该模糊自适应整定PID系统的Matlab仿真程序三、实验步骤1.针对给定离散系统的阶跃信号、正弦信号和方波信号的位置响应,设计离散PID控制器,编制相应的仿真程序。2.确定模糊自整定PID的算法基础3.针对kp,ki,kd三个参数分别建立合适的模糊规则表4.画出PID参数的在线自校正工作程序流程图5.编制该模糊自适应整定PID系统的Matlab仿真程序四、实验要求1.设被控对象为:采样时间为1ms,采用Z变换进行离散化,经过Z变换后的离散化对象为:yout(k)=-den(2)yout(k-1)-den(3)yout(k-2)-den(4)yout(k-3)+num(2)u(k-1)+num(3)u(k-2)+num(4)u(k-3)针对离散系统的阶跃信号、正弦信号和方波信号的位置响应,设计离散PID控制器。其中,S为信号选择变量,S=1时为阶跃跟踪,S=2时为方波跟踪,S=3时为正弦跟踪。2.采样时间为1ms,采用模糊PID控制进行阶跃响应,在第300个采样时间时控制器输出加1.0的干扰,编制炉温模糊控制系统的Matlab仿真程序五﹑自适应模糊控制的规则1﹑控制规则:2.模糊控制器设计确定为双输入,三输出结构确定每个变量的论域,其中每个变量都有一个模糊子集来表示。这个模糊子集中有3个模糊子集,分别是:N,Z,P在编辑界面中,确定好每一个语言变量的范围,以及隶属函数的类型。如下图所示:输入模糊控制规则:六﹑仿真结果PID控制器Kp参数在控制过程中的变化曲线:Ki参数:Kd参数:七﹑实验程序(一)%FuzzyTunningPIDControlClearall;Closeall;a=newfis('fuzzpid');a=addvar(a,'input','e',[-11]);a=addmf(a,'input','1','N','zmf',[-1,-1/3]);a=addmf(a,'input','1','Z','trimf',[-2/3,0,2/3]);a=addmf(a,'input','1','P','smf',[1/3,1]);a=addvar(a,'input','ec',[-11]);a=addmf(a,'input','2','N','zmf',[-1,-1/3]);a=addmf(a,'input','2','Z','trimf',[-2/3,0,2/3]);a=addmf(a,'input','2','P','smf',[1/3,1]);a=addvar(a,'output','kp',[-1010]);a=addmf(a,'input','1','N','zmf',[-10,-3]);a=addmf(a,'input','1','Z','trimf',[-5,0,5]);a=addmf(a,'input','1','P','smf',[3,10]);a=addvar(a,'output','ki',[-33]);a=addmf(a,'output','2','N','zmf',[-3,-1]);a=addmf(a,'output','2','Z','trimf',[-2,0,2]);a=addmf(a,'output','2','P','smf',[1,3]);a=addvar(a,'output','kd',[-55]);a=addmf(a,'output','3','N','zmf',[-5,-1]);a=addmf(a,'output','3','Z','trimf',[-3,0,3]);a=addmf(a,'output','3','P','smf',[1,5]);Rulelist=[1111111;1212111;1221211;1312111;1323211;2111111;2233111;2122311;2321311;2231211;3121111;3231211;3121211;3312311;3231211];a=addrule(a,rulelist);a=setfis(a,'DefuzzMethod','centroid');writefis(a,'fuzzy');a=readfis('fuzzpid');figure(1);Plotmf(a,'input',1);figure(2);Plotmf(a,'input',2);figure(3);Plotmf(a,'output',1);figure(4);Plotmf(a,'output',2);figure(5);Plotmf(a,'output',3);figure(6);Plotfis(a);fuzzyfuzzpid;showrule(a);ruleviewfuzzpid;(二)%FuzzyPIDControlClearall;Closeall;Warningoff;a=readfis('fuzzpid');t=0.001;sys=tf(122,[1,26,0]);dsys=c2d(sys,ts,'z');[num,den]=tfdata(dsys,'v');u-1=0;u-2=0;y-1=0;y=2=0;e-1=0;ec-1=0;ei=0;ed=0;kp0=0;ki0=0;kd0=0;fork=1:1:1000Time(k)=k*ts;r(k)=1;%UsingfuzzyinferencetotunningPIDk-pid=evalfis([e-1,ec_1],a);kp(k)=kp_0+k_pid(1);ki(k)=ki_0+k_pid(2);kd(k)=kd_0+k_pid(3);u(k)=kp(k)*e_1+ki(k)*ei+kd(k)*ed;y(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2;e(k)=r(k)-y(k);%%%%%%%%%%%%%%%%Returnofparameters%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%u_2=u_1;u_1u(k)=0;y_2=y_1;y_12=y(2);ei=ei+e(k)*ts;ec(k)=e(k)-e_1;e_1=e(k);ec_1=ec(k);endfiure(1);plot(time,r,'r',time,y,'b:','linewidth',2);xlabel(time(s)');ylabel('r,y');legend('Idealosition','Practicalposition');fiure(2);subplot(211);plot(time,kp,'r','linewidth',2);xlabel(time(s)');ylabel('kp');subplot(212);plot(time,ki,'r','linewidth',2);xlabel(time(s)');ylabel('ki');figure(3);plot(time,u,'r','linewidth',2);xlabel(time(s)');ylabel('controlinput');
本文标题:模糊控制---模糊自适应整定PID控制仿真实验
链接地址:https://www.777doc.com/doc-5111714 .html