模糊PID控制方法研究

模糊PID控制方法研究

ID:46237729

大小:630.74 KB

页数:20页

时间:2019-11-22

上传者:U-7604
模糊PID控制方法研究_第1页
模糊PID控制方法研究_第2页
模糊PID控制方法研究_第3页
模糊PID控制方法研究_第4页
模糊PID控制方法研究_第5页
资源描述:

《模糊PID控制方法研究》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

模糊PID控制方法研究FuzzyPIDController 2模糊控制器的设计2.1模糊控制器的基本原理2.1.1模糊控制器的原理模糊控制(FuzzyControl)^以模糊集理论、模糊语言变量和模糊逻辑推理为基础的一种智能控制方法,它从行为上模仿人的模糊推理和决策过程。模糊控制是先将操作人员或专家经验编成模糊规则,然后将来自传感器的实时信号通过模糊规则模糊化,将模糊化后的信号作为模糊规则的输入,完成模糊推理,进行解模糊化,最后将解模糊后得到的输出量加到执行器上。图2・1是模糊控制原理框图。图2-1模糊控制原理框图2.1.2模糊控制器的组成在整个控制器中,模糊控制器是整个控制系统的核心,所采用的模糊规则、合成推理算法和模糊决策的方法等都是决定整个控制器优劣的因素。其组成如图2-2:图2-2模糊控制器的组成框图 模糊化接口是模糊控制器的输入借口,主要作用是将真实的确定量输入转换为一个模糊矢量。数据库和规则库共同组成了控制器的知识库,数据库中存放的是所冇输入、输出变的的全部模糊了集的隶属度矢量值(即经过论域等级离散化以后对应值的集合)。在规则推理的模糊关系方程求解过程屮,向推理机捉供数据。规则库是对人类长期经验的总结,将其转化成模糊控制算法,为推理机提供控制规则。推理是模糊控制器屮,根据输入模糊量,模仿人类判断吋的模糊概念,运用模糊逻辑和模糊推论法进行推论,而得到模糊控制讯号。此部分是模糊控制器的精髓所在。解模糊借口是将推论所得到的模糊值转换为明确的控制讯号,做为系统的输入值。2.2模糊控制器的设计步骤通过对模糊控制器原理的研究,得出设计模糊控制器主要包括以下儿项内容:(1)确定模糊控制器的输入变量和输出变量(即控制量)。输入变量为误差c以及误差变化ec,输出变量为控制量u。e,ec,u的模糊集均为:{NB,NM,NS,ZO,PS,PM,PB}。e,ec的论域均为:{-3,-2,-1,0,1,2,3}。u的论域为:{-4.5,-3,-1.5,0,1,3,4.5}0(2)定义输入、输出隶属函数。(3)建立模糊控制规则。(4)建立模糊控制表。(5)模糊推理。(6)反模糊化。2.3模糊控制器的程序仿真2.3.1输入量和输出量的程序及仿真设定e的范围、隶属度函数的程序:a=addvar(a.,input,,e[-3,3]);a=addmf(a,'input',1,'NB','zmf,[-3,-1]);a=addmf(a,'input',1,*NM7trimf,[-3,-2,0]);a=addmf(a,'input',1/NS'/trimf1,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',l,'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','zmf1]);a=addmf(a;input,,2;NM,;trimf,[-3,-2,0]);a=addmf(a;input',2;NS,;trimf,[-3,-l,l]);a=addmf(a,,input',2,,Z',,trimf,[-2,0,2]);a=addmf(a;input',2;PSVtrimf,[-l,1,3]);a=addmf(a;input',2;PM7trimf,[0,2,3]);a=addmf(a,,input',2,PB;'smf,[1,3]);仿真后的图形:图2・4ec的隶属度函数设定kp的范围、隶属度函数的程序:a=addvar(a,'output1,'kp',[-0.3,0.3]);a=addmf(a,'output*,l,NB;'zmf,卜0.3,・0.1]);a=addmf(a,'output*,l/NM'/trimf,[-0.3,-0.2,0]);a=addmf(a;outputl,NS;'trimf,[・0.3,・0.1,0.1]);a=addmf(a,Output*,l;Z7trimf,[-0.2,0,0.2]);a=addmf(a,'output*,1;PS7trimf,[-0.1,0.1,0.3]); a=addmf(a;output,,l;PM7trimf,[0,0.2,0.3]);a=addmf(a;outputl,卩BJsmf,[0.1,0.3]);仿真后的图形:a=addvar(a,'output*,'ki[-0.06,0.06]);a=addmf(a,'output',2,'NBVzmf,[-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,'ZVtrimf,[-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]);a=addmf(a,,output',3,'NB','zmf,[-3,-1]);a=addmf(a,'output',3;NMVtrimf,[-3,-2,0]);a=addmf(a,,output',3,,NS',,trimf,[-3,-l,l]);a=addmf(a;output,,3/ZVtrimf,[-2,0,2]);a=addmf(a,'output,,3,'PS,,'trimf,[-1,1,3]);a=addmf(a,Output*,3;PM7trimf,[0,2,3]);a=addmf(a,,output',3,,PB','smf,[1,3]);仿真后的图形: •r-.・图2-8整个模糊控制系统的结构模糊推理的动态仿真环境:232模糊规则描述的程序程序屮rulelist部分是对模糊规则的描述。233输出量的解模糊程序程序中a=addrule(a,rulelist);a=setfis(a/DefuzzMethod7centroidf); writefis(a/fuzzpidf);部分是解模糊程序,采用的是重心法。 3PID控制器的设计3.1PID控制器的基本原理在实际工业控制过程中,由于被动对象中的储能元件的影响以及管道和传输等原因,会引入一些吋间上的滞后,从而造成的系统的不稳定。为了改善系统的调节品质,通常会加入偏差的比例调节,来保证系统的快速性,加入偏差的积分调节以提高控制精度,引入偏差的微分调节来消除系统的惯性影响。图3-1表示的就是PID控制器系统。图3-1PID控制系统g——比例系数©——积分系数,K严KpTI「心——微分系数,Kd=KpTd/T,T为采样周期Tf——积分时间Td——微分时间 4模糊PID控制器的设计4.1模糊PID控制器的原理4.1.1模糊PID控制器的基本原理模糊PID控制器是在一般PID控制系统的基础上,加上一个模糊控制规则环节,利用模糊控制规则在线对PID参数进行修改的一种口适应控制系统。以误差e和谋弟变化ec作为输入,可以满足不同时刻的e和ec对参数口整定的耍求。它将模糊控制和PID控制器两者结合起來,扬长避短,既具有模糊控制灵活而适应性强的优点,又具有PID控制精度高的特点。图4.1是模糊PID控制器结构图。图4.1模糊PID控制器结构图4.1.2模糊PID控制器的工作流程根据图4」可以知道,PID参数模糊自整定是找出PID3个参数与e和ec之间的模糊关系,在允许中通过不断检测e和ec,根据模糊控制原理来对3个参数进行修改,并将3个参数返冋给PID控制器,PID控制器输出控制信号以满足不同e和ec时对控制参数的不同要求,而使被控对象有良好的动、静态性能。根据上述过程,模糊PID控制器的工作流程,可总结为图4.2。 图4・2模糊PID控制器的工作流程图4.2模糊PID控制器的主要程序及仿真实例4.2.1模糊PID控制器主要程序解释程序分为两部分,一部分是模糊控制器程序,另一部分是PID控制器的程序。模糊控制程序已经在上文介绍并月•仿真过,现具体对PID控制程序做介绍。利用语句a二readfis('fuzzpicT)读取模糊控制器程序。以3阶系统厂t、5235(H)S⑸=:?+87.35r4-104705为例,通过语句sys=tf(5.235e005,[l,87.35,1.047e004,0]);在程序中对系统进行描述,调节时间ts=0.00I,e,ec,ki,kd初始设为0,kp初值设为0.4。利用语句fork=l:1:3000 time(k)=k*ts;设定循环长度。通过语句ifk==3()()u(k)=u(k)+1.0在0.3s加入干扰信号,用以观察控制器的控制效杲。输入信号采用方波信号,采用语句为r(k)=sign(sin(2*pi*k*ts))。在程序中,需要对被控对象的传递函数采用z变换进行离散化,在程序中为y(k)=-den(2)*y_l-den(3)*y_2-den(4)*y_3+num(1)*u(k)+num(2)*u」+num(3)*u_2+num(4)*u_3;通过仿真,图4-4控制器输入u 图4・6ki的自适应调整图4・7kd的自适应调整模糊PID控制的方波响应,即整个控制器的输出: 图4-8整个控制器的方波响应通过对控制器输出的观察,可知控制器可以适应方波信号输入,并且对干扰有一定的适应作用。4.2.2不同系统在不同输入信号下的仿真结果为了验证该控制器可以应用丁多种系统,并但在不同的输入信号下也能稳定的工作,对1阶2阶3阶系统在方波和斜坡输入信号下(其中斜坡信号为r(k)=k*ts),都做一下仿真,结果如下:图4・9某1阶系统的方波响应 图4・11某2阶系统的方波响应以上结果证明,该模糊PID控制器对于不同类型的系统,都有一定的适用性。 附录A部分代码模糊部分%FuzzyTunningPIDControlclearall;closeall;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','trimfJ-3,-2,0]);a=addmf(a,'input',1,'NS','trimf1,1]);a=addmf(a,'input',1,‘,[・2,0,2]);a=addmf(a,'input',1[-1,1,3]);a=addmf(a,'input',1,'PM','trimf,[0,2,3]);a=addmf(a,'input',1,PB','smf,[l,3]);a=addvar(a,,inpiit','ec,,[-3,3]);a=addmf(a,'input2,'NB'zmf,[-3,-l]);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',rkp',[-0.3,0.3]);a=addmf(a,'output',1/NB'/zmf,[-03,-0.1]);a=addmf(a,•output;1/NM'/trimf,[-0.3,-0.2,0]);a=addmf(a,'output',1,'NS'/trimf,[-03,-0.1,0.1]);a=addmf(a,'output',1/ZVtrimf,[-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'smfJO.1,0.3]);a=addvar(a,'output'/ki[-0.06,0.06]);a=addmf(a,'output',2,'NB'/zmf,[-0.06,-0.02]);%Parametere设定e的范围、隶属度函数%Parameterec设泄ec的范围、隶属度函数%Parameterkp设圧KP的范围、隶属度函数%Parameterki设定ki的范围、隶属度函数 a=addmf(a,'output1,2,'NM'/trimf,[-0.06,-0.04,0]);a=addmf(a,,output,,2;NS,;trimf,[-0.06,-0.02,0.021);a=addmf(a,'output1,2;Z7trimf,[-0.04,0,0.04]);a=addmf(a,'output*,2,'PS*,'trimf,[-0.02,0.02,0.06]);a=addmf(a,'output1,2;PMVtrimf,[0,0.04,0.06]);a=addmf(a,'output*,2,'PB-Zsinf,[0.02,0.06]);a=addvar(a/output,,,kd,,[-3,3]);%Parameterkp设定kp的范围、隶属度函数a=addmf(a,,output,,3;NB,,,zmf,[-3,-l]);a=addmf(a,,output3,'NM,;trimfJ-3,-2,01);a=addmf(a,,output,,3;NS,;trimf1,1]);a=addmf(a,'output,,3,,Z,,'trimf,[-2,0,2]);a=addmf(a,'output',3,'PS',,trimf,[-l,l,3]);a=addmf(a,,output,,3;PM,;trimf,[0,2,3]);a=addmf(a;output,,3;PBVsmf,[l,31);rulelist=ll171511;设定模糊规则1271311;1362111;1462111;1553111;1644211;1744511;2171511;2271311;2362111;2453211;2553211;2644311;2734411;3161411;3262311;3363211;3453211;3544311;3635311; 1162411;4262311;4353311;4444311;4535311;4626311;4726411;2152411;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','centroid');writefis(a,'fuzzpid,); a=readfisCfuzzpidr);tigure(l);plotmf(a/inputl);figure(2);plotmf(a/input2);figure(3);plotmf(a/outputfJ);figure(4);plotmf(a/output2);figure(5);plotmf(a/output3);figure(6);plotfis(a);fuzzyfuzzpid;showrule(a);ruleviewfuzzpid;PID部分%FuzzyPIDControlcloseall;clearall;模糊控制器系统的描述a=readfis(,fuzzpid,);%Loadfuzzpid.fists=O.OOl;sys=tf(5.235e005,[l,87.35,1.047e004,0]);dsys=c2d(sys,ts/tustin,);[num,den]=tfdata(dsys,V);u」=0.0;u_2=0.0;u_3=0.0;y_l=O;y_2=O;y_3=O;x=[0,0,()]:e_l=0;ec_l=0;kp()=0.40;kd()=1.0;初值ki()=().O;fork=l:1:3000time(k)=k*ts;r(k)=sign(sin(2*pi*k*ts)); %UsingfuzzyinferencetotunningPIDk_pid=evalfis([e_1,ec_1],a);kp(k)=kp()+k_pid(1);ki(k)=ki()+k_pid(2);kd(k)=kd()+k_pid(3);u(k)=kp(k)*x(1)+kd(k)*x(2)+ki(k)*x(3);讦k==300%Addingdisturbance(l.Ovattime0.3s)u(k)=u(k)+1.0;endy(k)=-den(2)*y_l-den(3)*y_2-den(4)*y_3+num(l)*u(k)+num(2)*u_14-num(3)*u_2+num(4)*u_3;e(k)=r(k)-y(k);%%%%%%%%%%%%%%ReturnofPIDparameters%%%%%%%%%%%%%%%返凹PID参数u_3=u_2;u_2=u_l;u_l=u(k);y_3=y_2;y_2=y_l;y」=y(k);x(l)=e(k);%CalculatingP计算px(2)=e(k)-e_l;%CalculatingD计算Dx(3)=x(3)+e(k)*ts;ec_l=x(2);e_2=e」;e_l=e(k);%CalculatingI计算Iendtigure(l);plot(time,r/btime,y/rr);xlabel(,time(s),);ylabel(,rin,yout,);figure(2);plotCtime.e/r*);xlabel(,time(s),);ylabel(,errorf);figure(3);plot(time,u/rf);xlabel('time(s),);ylabel('u,);figure(4);plot(time,kp/rf);xlabel('time(s)');ylabel(,kp');figure(5);plot(time,ki/rf);xlabel('time(s)');ylabel('ki');figure(6);plot(time,kd/rf);xlabel('time(s)');ylabel(,kd');

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