- 实验内容
运用matlab制作一个两个输入一个输出的模糊控制器。分别控制一阶二阶三阶系统查看其输出。
- 实验分析
- 模糊逻辑控制器的基本结构
2. 根据系统实际情况,选择e,de和u的论域
e range : [-6 6]
ec range: [-6 6]
u range: [-2 2]
- . e,de和u语言变量的选取
e 7个:NB,NM,NS,ZERO,PS,PM,PB
ec 7个:NB,NM,NS,ZERO,PS,PM,PB
U 7个:NB,NM,NS,ZERO,PS,PM,PB
4. 模糊规则确定
e ec | NB | NM | NS | ZERO | PS | PM | PB |
NB | NB | NB | NB | NB | NM | NS | ZERO |
NM | NB | NB | NM | NM | NS | ZERO | PS |
NS | NB | NM | NM | NS | ZERO | PS | PM |
ZERO | NB | NM | NS | ZERO | PS | PM | PB |
PS | NM | NS | ZERO | PS | PM | PM | PB |
PM | NS | ZERO | PS | PM | PM | PB | PB |
PB | ZERO | PS | PM | PB | PB | PB | PB |
规则解释:
- 以 e=NB,并且ec=NB,输出DU=NB为例。偏差e为负大(NB),偏差变化率ec也为负大(NB),说明反馈超调量很大,而且反馈超调增大的变化趋势也很大,因此应该是最大幅度的减小控制量,即控制量为负大(NB)。
- 以e=PB并且ec=PB,则u=PB,为例。偏差e为正大(PB),偏差变化率ec也为正大(PB),说明被控量远远没有达到稳态值,同时原理稳态值的趋势很大,因此应该以最快的速度增加被控量,即输出u=PB。
- 以e=NS并且ec=PS,则u=ZERO为例。偏差为负小(NS)时,偏差的变化率为正小(PS),说明被控量反馈值略小,即,略有超调,并且以较小的速度减小,因此可保持控制量不变,即控制增量为零(ZERO)。
5. 隐含和推理方法的制定
- 隐含采用 ‘mamdani’方法: ‘max-min‘
- 推理方法, 即 ‘min‘ 方法
- 去模糊方法:重心法。
- 选择隶属函数的形式:三角型
- 实验步骤
- 建立fuzzy(fis)文件。
- 在主窗口输入fuzzy,显示如下图所示
(2)选择Edit Add Variable Input,增加一个输入,使之成为两输入一输出。
并将输入输出的名字分别改为e,ec,u。
(3)双击输入e,修改e的范围(range)改为(-6 6),并且将其中的mfs全部删除,并且点击Edit,ADD MFS…添加七个mfs,并依次将名字改为NB,NM…PM,PB。同理编辑ec和u
(4)建立规则,双击规则的图框,根据上图所示的规则表,建立规则。
(5)查看规则及控制器的输出
(6)保存文件并输出到工作空间
2、建立一阶二阶三阶系统,进行仿真。注意在模糊控制模块,要将刚建立的fis文件添加到模糊控制器中。
(1)一阶系统
传递函数为:
其系统建模为:
(2)二阶系统
传递函数为:
其系统建模为:
- 三节系统
传递函数为:
其系统建模为:
四、实验结果及分析
1、一阶系统
图一:系统经过模糊控制器后的输出:
图二:系统未经过模糊控制后的输出:
图三:模糊控制器的输入:
图四:模糊控制器的输出:
2、二阶系统
图一:经过模糊控制器的系统输出:
图二:未经过模糊控制的系统的输出:
图三:模糊控制器的输入:
图四:模糊控制器的输出:
3、三节系统
图一:经过模糊控制器的系统输出:
图二:未经过模糊控制器的系统输出:
图三:模糊控制器的输入:
图四:模糊控制器的输出:
本节所需的全部文件代码如下,请自行下载:
链接:https://pan.baidu.com/s/10C9xdvA-wAwmDGp5ifVVpg
提取码:iqw1
如有疑问请留言