注:1.本人小白,如有错误还请多多指教

一、实验设计对象描述及任务

系统描述

  一个温室的室温控制目标是 25℃,温度控制误差范围是(-2℃ ,+2℃),误差的变化率是(-0.5℃ ,+0.5℃), T=10s 为控制周期。被控对象为二阶惯性系统,无时延。建立的对象模型如下:
G(s)=K(T1s)(T2s+1)G(s)=\frac{K}{(T_1s)(T_2s+1)}G(s)=(T1​s)(T2​s+1)K​  其中 K 为系统增益,取值为学号最后两位为 10 ,k=10 ;T1=20 ;T2=58。

控制任务

  设计一个模糊控制器,控制误差和误差变化率的模糊子集不小于5个。设计一个 PID 控制器(包含 P 或 PI 或 PD 或 PID),对相同被控对象进行控制。比较两种控制器的控制效果。

二、实验器材及实验环境

  计算机、Matlab2016 以及 simulink

三、实验方案设计

PID控制设计

1、PID系统结构部框图

  打开 simulink 界面,选择第一个空模板,进入操作界面,打开工具库,搜索需要的工具,选中拖动到空白界面中。根据工具名称,依次选取并连线。双击 Transfer Fcn 根据题目要求,设置传递函数参数如图所示。
  传递函数为:
G=10(20x+1)(58x+1)=101160x2+78x+1G=\frac{10}{(20x+1)(58x+1)}=\frac{10}{1160x^2+78x+1}G=(20x+1)(58x+1)10​=1160x2+78x+110​
  pid仿真图:

  当 P 的参数为0.19,I 的参数为0.0032,D 的参数为1.9时 PID 曲线接近最好。

2、参数初值及调整

  利用 matlab 自动调节 pid 参数,仿真图如下:

  双击 PID Controller 进入 PID 控制器属性设置界面,根据题目要求设置参数如图所示。

模糊控制系统设计

1、输入模糊化

  隶属度值法是将精确输入量对各语言值的隶属度值作为模糊化结果。因语言值的隶属函数可用离散域上的表格形式表示,也可用连续域上的解析表达式表示,所以这种模糊化方法相当于一个对应的查表或是函数计算过程。

2、隶属度函数设计

  定义输入、输出模糊集。对误差 e 、误差变化 ec 及控制量 Kp 、Ki 、Kd 的模糊集及其论域定义如下:
  NB 和 PB 采用 zmf 和 smf 隶属函数,其它均采用 trimf 隶属函数。e、ec、Kp、Ki 和 Kd 的模糊集均为:{NB,NM,NS,ZO,PS,PM,PB}
  e 的论域为:{-2,-1.5,-1,-0.5,0,0.5,1,1.5,2}
  ec 的论域为:{-0.5,-0.4,-0.3,-0.2,-0.1,0,0.1,0.2,0.3,0.4,-0.5}
  Kp 的论域为:{-0.5,-0.4,-0.3,-0.2,-0.1,0,0.1,0.2,0.3,0.4,-0.5}
  Ki 的论域为:{-0.1,-0.08,-0.06,-0.04,-0.02,0,0.02,0.04,0.06,0.08,0.1}
  Kd 的论域为:{-2,-1.5,-1,-0.5,0,0.5,1,1.5,2}
  对于第一步中的输入输出变量进行模糊化,各自形成模糊化集合;确定变量论域。误差 e 、误差变化ec及控制量 Kp 、Ki 、Kd 的模糊集和论域确定后,需要对模糊变量确定隶属函数,即对模糊变量赋值,确定论域内元素对模糊变量的隶属度。由系统输出的误差及误差的变化趋势来设计消除系统的误差的模糊控制规则。建立模糊控制表:

Kp的模糊规则表

e/Δkp/ec NB NM NS ZO PS PM PB
NB PB PB PM PM PS ZO ZO
NM PB PB PM PS PS ZO NS
NS PM PM PM PS ZO NS NS
ZO PM PM PS ZO NS NM NM
PS PS PS ZO NS NS NM NM
PM PS ZO NS NM NM NM NB
PB ZO ZO NM NM NM NB NB

Ki的模糊规则表

