使用MATLAB的simulink仿真模糊PID并与普通PID简单对比

Matlab Simulink是一个用来对动态系统进行建模、仿真和分析的软件包。使用Simulink来建模、分析和仿真各种动态系统。它提供了一种图形化、模块化的搭建平台,利用框图和箭头等就可以相对于代码更加简单地、直接地实现连续系统、离散系统和混合系统等的仿真。其模块库包含了绝大部分系统所需的模块。并且在使用过程中会体会到其界面十分友好。

上文介绍了介绍无干扰单环PID、有干扰单环PID以及串级PID的简单仿真。

本文介绍模糊PID的简单仿真。

仿真的系统框图如图所示:

在这里插入图片描述
已经上传资源到CSDN了:使用MATLAB的simulink仿真模糊PID并与普通PID简单对比

一 说在前头

本人是小白,也是在不断尝试中,任何地方可能都会有错误,还请大家谅解,我只是跟大家分享自己的心得。

模糊PID原理和实现步骤(也是我参考的)可以参考以下blog:

模糊控制(五)模糊PID基本原理及matlab仿真实现(小白入门)
模糊PID算法及其MATLAB仿真(2)

如果有条件各位可以找一些论文来看。

二 Fuzzy模糊控制器的设计

2.1 新建

我用的是MATLAB的2018版本
步骤1 新建一个脚本
步骤2 在命令行输入fuzzy(我这边已经建立过了所以输入的是fuzzy+fuzzy文件名)
在这里插入图片描述

2.2 隶属函数设计

经过上一个步骤后得到以下界面:
在这里插入图片描述
从Edit->Add Variable中添加一个输入和两个输出,并按下图修改名称(输入:E/EC 输出:P/I/D)

在这里插入图片描述
双击黄色E的框,修改参数
在这里插入图片描述
先通过edit把论域数量改为7个然后执行以下操作:
步骤1 修改range为[-5 5]
步骤2 修改7个论域的名称
步骤3 修改NB和PB的Type为gaussmf
在这里插入图片描述
其他四个参数修改步骤同上:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3 规则设计

这一步规则设计每个人使用或者不同情况下使用的都不一样,我使用的是王三武的“基于MATLAB模糊自整定PID控制器的设计与仿真”文章的示例。
在这里插入图片描述
双击左下图的白色框得到右下图
在这里插入图片描述
按模糊规则表修改规则,需要49次,有点麻烦。
添加规则完之后保存fuzzy的.fis文件,就可以开始simulink仿真了。

三 simulink仿真设计

3.1 黄色部分

两个阶跃信号,其中一个是延迟10s的
在这里插入图片描述
黄色部分:两个阶跃信号,其中一个是延迟10s的,另一个是延迟1s,参数设定如下:在这里插入图片描述在这里插入图片描述

3.2 红色部分

普通PID框图,调参步骤和结果分析请看我另一篇blog。
PID的参数分别为10、 5、 2
系统传函为
在这里插入图片描述
仿真结果如下图:
在这里插入图片描述

3.3 蓝色部分

该部分是模糊PID整定部分
在这里插入图片描述
其中

3.3.1 橙色部分

橙色部分为模糊PID参数整定的输入量:E/EC,本来应该是直接输入的,我在这边添加了两个比例系数,原理是调节输入量的比例,因为通过调参我发现,模糊PID其实是在普通PID的基础上进行优化的,所以模糊PID计算出的参数是要用来修正普通PID参数的,那么这个修正量的大小其实也是影响着最终效果的,所以调参过程中需要调节这一部分。

3.3.2 绿色部分

绿色部分为模糊PID参数整定的输出量,通过框图我们可以看到,它们需要与E(误差)/E的微分/E的积分相乘,相乘之后再加上对应的普通PID参数值,最终才输出到系统。那么肯定也需要调节比例大小。

3.3.3 紫色部分

紫色部分的参数其实就是要提前使用普通PID调节参数后,将对应的已调好参数(10、5、2)复制过来,但是我这边做了微调把I的值下调至2。因为我认为模糊PID实际上就是优化普通PID,是通过模糊规则实现对PID参数的自镇定。

所以最终输入到系统函数的PID实际上是初始PID值(10、5、2)+模糊PID矫正值。

四 调参

由于我也是小白,为了避免误导大家,我就只给大家分享我调参的心得,仅供参考。
先将框图中除了紫色部分的比例框图的值都改为1,然后先调绿色部分,再调橙色部分,最后微调。其实跟普通PID的调参过程类似,大家自己体会吧,附上最后的仿真结果:在这里插入图片描述
蓝色线是预期/设定值,黄色为模糊PID结果,红色为普通PID结果,对比发现模糊PID如果调的好的话几乎没有超调,而在这个系统下使用普通PID,再怎么调都调不出没有超调量的情况,当然要分情况分析。我这里是选择了一个比较好调的系统函数,对于复杂函数,普通PID都很难调更别说模糊PID了,但是对于更简单的系统函数,普通和模糊PID都可以接近实现没有超调的情况。

本文仅供参考,可能有错误,还希望大家包含和指正。

  • 70
    点赞
  • 436
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 36
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 36
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ecalpal

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值