视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
模糊控制Matlab仿真
2025-09-25 14:13:59 责编:小OO
文档


说明:

a.控制对象为一阶系统,目的是为了简单,调通后可以修改控制对象,控制参数体会各个量对控制效果的影响。

b.一阶系统直接施加输入,如图1所示的控制对象,上升时间会很大。完全可以使用PID控制使控制效果满足需要。这里使用模糊控制来代替PID控制器。比较一下!

模糊控制器设计

          模糊控制器的计算量是非常大的,我不从数学推导介绍。讲一下利用matlab的模糊工具箱(Fuzzy logical toolbox)建立基本模糊控制器的方法。在命令行输入fuzzy,就可以进入模糊推理系统编辑器(fis editor)。利用这个工具制作一个*.fis的文件。这个文件就是模糊控制器的核心!在simulink中和以往进行PID控制一样建立模型。如图1,在simulink的库里点击Fuzzy Logical toolbox,拖一个Fuzzyl logical controller with rule viewer,双击这个环节,在弹出的对话框的fis Matrix里填入你自己起的*.fis的名字,不需输入后缀fis。

        在设计模糊控制器(*.fis)前,要想好,你设计的控制器需要几个输入,几个输出。比如,本例中拟采用偏差E和偏差变化率Ec这两个量作为模糊控制器的输入,模糊控制器有一个输出。很明显,这是利用模糊控制器代替PD控制的。对应的模糊控制器的设计也要具有两个输入一个输出。

利用matlab的Fuzzy logical toolbox 设计模糊控制器(生成*.fis文件)的关键步骤:

a.添加输入输出。

        图3.fis编辑器

                默认的具有一个输出,添加第二个输入,并且分别命名为E,Ec,U。

      b.确定隶属函数。双击黄色和绿色的方框就可以进入隶属函数编辑对话框了。设置E,Ec的range为[-6,6],u的range为[-1,1]。然后每一个变量再添加4个输入隶属函数,总共7个。matlab提供了11种隶属函数,第一次用选择常用的三角形trimf,区别不大的。三角形隶属函数有三个点确定,其实是三角形底边两个端点和中点。

       c.确定模糊规则。

      d.完毕。在窗口导出到磁盘,生成*.fis(如myexample.fis)即可。

分析

         不要以为模糊控制可以模糊到弄个差不多就可以控制了。不是的!图1中这个仿真中用到了3个系数,Gain,Gain1,Gain2。调整这三个系数都会对整个控制效果有很大影响。

说明:

a.很明显发这三个参数对控制器的性能有很大的影响,所以不要指望,基本模糊控制器可以实现不用人工调整就可以。

b.三个参数中Gain类似于PD控制中的P,过小则稳态误差大,上升时间长。过大,稳态误差小了,上升时间小了,但是出现超调,继续增大则出现振荡。

c.参数Gain2类似于PD控制中的D,可以调整系统的"阻尼"。对于电容-电阻电路,传递函数分母为Ts+1,T=RC为系统的时间常数。修改Gain2可以改善系统的时间常数,使上升时间减小或增加。其作用相当于改变电容大小,放电时间减小或增大。对于机械的弹簧-阻尼系统,T=f/k,调整D相当于改变f。由仿真知,Gain2可以从负到正改变,值越大,系统的上升时间越大,响应越慢。当改为负值时,系统地上升时间越来越小,以至于阻尼太小,发生振荡。

d.参数Gain1可修改的范围比较大。对系统的影响相对较小。它是对误差E的放大,或缩小,只要合适就行了。

仿真建立modle文件

注意事项

       在仿真中使用matlab7.0,模糊控制工具箱,一运行就出错,提示一个max控件不能接受boolean输入。解决方法在上篇日志中意给出。还有一个是仿真中要加零阶保持器。否则,系统当连续系统运行,很慢!有时仿真中会提示警告,说步长过大,就不最大步长由自动改为较小的值。另外,*fis文件名必须和模糊控制器名字一致。

感悟

       在很多的控制系统中,不是采用这种方式的,都是离线的计算一张所谓控制表。它与控制规则表类似。因为大多控制器采用单片机或DSP,这样从头到尾计算量太大。控制表使用时,检测到输入和输出,把它归为正大正小这些等级,四舍五入也好,别的方法也行,就丢失一些信息,换来速度,直接查表,也是一个数,把这个输作为控制量。整个过程完全就是精确控制,盗用模糊控制的名字而以。

       由分析可知,选择E,Ec的基本模糊控制基本就是PID控制效果,因为没有选择E积分,稳态误差没法消除。所以可以用PID控制的,再使用模糊控制就没有什么意思了。只是用来学习一下思路。

       模糊控制真正的那些不能用PID的场合发挥作用。比如洗衣机,找不到数学模型时候,才能发挥它的魅力所在。下载本文

显示全文
专题