积分饱和

改进初学者的PID-积分饱和

一世执手 提交于 2019-11-26 23:28:15
  最近看到了Brett Beauregard发表的有关PID的系列文章,感觉对于理解PID算法很有帮助,于是将系列文章翻译过来!在自我提高的过程中,也希望对同道中人有所帮助。作者Brett Beauregard的原文网址: http://brettbeauregard.com/blog/2011/04/improving-the-beginner’s-pid-reset-windup/ 1 、问题所在   积分饱和是一个陷阱,它可能比任何其他内容对初学者有更多的要求。当 PID 认为它可以做一些它做不到的事情时,就会发生这种情况。例如,Arduino 上的 PWM 输出接受0-255 之间的值。默认情况下,PID 不知道这一点。如果它认为300-400-500 会奏效,它将尝试那些期望得到它所需要的东西的值。由于在现实中,该值被限制在 255,它只会继续尝试越来越多的数字,而不会取得任何进展。   这个问题以奇怪的滞后的形式显现出来。上面我们可以看到,输出以 "非常兴奋" 的方式超出了外部限制。当设定值下降时,输出必须在低于255的限制线之前逐步减少。 2 、解决方案 – 步骤 1   有几种方法可以缓解积分饱和,但我选择的方法如下:告诉 PID 输出限制是什么。在下面的代码中,您将看到现在有一个 SetOuputLimits函数。一旦达到任一限制,pid 停止求和 (积分)