基于模糊控制器的PID控制器-MATLAB
2018-10-17 20:10阅读:
恩,好久没有更新博客了,最近,很忙!!!你信吗

,就是懒。
昨天逛论坛,有人分享了一个模糊PID模型,挺好玩的,但是跟帖的却炸了锅,说你的模糊PID控制效果还不如经典PID控制器啊,拜托,楼主能把模型分享出来已经很不错了好吧,不要苛求太多,自己学习呗。今天我琢磨了一下,自己也搭建了一个模型,然后分享出来,供大家交流学习。
论坛里的模型我就不分析了,毕竟,我没有看懂。首先要知道的是模糊控制器需要有工程师的经验,经验很重要,先搭建了两个经典PID的模型,如图所示。
第一组PI的参数是用PID tuning
tool自动算出来的,P=0.674768247627474,I=0.362566224374884;
第二组PI参数是我自己瞎写的,P=2,I=1;
仿真结果:

能看出来,还是PID tuning tool自己生成的PI参数比较好;
然后我搭建了一个基于模糊控制器的模型模型:

Subsustem里是这样的:

在MATLAB命令窗口敲入fuzzy

本博客设计的模糊PID输入量就一个,误差,输出量为Kp和Ki;
设计Kp的输出范围是0到3,Ki的输出范围是0到3,误差的输入范围是-2到2;

所有的曲线都设计成高斯正态分布曲线;
然后我简单的设计了一下模糊规则。

然后保存,把文件名命名为Fuzz;
添加到模型中去;
得到仿真结果;

将经典PI控制器的P和I都设计为3,仿真结果:

可见,使用模糊PI要比瞎蒙强一点,如果咱知道大致PI的范围,比如知道P和I的范围都在0到1之间,之间改变模糊控制器里的P和I输出范围,把P和I的输出范围都设计为0到1,控制规则不变。然后经典的Pi设计为0.5和0.5;
得到的结果是:

可以看出,使用模糊PI设计的超调量要小一点。
当然,如果咱们更为精确一点的范围,比如I的值在0到0.5之间,得到的模糊PI的结果是:

其实模糊PI说的就是,就是瞎蒙,咱得知道往哪蒙。知道了I值较小,那么改变一下控制规则:

然后我把阶跃函数的值改为20再看仿真结果:

效果还行,如果用原来的规则呢?

感觉差不多,实在有区别就得用放大镜了。
其实模糊PI的好处就在于你给一个大致的范围,再知道一定的参数变化,你想要的控制器输出是什么,知道范围就行,如果精心去调试PI也可以得到很好的效果,但是浪费时间,效果还不一定有模糊PI好。
今天就介绍到这。照常,我的QQ:1245693624