问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

基于Matlab的水位模糊控制系统设计与仿真教程

创作时间:
作者:
@小白创作中心

基于Matlab的水位模糊控制系统设计与仿真教程

引用
CSDN
1.
https://blog.csdn.net/health010/article/details/137940200

本文将详细介绍如何使用Matlab进行水位模糊控制系统的仿真设计。从Matlab环境的搭建到模糊控制器的具体实现,再到最终的Simulink仿真验证,本文将手把手带你完成整个设计流程。

一、Matlab环境搭建

为了完成本教程,你需要先安装Matlab 2019b版本。你可以通过各种渠道获取安装包,安装过程中请参考相应的安装说明书。

二、模糊控制系统设计过程

1. 设计步骤

模糊控制系统的设计主要包括以下几个步骤:

  • 确定模糊控制系统的输入和输出变量及其量化方式
  • 建立模糊规则库,描述输入变量与输出变量之间的模糊关系
  • 确定模糊规则的权重和连接方式
  • 采用模糊推理方法,构建输入与输出的映射关系
  • 进行仿真验证和优化

2. 系统变量定义

  • 输入变量

  • 液位偏差(E):设定液位高度(r)与实测液位高度(y)之差

  • 液位偏差变化率(EC)

  • 输出变量

  • 控制阀门开度(U)

3. 变量空间分割

  • 液位偏差(E)

  • 论域:X = {-1, 0, 1}

  • 语言值:{high,okay,low},分别表示水位偏高、正好、偏低

  • 液位偏差变化率(EC)

  • 论域:Y = {-0.1, 0, 0.1}

  • 语言值:{negative, none, positive},分别表示水位下降、不变、上升

  • 控制阀门开度(U)

  • 论域:{-1, -0.5, 0, 0.5, 1}

  • 语言值:{close-fast, close-slow, no-change, open-slow, open-fast},分别表示快关、慢关、不变、慢开、快开

4. 隶属度函数

  • level和rate采用高斯型隶属函数
  • valve采用高斯形隶属度函数

5. 控制器结构

模糊控制器的结构如图1所示,其中虚线框内的为模糊控制器,执行机构为阀门,被控对象为水箱的液位高度。

三、建立Matlab模糊系统

1. 创建模糊系统窗口

在命令行窗口输入fuzzy命令,建立模糊系统窗口。控制器结构采用二维模糊控制器,输入变量为误差(level)及误差变化率(rate),输出变量为阀门开度(valve)。采用Mamdani的关系矩阵法。

2. 设置隶属度函数

  • level的隶属度函数设置
  • 打开隶属度函数设置界面
  • 添加三条高斯隶属函数
  • 调整论域并重命名每条线

  • rate的隶属度函数设置
  • 操作与level类似
  • 添加三条高斯隶属函数

  • valve的隶属度函数设置
  • 添加五条高斯隶属函数
  • 调整论域并重命名每条线

3. 编制规则表

根据液位模糊控制规则表,在FUZZY控制器中填写规则。在view中可以查看Rules和FIS输出量曲面观测窗。

4. 保存模糊控制器

完成基本模糊控制器的设定后,将其保存在桌面的文件夹中。

四、Simulink仿真

1. 搭建Simulink模型

建立基于模糊控制器的液位模糊控制的Simulink模型。整体框图如图12所示。

2. 仿真设置

选择合适的模块,构建模糊控制系统仿真结构。在library browser中寻找所需模块,设置sum模块为+-,调整传递函数参数,设置stop time在300-500之间。

3. 仿真结果

将保存的模糊控制器导入Simulink模型中,运行仿真。仿真结果如图15所示,蓝色线表示给定输入,黄色线表示实际液位变化。从结果可以看出,该模糊控制器能够实现无静差控制,但快速性较差。控制规则中误差变化起的作用较大,可以使系统尽快稳定,且没有超调现象。因此,该模糊控制器适用于液位偏差较小、系统接近稳态的情况。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号