一.闭环控制系统
所谓闭环就是一个环,结果有反馈到输入端然后再调节,最终达成期望值。
如同软件有Bug,测试给结果,然后再改一样,最终完成量产软件。
二.PID算法
为什么会引入上述闭环系统,因为ID就是是一种结合比例P、积分I和微分D,三个环节于一体的闭环控制算法.
1.比例环节
1.1 比例公式
u = Kp * e
- u:输出
- Kp:比例系数
- e:偏差(不是实际值,而是实际值和期望值得差值)
当 Kp 的值越大时,橙色曲线达到目标值的时间就越短,与此同时,橙色曲线出现了一定幅度的超调和振荡,这使系统稳定性下降,
因此,我们在设置比例系数的时候,并不是越大越好,而是要兼顾消除偏差的时间以及整个系统的稳定性。
1.2 静态误差
静态误差是指系统控制过程趋于稳定时,目标值与实测值之间的偏差
比如,光使用比例环节,假设现在需要调节棚内温度为 30℃,而实际温度为 25℃,此时偏差 e=5,Kp 为固定值,如果此时的输出可以让大棚在半个小时之内升温 5℃,而外部的温差可以让大棚在半个小时之内降温 5℃,换言之,输出 u 的作用刚好被外部影响抵消了,这就使得偏差会一直存在。
那么如何消除静态偏差,这就需要引入积分环节
2. 积分环节
2.1 积分公式
u= Ki * Σe
Σe为偏差 e 得积分就是求和,但是需要注意e可正可负,所以Σe不一定越来越大,但是有误差则Σe会不断起作用从而产生超调
2.2 比例+积分公式
u= Kp * e + Ki * Σe
设置积分系数Ki的时候,并不是越大越好,而是要兼顾消除静态误差的时间以及整个系统的稳定性
只要系统还存在偏差,积分环节就会不断地累计偏差。当系统偏差为0 的时候,说明已经达到目标值,此时的累计偏差不再变化,但是积分环节依旧在发挥作用(此时往往作用最大),这就很容易产生超调的现象了
怎么解决积分环节带来得超调就要引入微分环节,提前削弱输出,抑制超调
3. 微分环节
3.1 比例+积分+微分公式
微分环节主要是减少超调,克服震荡。
一般是越调误差越小,所以ek<ek-1,则Kd(ek-ek-1)是负数,从而减小Uk值来减少超调
- 比例系数Kp:调节作用快,系统一出现偏
差,调节器立即将偏差放大输出。- 积分系数Ki:积分系数的调节会改变输入偏差对于系统输出的影响程度。积分系数越大,消除静差的时间越短,但是过大的积分系数则会导致系统出现超调现象,这在具有惯性的系统中尤为明显。
- 微分系数Kd:微分系数的调节是偏差变化量对于系统输出的影响程度。微分系数越大,
系统对于偏差量的变化越敏感,越能提前响应,进而抑制超调,但是过大的微分系数则会让整个系统出现振荡。
三.PID位置式和增量式
1. 位置式
位置式又叫全量式,就是误差e全部参与计算了,它得每次输出都和过去得所有状态有关
2. 增量式
增量式就是全量式推出来得,𝑢𝑘 -𝑢𝑘−1
▲Uk是一个差值
可以看出改公式只和近三次误差有关系
3. 全量和增量式差异
- 位置式:
优点:位置式 PID 是一种非递推式算法,带有积分作用,适用于不带积分部件的对象。
缺点:全量计算,计算错误影响很大;需要对偏差进行累加,运算量大。 - 增量式:
优点:只输出增量,计算错误影响小;不需要累计偏差,运算量少,实时性相对较好。
缺点:积分截断效应大,有稳态误差。
4. 积分饱和问题
在位置式 PID 中,如果系统长时间无法达到目标值,累计偏差(积分)就会变得很大,
此时系统的响应就很慢了。
假设某个电机能达到的最大速度为 300RPM,而我们设置了目标速度为 350RPM,这明显是一个不合理的目标值,根据编码器测速始终到不了350rpm,则积分环节的的值越来越大。
为了避免位置式 PID 中可能出现的积分饱和问题,可采取以下措施:
① 优化 PID 曲线,系统越快达到目标值,累计的偏差就越小;
② 限制目标值调节范围,规避可以预见的偏差;(知道最高300rpm,就不要设置超过300)
③ 进行积分限幅,在调整好 PID 系数之后,根据实际系统来选择限幅范围。