热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

matlab实现炉温模糊控制器设计与仿真和PID控制器仿真比较详解

作业31.问题描述2.分析a.模糊控制器的结构输入为实际输出与理论输出之差e和偏差变化率de。输出为炉温u。模糊控制器为两输入一输出。b.定义输入、输出模糊集输入和输出均分为7个模

作业3

1.问题描述

《matlab实现炉温模糊控制器设计与仿真和PID控制器仿真比较详解》

《matlab实现炉温模糊控制器设计与仿真和PID控制器仿真比较详解》

2.分析

a.模糊控制器的结构

输入为实际输出与理论输出之差e和偏差变化率de。输出为炉温u。模糊控制器为两输入一输出。

b.定义输入、输出模糊集

输入和输出均分为7个模糊子集,均为{NB,NM,NS,ZO,PS,PM,PB}。e的论域为[-100 100],de的论域为[-55],u的论域为[-100 100]。

c.输入输出隶属函数

  NB和PB均采用gaussmf(高斯)隶属函数,其它均采用trimf(三角)隶属函数

d.建立模糊控制规则表(共有49条规则)

de

e

NB

NM

NS

ZO

PS

PM

PB

NB

NB

NB

NM

NM

NS

NS

ZO

NM

NB

NM

NM

NS

NS

ZO

PS

NS

NM

NM

NS

NS

ZO

PS

PS

ZO

NM

NS

NS

ZO

PS

PS

PM

PS

NS

NS

ZO

PS

PS

PM

PM

PM

NS

ZO

PS

PS

PM

PM

PB

PB

ZO

PS

PS

PM

PM

PB

PB

e.反模糊化

采用centroid面积重心法进行反模糊化。

3.建立Matlab模糊系统

a.打开FIS编辑器,(在Commond Window 输入fuzzy或在“应用程序”中点击“fuzzy logic designer”),建立双输入单输出模糊系统(edit/add variable/input),并根据分析的内容确定相应参数(名字在name框里键入,范围要双击对应输入输出,然后在range框键入)

 《matlab实现炉温模糊控制器设计与仿真和PID控制器仿真比较详解》

b.添加隶属度函数(隶属度函数中间范围较窄,两边较宽,以使误差较小时快速稳定)(双击输入或输出框后出现如下图,edit/add mfs,选择添加的个数即可)并设置相应参数

《matlab实现炉温模糊控制器设计与仿真和PID控制器仿真比较详解》

c.根据规则表编辑规则

 《matlab实现炉温模糊控制器设计与仿真和PID控制器仿真比较详解》

d.查看规则编辑器和曲面观测器(view/rules  view/surface)

《matlab实现炉温模糊控制器设计与仿真和PID控制器仿真比较详解》

  《matlab实现炉温模糊控制器设计与仿真和PID控制器仿真比较详解》          

e.保存并导入到workspace(file/export/to file  to workspace或者在命令行窗口键入:文件名=readfis(‘文件名.fis’),回车)

4.Matlab仿真

a.仿真结构图:

输入为终值为200的阶跃函数(saturation的范围及对应e,de,u的范围,fuzzy logic controller的参数为文件名)。如下图:

《matlab实现炉温模糊控制器设计与仿真和PID控制器仿真比较详解》

各参数配置(simulation/model configuration parameters)尤其是zero-crossing control,严重影响仿真速度甚至效

《matlab实现炉温模糊控制器设计与仿真和PID控制器仿真比较详解》 

《matlab实现炉温模糊控制器设计与仿真和PID控制器仿真比较详解》

b.仿真结果

《matlab实现炉温模糊控制器设计与仿真和PID控制器仿真比较详解》

全局图

《matlab实现炉温模糊控制器设计与仿真和PID控制器仿真比较详解》

                 局部放大图

c.后发现Saturation模块可去掉,仿真结果几乎相同。可见,一旦设定输入输出论域,模糊控制器的输入输出会自动约束到相应范围,如下图:

 《matlab实现炉温模糊控制器设计与仿真和PID控制器仿真比较详解》

d.仿真结果为:

《matlab实现炉温模糊控制器设计与仿真和PID控制器仿真比较详解》

全局图

《matlab实现炉温模糊控制器设计与仿真和PID控制器仿真比较详解》

局部放大图

e.结果分析

由图看出,150s时才趋于稳定,存在稳态误差,并在稳态值附近有细小震荡。这是因为设计的模糊控制器相当于PD控制器,PD控制器本身存在稳态误差,模糊控制属于离散控制,所以会有波动。

5.PID控制器

a.仿真结构图

不断调整PID各参数,发现P=1.2、I=0.01、D=1时效果较好,如下图所示:

