《基于simulink的模糊PID控制例子.docx》由会员分享,可在线阅读,更多相关《基于simulink的模糊PID控制例子.docx(6页珍藏版)》请在三一办公上搜索。
1、1模糊PID用命令FUZZy翻开模糊控制工具箱。AnfiSediI翻开自适应神经模糊控制器,它用给定的输入输出数据建个一个模糊推理系统,并用一个反向传播或者与最小二乘法结合的来完成隶属函数的调节。SUrfVieW(newfis)可以翻开外表视图窗口8.1 模糊PID串联型新建一个SinlUlink模型同时拖入一个fuzzylogiccontroller模块,双击输入已经保存的fis模糊控制器的名字。由于这个控制模块只有一个输入端口,需要用到mux模块。模糊结合PID,当输出误差较大时,用模糊校正,当较小时,用PlD校正。8.2 模糊自适应PID(1) PID参数模糊自整定的原那么PID调节器的
2、控制规律为:u(k)=Kpe(k)+Kie(i)+Kdec(k)其中:KP为比例系数;Ki为积分系数;Kd为微分系数;e(k)、ec(k)分别为偏差和偏差变化率模糊自整定PID参数的目的是使参数KP、Ki、Kd随着e和ec的变化而自行调整,故应首先建立它们间的关系.根据实际经验,参数KP、Ki、Kd在不同的e和ec下的自调整要满足如下调整原那么:(1)当e较大时,为加快系统的响应速度,防止因开始时e的瞬间变大可能会引起的微分溢出,应取较大的Kp和较小的Kd,同时由于积分作用太强会使系统超调加大,因而要对积分作用加以限制,通常取较小的Ki值;(2)当e中等大小时,为减小系统的超调量,保证一定的响
3、应速度,Kp应适当减小;同时Kd和Ki的取值大小要适中;(3)当e较小时,为了减小稳态误差,Kp与Ki应取得大些,为了防止输出响应在设定值附近振荡,同时考虑系统的抗干扰性能,Kd值的选择根据IeCl值较大时,Kd取较小值,通常Kd为中等大小。同时按照需要,将输入语言变量E和EC分为7个模糊子集,分别用语言值正大(PB)、正中(PM)、正小(PS)、零(Z)、负小(NS)、负中(NM)、负大(NB)来表示,它们的隶属函数为高斯型(gaussmf),输出语言变量Kp、KY、Kd,用语言值小正大(PB)、正中(PM)、正小(PS)、零(Z)、负小(NS)、负中(NM)、负大(NB)来表示隶属函数为三
4、角型(trimf),方法二:图T模糊自适应Simulink模型根据各模糊子集的隶属度赋值表和各参数模糊控制模型,应用模糊合成推理设计分数阶PID参数的模糊矩阵表,算出参数代入下式计算:Kp=KpO+(E,EC)p;Ki=KiO+(E,EC)I;Kd=KdO+(E,EC)d式中:KpO、KiO、KdO为PID参数的初始设计值,由传统的PID控制器的参数整定方法设计。(E,EC)p、(E,EC)i、(E,EC)d即(Kp,Ki,Kd)为模糊控制器的3个输出,可根据被控对象的状态自动调整Pn)三个控制参数的取值。PID控制器局部例子:下面是一个例子工业控制常见例子二阶惯性加纯滞后环节,传递函数为-Z
5、SG=,Tl=l,T2=l,T=0.3,模糊化因子,ke=kec=0.Ol;解模糊因子(Tis+)(T2s+)kl=0.5,k2=0.05,k3=0.05;PID初始值KPO=6.5;KiO=1;KdO=O5;设置采样频率为0.01s.建立Simulink系统模型如下。其中模糊控制器变量论域取-66.同时按照需要,将输入语言变量E和EC分为7个模糊子集,分别用语言值正大(PB)、正中(PM)、正小(PS)、零(Z)、负小(NS)、负中(NM)、负大(NB)来表示。对于模糊控制规那么按照上面的表选取。图5-绿色线为fuzzy_pid输出,红色线为常规PID输出四、量化因子Ke,Kec,Ku该如何
6、确定?有4一般的公式:Ke=ne(max),Kec=mec(max),Ku=u(max)Ln,m,l分别为Ke,Kec,Ku的量化等级,一般可取6或7。e(max),ec(max),u(max)分别为误差,误差变化率,控制输出的论域。不过通过我实际的调试,有时候这些公式并不好使。所以我一般都采用凑试法,根据你的经验,先确定Ku,这个直接关系着你的输出是发散的还是收敛的。再确定Ke,这个直接关系着输出的稳态误差响应。最后确定Kec,前面两个参数确定好了,这个应该也不会难了。五、在仿真的时候会出现刚开始仿真的时候时间进度很慢,从e-10次方等等开始,该怎么解决?这时候肯定会有许多人跳出来说是步长的
7、问题,等你改完步长,能运行了,一看结果,惨不忍睹!我只能说这个情况有可能是你的参数有错误,但如果各项参数是正确的前提下,你可以在方框图里面加饱和输出模块或者改变阶跃信号的SamPIetime,让不从0开始或者加个延迟模块或者加零阶保持器看看.六、仿真到一半的时候仿真不动了是什么原因?仿真图形很有可能发散了,加个零阶保持器,饱和输出模块看看效果。改变Ke,Kec,Ku的参数。七、仿真图形怎么反了?把KU里面的参数改变一下符号,比方说从正变为负。模糊PID的话改变KP的就可以。八、还有人问我为什么有的自适应模糊PID里有相加的模块而有的没有?相加的是与PID的初值相加。最后出来的各项参数KP=ZK
8、p+KpO,Ki=Ki+Ki0,Kd=Kd+KdO=KpO,KiO,KdO分别为PlD的初值。有的系统并没有设定PID的初值。九、我照着论文搭建的,什么都是正确的,为什么最后就是结果不对?你修改下参数或者重新搭建一遍。哪-点出了点小问题,都有可能导致失败。huarongdao工程册整华0秋分237帖子118水位237技术分0问关于单点模糊化和matlab仿真的问题,谢谢了!01至1受11最近租学了模糊控制。对于模槌化很不理解,N上看到的输入模糊化方法是把输入对应输入隶属度大选取相应的模糊集合.规那么前件的隶属函数是否与输入隶属函数选取应该一样?看到很多地方都谈到输入模棚化用单点模棚的方法,感觉
9、很嚷理解.如果每个点对应一个模糊集合,那么不是有无穷多个输入模糊柒合?规那么前件的隶属函数是否也要选取单点的?matiab里的fiseditor没有选取模糊化的方法,那么默认的方法是单点还是输入对应输入隶属度大选取相应模糊柒的方法呢?谢谢大家的回复,不胜感谢!.2007-7-4 01 52,6 Wjoedahachi工程册单点模糊化只是针对集合的元素只有一个的情况C一般情况下不用单点模糊化。在设计以控制器时首先选取控制器的输入变CoO晟然后对输入变址进行模糊划分比方我们选速度作为语言变Ib速度有快、慢、适宜之分我们可以把E速度这个语言变最定义为由快、慢、适宜等语言值组成的模糊集合,然后把快慢适
10、宜用隶属度函数表示,规那么的前件就是输入语吉变量的各个语声他的隶属度函数,matlab里的触editor里有模糊化的方法,模糊化的方法就是选取各个输入语言变量值的隶属度函数,那里边包含的是一些常用的隶属度函数如Igaussmf、gbellmf等函数.隶属度函数的定义是否是单点模糊化村华0要看相应的集合的元素是一个元素还是多个,或者说是离敬的还是连续的,不能一概而论。积分32帖子1&4水位311技术分02007-7-4 17:00中喇Qwnjnan助理工程怵谢谢楼上答复0但是很多3在写模糊系统的数学表达式的时候,都是用单点模糊化的方法.而且有几本6里都说单点模糊化0O是很常用的方法啊.川华O积分35帖子17水位352007-7-4 18 30技术分Oandonchol工程师昨晚上细看了下模糊推理过程,对这问题比拟消楚了。我理解matlab的FlSeditOr就是用单点模槌化方法进行输入模糊化QQQ的,模糊化隶属函数和规那么前件的隶属函数没有必然的联系村华0秋分300帖子149水位300技术分0