e/Δkp/ec NB NM NS ZO PS PM PB
NB NB NB NM NM NS ZO ZO
NM NB NB NM NS NS ZO ZO
NB NB NM NS NS ZO PS PS
ZO NM NM NS ZO PS PM PM
PS NM NS ZO PS PS PM PB
PM ZO ZO PS PS PM PB PB
PB ZO ZO PS PM PM PB PB

Kd的模糊规则表

e/Δkp/ec NB NM NS ZO PS PM PB
NB PS NS NB NB NB NM PS
NM PS NS NB NM NM NS ZO
NS ZO NS NM NM NS NS ZO
ZO ZO NS NS NS NS NS ZO
PS ZO ZO ZO ZO ZO ZO ZO
PM PB NS PS PS PS PS PB
PB PB PM PM PM PS PS PB

3、输出方法

  采用 centroid 面积重心法进行反模糊化。为了获得准确的控制量,就要求模糊方法能够很好的表达输出隶属度函数的计算结果。重心法是取隶属度函数曲线与横坐标围成面积的重心,作为模糊推理的最终输出值,即:
v0=∫vvμv(v)dv∫vμv(v)dvv_0= \frac{∫_vv μ_v(v)dv}{∫_v μ_v(v)dv}v0​=∫v​μv​(v)dv∫v​vμv​(v)dv​
  对于具有 m 个输出量化级数的离散阈情况:
v0=∑k=1mvkμv(vk)∑k=1mμv(vk)v_0= \frac{\sum^m_{k=1}v_k μ_v(v_k)}{\sum^m_{k=1}μ_v(v_k)}v0​=∑k=1m​μv​(vk​)∑k=1m​vk​μv​(vk​)​

4、建立Matlab模糊系统

  命令行输入 fuzzy,打开模糊规则编辑器。Edit → Add variables → Input ;Edit → Add variables → Output ;Edit → Add variables → Output 。单击选中,分别对 input1 、input2 、output1 、output2 、output3 进行隶属度编辑。对于输入进行命名,分别为误差 e 和误差变化率 ec 。输出分别命名为 Kp 、Ki 、Kd ,其他不变。

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





  根据规则表编辑规则(共49条)

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



  保存并导入到 workspace 。

5、模糊系统Matlab仿真

  输入为终值为25的阶跃函数。

  在库里面找到 Fuzzy Logic Controlller 模块,添加 fuzzypidcyq 。

  模糊 pid 仿真图:

实验结果对比

单位阶跃输入下模糊系统输出

单位斜坡输入时模糊系统输出

单位阶跃输入时PID输出

单位斜坡输入时PID输出

实验结果分析

两种控制器比较

  由仿真结果可见两种控制器对系统的各项性能指标都有了改进,常规 PID 还是有超调量的,模糊控制器的超调量几乎为零。PID 控制在速度上优于模糊控制,并且稳态无波动。PID 控制器仿真稳定速度比模糊控制器快很多。这是因为常规 PID 控制算法计算量小,实时性也好。模糊控制的计算量大,具有较大的惯性和滞后性。

工程文件

链接:https://pan.baidu.com/s/1o1fOZd9x17yya7y5643PVg
提取码:cyqy

