本人刚开始学习如何用模糊PID去控制温度,了解很多资料做了些简单的实验,对模糊PID有了一些个人的认识与看法,特意写在这里,如果理解正确就能帮助其他网友,如果错误理解希望网页指正。实验平台就一个加热棒,热电偶,加热棒通过固态继电器控制。
首先模糊PID控制温度,应该是分成两部分,第一部分就是PID 控制,第二部部分才是模糊控制算法去修改PID 参数,
那么我们先谈第一部分就是PID 控制。PID控制简单,算法也简单,应该是难在找到合适的3个参数。PID的简绍网上和参数的整定网上很多,这里就不简绍了。对应新手来说最有疑问的就是PID的输出如果对应到PWM的值上面,下面说一下我的理解。
在使用PID的时候我们首先要确定的一个参数就是,温差(SV-PV)在多少范围内才引入PID控制,在这个范围外都是全功率的(PWM = 100%)加热(不谈降温)如果在这个范围内引入PID控制,修改PWM 的占空比控制温度,这个时候可以获取一个参数 K = 100(占空比)/(SV-PV)这个参数可以用来作为 PID的输出与实际PWM的值的一个比例。有了这个参数就可以直接用常规的PID来控制温度,使用过程中要注意积分饱和。
第二部分就是模糊PID控制,关于模糊PID的原理与实现可以参考PID控制器开发笔记之十二:模糊PID控制器的实现_pid控制 模糊控制-CSDN博客
文章里面少了一个LinearRealization() 按照个人理解实现了一下,代码里面见
主要说明一下里面的几个参数,
vPID->maximum
vPID->minimum
是误差的最大值与最小值,个人理解其实就是前面引入PID的控制时误差值。
vPID->maxdKp; /*Kp增量的最大限值*/
vPID->mindKp; /*Kp增量的最小限值*/
是希望KP的范围,模糊PID输出的值也是一个模糊化的值,对应在论域范围内,我们可以通过反模糊化输出实际的值(LinearRealization),就需要这个最大最小值。其他的参数一样需要反模糊化
代码地址:PID_FUZZY: 模糊PID 控制
PID_FUZZY: 模糊PID 控制https://gitee.com/luoshiping/pid_-fuzzy.git
上面是我个人理解,理解有限,望网页更正