马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
[url=]1[/url].模糊控制属于智能控制里用的比较广范的一种,本人这几日学习了一点皮毛,总结如下。模糊控制的控制方法其实又很多种,这里介绍的是基本模糊控制器。所有有关模糊控制的书都会介绍这中控制器,我只是介绍若干关键步骤,别提供一个调试好的Matlab下simulink仿真例子,希望对一些初学者有帮助。大家一起进步嘛!:)
2.先看我自己设计的simulink模型图1以及控制性能图2。
图1 模糊控制一阶系统simulink模型
图2模糊控制效果图 说明:
a.控制对象为一阶系统,目的是为了简单,调通后可以修改控制对象,控制参数体会各个量对控制效果的影响。
b.一阶系统直接施加输入,如图1所示的控制对象,上升时间会很大。完全可以使用PID控制使控制效果满足需要。这里使用模糊控制来代替PID控制器。比较一下!
3.模糊控制器设计
模糊控制器的计算量是非常大的,我不从数学推导介绍。讲一下利用matlab的模糊工具箱(Fuzzy logicaltoolbox)建立基本模糊控制器的方法。在命令行输入fuzzy,就可以进入模糊推理系统编辑器(fiseditor)。利用这个工具制作一个*.fis的文件。这个文件就是模糊控制器的核心!在simulink中和以往进行PID控制一样建立模型。如图1,在simulink的库里点击Fuzzy Logical toolbox,拖一个Fuzzyl logical controller withrule viewer,双击这个环节,在弹出的对话框的fis Matrix里填入你自己起的*.fis的名字,不需输入后缀fis。
在设计模糊控制器(*.fis)前,要想好,你设计的控制器需要几个输入,几个输出。比如,本例中拟采用偏差E和偏差变化率Ec这两个量作为模糊控制器的输入,模糊控制器有一个输出。很明显,这是利用模糊控制器代替PD控制的。对应的模糊控制器的设计也要具有两个输入一个输出。
4.利用matlab的Fuzzy logical toolbox 设计模糊控制器(生成*.fis文件)的关键步骤:
a.添加输入输出。先发张图3!
图3.fis编辑器 默认的具有一个输出,添加第二个输入,并且分别命名为E,Ec,U。 b.确定隶属函数。双击黄色和绿色的方框就可以进入隶属函数编辑对话框了。设置E,Ec的range为[-6,6],u的range为[-1,1]。然后每一个变量再添加4个输入隶属函数,总共7个。matlab提供了11种隶属函数,第一次用选择常用的三角形trimf,区别不大的。三角形隶属函数有三个点确定,其实是三角形底边两个端点和中点。 c.确定模糊规则。模糊控制的书会介绍很多方法,最常用的是根据自己经验。直接找本书,从上面找一个也行。只要理解就行了。真个规则按照上面的隶属函数设定会有49条,组成一张表。
图4 控制规则表 按照这张表设置模糊规则很容易,不是本文的重点。不多做介绍! d.完毕。在任何窗口导出到磁盘,生成*.fis(如myexample.fis)即可。 5.分析 不要以为模糊控制可以模糊到弄个差不多就可以控制了。不是的!图1中这个仿真中用到了3个系数,Gain,Gain1,Gain2。调整这三个系数都会对整个控制效果有很大影响。分别改变三个参数看看对控制性能的影响。
图5 参数对模糊控制的影响 说明: a.很明显发这三个参数对控制器的性能有很大的影响,所以不要指望,基本模糊控制器可以实现不用人工调整就可以。 b.三个参数中Gain类似于PD控制中的P,过小则稳态误差大,上升时间长。过大,稳态误差小了,上升时间小了,但是出现超调,继续增大则出现振荡。 c.参数Gain2类似于PD控制中的D,可以调整系统的"阻尼"。对于电容-电阻电路,传递函数分母为Ts+1,T=RC为系统的时间常数。修改Gain2可以改善系统的时间常数,使上升时间减小或增加。其作用相当于改变电容大小,放电时间减小或增大。对于机械的弹簧-阻尼系统,T=f/k,调整D相当于改变f。由仿真知,Gain2可以从负到正改变,值越大,系统的上升时间越大,响应越慢。当改为负值时,系统地上升时间越来越小,以至于阻尼太小,发生振荡。 d.参数Gain1可修改的范围比较大。对系统的影响相对较小。它是对误差E的放大,或缩小,只要合适就行了。 6.注意事项 在仿真中使用matlab7.0,模糊控制工具箱,一运行就出错,提示一个max控件不能接受boolean输入,这需要改两个地方,第一,把前面的<=的输出设置为int8类型,第二,修改max环节的一个选择框,需要输入输出类型相同,不要选择。还有一个是仿真中要加零阶保持器。否则,系统当连续系统运行,很慢地!在控制器设计中使用的如图4的控制规则,仔细点分析就会发现,当误差E为负大,即指令值小于实际值时,此时应该减小输出值。但是控制规则输出为正大即加大输出,因此在仿真中使用了反馈为正,输入为负。只因为我最初没有仔细看,设计完了才发现,又懒得改,因此就将就一下,其实应该修改控制规则。 7.感悟 在很多的控制系统中,bu是采用这种方式的,都是离线的计算一张所谓控制表。它与控制规则表类似。因为大多控制器采用单片机或DSP,这样从头到尾计算量太大。控制表使用时,检测到输入和输出,把它归为正大正小这些等级,四舍五入也好,别的方法也行,就丢失一些信息,换来速度,直接查表,也是一个数,把这个输作为控制量。整个过程完全就是精确控制,盗用模糊控制的名字而以。 由分析可知,选择E,Ec的基本模糊控制基本就是PID控制效果,因为没有选择E积分,稳态误差没法消除。所以可以用PID控制的,再使用模糊控制就没有什么意思了。只是用来学习一下思路。 模糊控制真正的那些不能用PID的场合发挥作用。比如洗衣机,找不到数学模型时候,才能发挥它的魅力所在。我看过使用模糊控制控制四节倒立摆的视频。
全文完! 2006年4月18Ly于NEU
|