用MATLAB玩控制-模糊自适应pid控制

标签:
模糊自适应pid控制模糊控制工具箱itae性能指标s函数 |
模糊自适应pid控制的原理如图1所示,从图中可以看出,偏差e和偏差变化率ec乘上比例因子ke、kec,即x=ke*e,y=kec*ec,然后输入模糊推理器,经过模糊推理器的运算,模糊推理器输出Zp(Δkp)、Zi(Δki)、Zd(Δkd),乘上比例因子qp、qi、qd后,与基础pid值相加得实际pid值,即kp=kp0+qp*Δkp、ki=ki0+qi*Δki、kd=kd0+qd*Δkd,此后就是常规pid控制器了,其增量算法是:
Δu(k)=Kc(e(k)-e(k-1)+Ts*e(k)/Ti+Td*(e(k)-2*e(k-1)+e(k-2))/Ts)
要作模糊推理,大致先需要确定以下几点:1语言变量,2语言值,3,语言变量的论域,4隶属度函数,5模糊控制规则,对1-4点,我们定的如图2所示,从图中可以看出语言变量的论域统一定为(-3,3),然后通过比例因子ke、、kec、qp、qi、qd将语言变量论域转换到物理量,这将使模糊自适应pid控制器具有某种程度的通用性,在有些文章中,常将Zp(Δkp)、Zi(Δki)、Zd(Δkd)的论域定为与物理量范围一样,那样就省去了比例因子qp、qi、qd,对隶属度函数为简单起见,统一用三角函数,对第5点,则如图3所示,这是比较常见的控制规则。模糊推理大致分为4个步骤,1是计算模糊关系,即Ri=Ai*Bi->Ci,根据模糊规则表Ri共有7*7=49个,2是计算蕴含(或运算)关系,即R=∪Ri,3是作合成运算,即C'=(A'*B')○Ri,4是解模糊,一般用重心法,这些个计算可以用模糊控制工具箱函数,图2中Δkp、Δki、Δkd曲面图就是用工具箱函数算出的,也可以自己计算,如图4所示,工具箱函数算出Δkp、Δki、Δkd在离散点上的值如图5所示,自己计算的Δkp、Δki、Δkd在离散点上的值如图6所示,从图5和图6可以看出,两者之间略微有点差异,但大方向一致。
模糊自适应pid控制从原理上来说应该比常规PID控制来的好,但常常可以看到有人对此提出异议,如图7所示(红圈中),那我们来看看,究竟是怎么一回事,对系统G(s)=1.4*exp(-40s)/(100s+1),进行模糊自适应pid控制的仿真,如图8所示,相关参数设置和性能指标,如图9所示,对应的常规PID控制仿真,如图10所示,相关参数设置和性能指标,如图11所示,对比图8和图10控制效果,模糊自适应pid控制明显好于常规PID控制,ITAE性能指标低了小一半。那为什么会出现模糊自适应pid控制效果不如常规PID控制呢?原因主要可能有,1基础PID设置不合理,2比例因子设置不合理,另外,3模糊规则设置不合适,4甚或隶属度函数选择不合理,也是可能原因。
上面那个仿真例子算不上模糊自适应pid控制能耐,下面展现一个大纯滞后系统G(s)=1.4*exp(-100s)/(100s+1)仿真的例子,如图12所示,从图中可以看出,效果不错,这也是一个用S函数实现的模糊自适应pid控制。
http://s2/mw690/001Agcsvzy79q3mzQ0pd1&690
http://s7/mw690/001Agcsvzy79q3n6bcy16&690
http://s1/mw690/001Agcsvzy79q3nCxs430&690
http://s15/mw690/001Agcsvzy79q3o7sgS6e&690
http://s3/mw690/001Agcsvzy79q3owm7832&690
http://s3/mw690/001Agcsvzy79q5FYMCe12&690
http://s7/mw690/001Agcsvzy79q3n6bcy16&690
http://s1/mw690/001Agcsvzy79q3nCxs430&690
http://s15/mw690/001Agcsvzy79q3o7sgS6e&690
http://s3/mw690/001Agcsvzy79q3owm7832&690
http://s3/mw690/001Agcsvzy79q5FYMCe12&690
后一篇:用MATLAB玩控制-结构辨识1