新浪博客

基于模糊控制器的PID控制器-MATLAB

2018-10-17 20:10阅读:
恩,好久没有更新博客了,最近,很忙!!!你信吗 基于模糊控制器的PID控制器-MATLAB 基于模糊控制器的PID控制器-MATLAB 基于模糊控制器的PID控制器-MATLAB,就是懒。 昨天逛论坛,有人分享了一个模糊PID模型,挺好玩的,但是跟帖的却炸了锅,说你的模糊PID控制效果还不如经典PID控制器啊,拜托,楼主能把模型分享出来已经很不错了好吧,不要苛求太多,自己学习呗。今天我琢磨了一下,自己也搭建了一个模型,然后分享出来,供大家交流学习。
论坛里的模型我就不分析了,毕竟,我没有看懂。首先要知道的是模糊控制器需要有工程师的经验,经验很重要,先搭建了两个经典PID的模型,如图所示。
基于模糊控制器的PID控制器-MATLAB

第一组PI的参数是用PID tuning tool自动算出来的,P=0.674768247627474,I=0.362566224374884;
第二组PI参数是我自己瞎写的,P=2,I=1;
仿真结果:
基于模糊控制器的PID控制器-MATLAB
基于模糊控制器的PID控制器-MATLAB
能看出来,还是PID tuning tool自己生成的PI参数比较好;
然后我搭建了一个基于模糊控制器的模型模型:
基于模糊控制器的PID控制器-MATLAB
Subsustem里是这样的:
基于模糊控制器的PID控制器-MATLAB
在MATLAB命令窗口敲入fuzzy
基于模糊控制器的PID控制器-MATLAB
本博客设计的模糊PID输入量就一个,误差,输出量为Kp和Ki;
设计Kp的输出范围是0到3,Ki的输出范围是0到3,误差的输入范围是-2到2;
基于模糊控制器的PID控制器-MATLAB
基于模糊控制器的PID控制器-MATLAB
基于模糊控制器的PID控制器-MATLAB
所有的曲线都设计成高斯正态分布曲线;
然后我简单的设计了一下模糊规则。
基于模糊控制器的PID控制器-MATLAB
然后保存,把文件名命名为Fuzz;
添加到模型中去;
得到仿真结果;
基于模糊控制器的PID控制器-MATLAB
将经典PI控制器的P和I都设计为3,仿真结果:
基于模糊控制器的PID控制器-MATLAB
可见,使用模糊PI要比瞎蒙强一点,如果咱知道大致PI的范围,比如知道P和I的范围都在0到1之间,之间改变模糊控制器里的P和I输出范围,把P和I的输出范围都设计为0到1,控制规则不变。然后经典的Pi设计为0.5和0.5;
得到的结果是:
基于模糊控制器的PID控制器-MATLAB
基于模糊控制器的PID控制器-MATLAB
可以看出,使用模糊PI设计的超调量要小一点。
当然,如果咱们更为精确一点的范围,比如I的值在0到0.5之间,得到的模糊PI的结果是:
基于模糊控制器的PID控制器-MATLAB
其实模糊PI说的就是,就是瞎蒙,咱得知道往哪蒙。知道了I值较小,那么改变一下控制规则:
基于模糊控制器的PID控制器-MATLAB
然后我把阶跃函数的值改为20再看仿真结果:
基于模糊控制器的PID控制器-MATLAB
效果还行,如果用原来的规则呢?
基于模糊控制器的PID控制器-MATLAB
感觉差不多,实在有区别就得用放大镜了。
其实模糊PI的好处就在于你给一个大致的范围,再知道一定的参数变化,你想要的控制器输出是什么,知道范围就行,如果精心去调试PI也可以得到很好的效果,但是浪费时间,效果还不一定有模糊PI好。
今天就介绍到这。照常,我的QQ:1245693624

我的更多文章

下载客户端阅读体验更佳

APP专享