《matlab实现炉温模糊控制器设计与仿真和PID控制器仿真比较详解》

b.仿真结果

《matlab实现炉温模糊控制器设计与仿真和PID控制器仿真比较详解》

全局图

《matlab实现炉温模糊控制器设计与仿真和PID控制器仿真比较详解》

局部放大图

e.结果分析

由图可知,PID控制器稳定速度很快,约5秒就稳定了,并且稳定后无波动。

6.比较分析:

    由运行结果可知,PID控制在速度上优于模糊控制,并且稳态无波动。PID控制器仿真稳定速度比模糊控制器快很多。这是因为常规PID 控制算法计算量小,实时性也好。模糊控制的计算量大,具有较大的惯性和滞后性。

 


推荐阅读
  • 本文详细介绍了Android中的坐标系以及与View相关的方法。首先介绍了Android坐标系和视图坐标系的概念,并通过图示进行了解释。接着提到了View的大小可以超过手机屏幕,并且只有在手机屏幕内才能看到。最后,作者表示将在后续文章中继续探讨与View相关的内容。 ... [详细]
  • 如何在HTML中获取鼠标的当前位置
    本文介绍了在HTML中获取鼠标当前位置的三种方法,分别是相对于屏幕的位置、相对于窗口的位置以及考虑了页面滚动因素的位置。通过这些方法可以准确获取鼠标的坐标信息。 ... [详细]
  • wpf+mvvm代码组织结构及实现方式
    本文介绍了wpf+mvvm代码组织结构的由来和实现方式。作者回顾了自己大学时期接触wpf开发和mvvm模式的经历,认为mvvm模式使得开发更加专注于业务且高效。与此同时,作者指出mvvm模式相较于mvc模式的优势。文章还提到了当没有mvvm时处理数据和UI交互的例子,以及前后端分离和组件化的概念。作者希望能够只关注原始数据结构,将数据交给UI自行改变,从而解放劳动力,避免加班。 ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • 在springmvc框架中,前台ajax调用方法,对图片批量下载,如何弹出提示保存位置选框?Controller方法 ... [详细]
  • ScrollView嵌套Collectionview无痕衔接四向滚动,支持自定义TitleView
    本文介绍了如何实现ScrollView嵌套Collectionview无痕衔接四向滚动,并支持自定义TitleView。通过使用MainScrollView作为最底层,headView作为上部分,TitleView作为中间部分,Collectionview作为下面部分,实现了滚动效果。同时还介绍了使用runtime拦截_notifyDidScroll方法来实现滚动代理的方法。具体实现代码可以在github地址中找到。 ... [详细]
  • React项目中运用React技巧解决实际问题的总结
    本文总结了在React项目中如何运用React技巧解决一些实际问题,包括取消请求和页面卸载的关联,利用useEffect和AbortController等技术实现请求的取消。文章中的代码是简化后的例子,但思想是相通的。 ... [详细]
  • iOS Swift中如何实现自动登录?
    本文介绍了在iOS Swift中如何实现自动登录的方法,包括使用故事板、SWRevealViewController等技术,以及解决用户注销后重新登录自动跳转到主页的问题。 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • 解决文件名过长下载失败问题的jQuery方案
    本文介绍了使用jQuery解决文件名过长导致下载失败的问题。原方案中存在文件名部分丢失的问题,通过动态生成隐藏域表单并提交的方式来解决。详细的解决方案和代码示例在文章中给出。 ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • MVC设计模式的介绍和演化过程
    本文介绍了MVC设计模式的基本概念和原理,以及在实际项目中的演化过程。通过分离视图、模型和控制器,实现了代码的解耦和重用,提高了项目的可维护性和可扩展性。详细讲解了分离视图、分离模型和分离控制器的具体步骤和规则,以及它们在项目中的应用。同时,还介绍了基础模型的封装和控制器的命名规则。该文章适合对MVC设计模式感兴趣的读者阅读和学习。 ... [详细]
  • Todayatworksomeonetriedtoconvincemethat:今天在工作中有人试图说服我:{$obj->getTableInfo()}isfine ... [详细]
  • Asp.net Mvc Framework 七 (Filter及其执行顺序) 的应用示例
    本文介绍了在Asp.net Mvc中应用Filter功能进行登录判断、用户权限控制、输出缓存、防盗链、防蜘蛛、本地化设置等操作的示例,并解释了Filter的执行顺序。通过示例代码,详细说明了如何使用Filter来实现这些功能。 ... [详细]
  • SpringMVC工作流程概述
    SpringMVC工作流程概述 ... [详细]
author-avatar
嫣嫣细语dingdingjq
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有