基于matlab的模糊PID控制仿真相关推荐

  1. 基于matlab的步进电机转速控制仿真,基于matlab的步进电机转速控制仿真

    基于matlab的步进电机转速控制仿真 摘 要 一般电动机都是连续旋转,而步进电动却是一步一步转动的,故叫步进电动机.每输入一个冲信号,该电动机就转过一定的角度(有的步进电动机可以直接输出线位移,称为 ...

  2. matlab simulink 模糊pid控制DCDCbuck

    1.内容简介 略 627-可以交流.咨询.答疑 2.内容说明 DCDC拓扑之一BUCK电路,是一种降压类型电路,用途非常广泛,拓扑图如下,主要元器件包括开关管.电感.续流二极管.滤波电容.控制开关管导 ...

  3. 基于matlab温度的pid控制代码,基于Matlab的PID温度控制系统设计.doc

    ? 1994-2013 China Academic Journal Electronic Publishing House. All rights reserved, ? 1994-2013 Chi ...

  4. 基于matlab的步进电机转速控制仿真,matlab步进电机转速控制仿真(课程设计).doc

    matlab步进电机转速控制仿真(课程设计) 摘 要 一般电动机都是连续旋转,而步进电动却是一步一步转动的,故叫步进电动机.每输入一个冲信号,该电动机就转过一定的角度(有的步进电动机可以直接输出线位移 ...

  5. matlab下pid控制仿真,基于MATLAB下PID控制仿真.PDF

    维普资讯 2004年第 4期 中 国 航 海 NO.4Dec.2004 塑 垒 垒 SerialNO.61 文章编号 :1000-4653(2004)04-0077-04 基于MATLAB下的PID控 ...

  6. 模糊PID控制器MATLAB仿真探讨,基于Matlab的模糊自整定PID控制器仿真研究

    1. 引言 传统的PID控制因其算法可靠简单,鲁棒优良,可靠度高,在工业过程中得到了广泛的应用,特别适用于建立一个精确的数学模型确定控制系统的确定性控制.李文宇等对PID控制进行了研究,并取得了一定的 ...

  7. 双容水箱液位模糊PID控制系统设计与仿真(Matlab/Simulink)

    前些天发现了十分不错的人工智能学习网站,通俗易懂,风趣幽默,没有广告,分享给大家,大家可以自行看看.(点击跳转人工智能学习资料) 微信公众号:创享日记 发送:双容模糊 获取完整无水印报告+仿真源文件+ ...

  8. 模糊pid控制的温度系统matlab源代码_变风量空调模糊 PID 控制系统的仿真研究

    一般在负荷变化较大的大型中央空调系统中,采用温度恒定和改变风量的调节方式,从而使控制房间的送风量随系统负荷的变化而变化的中央空调系统叫做变风量空调系统.该系统最大优点就是a节能,如果全年运行,可节约能 ...

  9. 【飞行器】基于matlab四旋翼飞行器PID控制仿真【含Matlab源码 1277期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[飞行器]基于matlab四旋翼飞行器PID控制仿真[含Matlab源码 1277期] 点击上面蓝色字体,直接付费下载,即可. 获取代码方式 ...

  10. 基于MATLAB的离散系统的数字PID控制仿真

    基于MATLAB的离散系统的数字PID控制仿真 1 设计要求 2 方案设计 2.1 设计思路及总体方案框图 2.2 PID算法的基本原理 2.3 PID算法的离散化 3 总体方案的选择与设计 3.1 ...

最新文章

  1. Permission denied error: unable to index file .vs/Trip2015/v15/Server/sqlite3/db.lock fatal: adding
  2. C++中cin、cin.get()、cin.getline()、getline()、gets()等函数的用法
  3. nodejs+express整合kindEditor实现图片上传
  4. Zookeeper客户端
  5. Java—正整数分解成质因数
  6. 将字符串和数字合并动态写入
  7. java dijkstra算法代码_[转载]Java实现dijkstra算法: 地图中任意起点寻找最佳路径...
  8. 安卓案例:绘制文本图形图像
  9. Blockchain.com将于今日7:59暂停XRP交易
  10. Git:常用的命令(不断迭代完善)
  11. 简述中断的整个过程,谈谈你对中断在计算机中作用的理解。
  12. java 线程类注入失败_如何在多线程中注入bean?!
  13. windows x64和x86的区别
  14. Rasa课程、Rasa培训、Rasa面试系列 金融银行案例Bot Step By Step学习
  15. 歌词制作软件C#实现
  16. 第十周 项目二 阴险的小刚
  17. 2023年技术分析|血氧仪芯片方案
  18. TreeMap和LinkedHashMap
  19. 移动端手机软键盘遮挡输入框问题
  20. Microsoft Edge右下角烦人的广告

热门文章

  1. 一篇文章理解Ext4文件系统的目录
  2. [CTF] 攻防世界MISC高手区部分题目WriteUp
  3. python request下载文件_python下载文件的三种方法
  4. ubuntu记录pdf手写笔记: 数位板(硬件)+xournal(软件)
  5. Ubuntu中的Gif动画录制工具
  6. 项目管理十大知识领域
  7. miui8 android.policy,小米MIUI8系统调教记:轻快好省 畅爽静稳
  8. mac 硬盘读写速度测试 软件,MAC硬盘速度测试技巧
  9. Android Studio 2.2 正式稳定版已发布,先睹为快!
  10. Unbuntu卸载anaconda(最新最全亲测)