加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

简单matlab/simulink模糊控制器应用实例-图

(2008-09-22 21:46:48)
标签:

模糊控制

仿真

matlab

simulink

电机

校园

资讯

分类: Matlab实例

前面我们已经利用模糊控制工具箱设计好了一个模糊控制器(假定我们存为fuzzy1.fis),参见:

 4步教你学会使用matlab模糊控制工具箱

下面我们检验一下,看看我们的控制器到底怎么样。以一个简单的电机控制为例,我们在Simulink中建立了它的模糊控制系统如下:

简单matlab/simulink模糊控制器应用实例-图

 

在用这个控制器之前,需要用readfis指令将fuzzy1.fis加载到matlab的工作空间,比如我们用这样的指令:myFLC=readfis(‘fuzzy1.fis’);就创建了一个叫myFLC的结构体到工作空间,并在fuzzy logic controller中参数设为:myFLC

可以看到,在模糊控制器的输入和输出均有一个比例系数,我们叫它量化因子,它反映的是模糊论域范围与实际范围之间的比例关系,例如,模糊控制器输入输出的论域范围均为[-33],而实际误差的范围是[-1010],误差变化率范围是[-100100],控制量的范围是[-2424],那么我们就可以算出量化因子分别为0.30.038。量化因子的选取对于模糊控制器的控制效果有很大的影响,因此要根据实际情况认真选取哦简单matlab/simulink模糊控制器应用实例-图

好,现在我们可以设定仿真步长,比如定步长的10ms,就可以运行了。

运行后,产生这样一个错误简单matlab/simulink模糊控制器应用实例-图

MinMax blocks do not accept 'boolean' signals. The input signal(s) of block 'test_fuzzy/Fuzzy Logic  Controller/FIS Wizard/Defuzzification1/Max (COA)' must be one of the MATLAB 'uint8', 'uint16', 'uint32', 'int8', 'int16', 'int32', 'single', or 'double' data types

我想很多朋友做模糊控制的时候都会遇到这个情况。没关系,这里提供两个解决办法:

1.直接在Defuzzification1这个模块中的那个比较环节后加入数据类型转换模块,将boolean转化为double型,或者双击那个比较模块,选中show additional parameters,将输出数据类型改为specify via dialog,然后选uint(8)即可;但是在仿真之后,又会发现很多地方都存在这个问题,因此你不得不一个一个去修改,如果你不怕累的话简单matlab/simulink模糊控制器应用实例-图

2.第二个方法是最简单的,直接在simulation parameters->advancedboolean logic signals选为off,强烈推荐你用这个简单matlab/simulink模糊控制器应用实例-图

好了,这些都解决了,我们就可以仿真了,例如给个方波信号,可以得到仿真曲线如下

简单matlab/simulink模糊控制器应用实例-图

 >>http://blog.sina.com.cn/xianfa110

相关文章:

 

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有