之前一直知道PID控制算法,但是一直不清楚他的工作原理。今天,浅浅学了一下。
这篇博客主要讲的时P、I、D代表的是什么。PID
倘若我们想使热水器一直稳定在45摄氏度,那我们可以这样实现。当当前温度低于45时,我们进行加热,高于45时,不加热。乍一看,似乎没有问题,也可以实现我们的目标。但是我们仔细想一下,如果我们一下加热太猛,那么水可能一下到了60°C;这时候立马就要执行停止加热,让他冷孤额。首先不说能量的消耗,单是这样猛地一进一退就让人产生一种不舒服的感觉。这种情况如果放在无人机、小车上,很可能会导致失控。这时候,往往会有人说“每次加热少加热一点不就好了”。是的,理想情况下这样是可以的。但是不要忘了,水是会自然冷却的。倘若我们一次加热的温度还不如水自然冷却多,那我们永远也到不了我们想要的温度。在热水器上,这种自然冷却是可以大概计算的,但是放在无人机、小车上,这种“自然冷却”是不可预知的。所以我们需要一种算法来达到我们的目标。这就是PID。
知道了PID代表的是什么,我们才可以深入PID。
PID控制算法最常用的有位置式算法,增量式算法,微分先行。
位置式算法
找了很多篇博客,终于找到了一篇通俗易懂的讲解位置式算法的博客。看了这篇博客,我只能叹服,将PID讲解成如此程度的博主,此人只应天上有。位置式控制
位置式控制涉及到当前误差,上一次误差和之前的所有误差。e(k)表示当前误差,同理e(k-1)表示上次误差,e(n)表示从开始到现在的误差累加和。P在我看来是让我们最快达到我们设定的目标值附近,即我们设置目标50°C,P可以很快的让温度到达48°C、45°C等等;P越大,所花费的时间也就越少。I可以抵消“自然冷却”,使温度逐渐到达50°C;D是在温度超出时,可以使温度回到设定值;当然在还未达到设定值时,D也可以让我们加快到达设定值。我们可以把D形象地看成弹簧,你强他弱,你弱他强,他的目的就是让我们停在设定值。
该公式得出的u(k)最终要和当前输出相加,才是最终的输出结果。
增量式算法
在对位置式算法有了一点了解之后,我们也可以更轻松地了解增量式算法。
增量式算法涉及到当前误差、上一次误差、上上次误差。其余的和位置式算法理解上没什么太大区别。
公式图来源于
还有一种微分先行算法,严格来说它并不和位置、增量同级。因为微分先行是包括位置、增量的。他是在位置式、增量式的基础上进行修改的一种方式。学习的话可以参考这篇博客。微分先行
文末,挂上一个口诀吧。
来源于PID调试口诀
参数整定找最佳, 从小到大顺序查。
先是比例后积分, 最后再把微分加。
曲线振荡很频繁, 比例度盘要放大。
曲线漂浮绕大弯, 比例度盘往小扳。
曲线偏离回复慢, 积分时间往下降。
曲线波动周期长, 积分时间再加长。
曲线振荡频率快, 先把微分降下来。
动差大来波动慢, 微分时间应加长。
理想曲线两个波, 前高后低四比一。
一看二调多分析, 调节质量不会低。