read e;
e_dot = e - e_old; // 当前误差之差
E = E + e; // 累计误差
// 这里的KI和KD参数包含了 *和/ (t_dot)
// 在如下式子可清晰看出,控制量就是,当前偏差(线性)+累计偏差(积分)+偏差变化率(微分)
u = KP * e + KI * E + KD * e_dot;
e_old = e;
控制系统:汽车达到给定速度R.
x为实际水面高度。
e = R - x
第一种最简单的策略:
u = Ke
u可以理解为油门开度
方案的缺陷:
如下图所示:该系统永远存在一个跟速度成正比的速度漏洞,这就是所谓的稳态误差,当达到匀速行驶的时候,当前速度与我们想要的给定速度,永远差一小节。
最后时刻,通过微小的偏差e产生的加速度,正好和风的逆行推力抵消。所以永远跟不上给定值。
也就是所谓的稳态误差。
![](https://img.haomeiwen.com/i574261/188b0d212e2b4cb2.png)
第二种方案:加入一个跟着累计误差成正比的积分I项
累计偏差正常情况都会产生超调,知道上下波动调节,使得积分项正好补上逆行推力。
所以加入积分项产生震荡是很正常的。
最后的微分项
其实就是加入了当前的偏差,配合快速到稳态。 同样因为微分项只看当前偏差,所以他对扰动异常敏感。在加入微分项的时候需要谨慎!!!
网友评论