声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 10077|回复: 28

[控制系统类] 模糊控制仿真学习总结(转贴)

[复制链接]
发表于 2008-9-15 08:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
[url=]1[/url].模糊控制属于智能控制里用的比较广范的一种,本人这几日学习了一点皮毛,总结如下。模糊控制的控制方法其实又很多种,这里介绍的是基本模糊控制器。所有有关模糊控制的书都会介绍这中控制器,我只是介绍若干关键步骤,别提供一个调试好的Matlab下simulink仿真例子,希望对一些初学者有帮助。大家一起进步嘛!:)
2.先看我自己设计的simulink模型图1以及控制性能图2。

11.JPG



图1 模糊控制一阶系统simulink模型

22.jpg

图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!


33.JPG
     图3.fis编辑器
                默认的具有一个输出,添加第二个输入,并且分别命名为E,Ec,U。
     b.确定隶属函数。双击黄色和绿色的方框就可以进入隶属函数编辑对话框了。设置E,Ec的range为[-6,6],u的range为[-1,1]。然后每一个变量再添加4个输入隶属函数,总共7个。matlab提供了11种隶属函数,第一次用选择常用的三角形trimf,区别不大的。三角形隶属函数有三个点确定,其实是三角形底边两个端点和中点。
       c.确定模糊规则。模糊控制的书会介绍很多方法,最常用的是根据自己经验。直接找本书,从上面找一个也行。只要理解就行了。真个规则按照上面的隶属函数设定会有49条,组成一张表。
44.JPG


图4 控制规则表
按照这张表设置模糊规则很容易,不是本文的重点。不多做介绍!
d.完毕。在任何窗口导出到磁盘,生成*.fis(如myexample.fis)即可。
5.分析
         不要以为模糊控制可以模糊到弄个差不多就可以控制了。不是的!图1中这个仿真中用到了3个系数,Gain,Gain1,Gain2。调整这三个系数都会对整个控制效果有很大影响。分别改变三个参数看看对控制性能的影响。






55.jpg
图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





回复
分享到:

使用道具 举报

发表于 2008-10-9 15:23 | 显示全部楼层
:handshake 好帖!
发表于 2008-10-18 16:03 | 显示全部楼层
帖子很好。顶一下,
能留下联系方式吗,我的模糊控制碰见一点问题想请教一下,QQ号码或邮箱,谢谢
发表于 2008-12-7 20:11 | 显示全部楼层
三个参数有没有什么好方法能去调,如果一个一个修改,很费时,有没有什么好的经验啊?还有一个问题,精确量模糊化和后面输出结果的反模糊化,这两步到底是怎么来实现的啊。参考书但是感觉不是很理解。
发表于 2008-12-12 17:05 | 显示全部楼层
模糊化处理其实就是乘以一个系数,使模糊控制器的输入在你设定的模糊论域之内,比如〔-6,6〕.至于这个系数就与你的实际误差或误差变化有关了。比如实际误差在〔-10,10〕,那么该系数取0.6才能满足模糊化后在〔-6,6〕范围内,清晰化就是逆过程,就不说了
发表于 2009-1-2 21:52 | 显示全部楼层
自己做过后 再看这篇帖 简直受益匪浅
发表于 2009-1-6 11:52 | 显示全部楼层
呵呵,文的作者所说的四节倒立摆视频就是最初北师大的某教授的视频,呵呵~
发表于 2009-1-7 22:51 | 显示全部楼层
真是好帖子 只可惜我用不到 支持你
发表于 2009-2-25 14:53 | 显示全部楼层
好贴~  zhichiyixia
发表于 2009-2-27 14:46 | 显示全部楼层
运行后错误:
Error in 'untitled1/Fuzzy Logic  Controller  with Ruleviewer': Parameter 'fuzzyexample1' cannot be evaluated.  MATLAB error message: Undefined function or variable 'fuzzyexample1'.
fuzzyexample1是我起的名字

是怎么回事
发表于 2009-2-27 14:54 | 显示全部楼层
解决了  好了!!!
发表于 2009-3-7 23:06 | 显示全部楼层
thanks for sharing, it's too usful
发表于 2009-4-7 12:41 | 显示全部楼层
老兄,你太好了,呵呵。
发表于 2009-5-3 13:00 | 显示全部楼层
很棒的帖子,学习了。
发表于 2009-5-29 00:51 | 显示全部楼层
谢谢很好的贴子 做模糊控制 我来回研究好几遍全靠它
谢谢
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-15 12:30 , Processed in 0.081068 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表