从不懂到会用!PID从理论到实践~_哔哩哔哩_bilibili
PID的适用性 一阶/二阶的线性系统
前馈系统只是对干扰做一个补偿
单闭环系统
双闭环控制系统
一个是还没发生干扰但我知道你会干扰进行反应,一个是看到你对我干扰后并发生后才进行反应
单P的控制会存在稳态误差
稳态误差一般用i项来弥补
当到达目标值后,由于ERROR为0,而P项为某比例乘以ERROR,因此P项的输出结果为0,失去作用;
但对于I项积分来说,误差为0后,它只是停止了误差的积累,仍然储存了在达到目标值之前误差的累计值,因此,I项可以在系统达到稳定和仍然给系统提供一个输出,以保证系统保持在稳定状态。如提供一个与重力等大反向的力,让飞行器停在空中。
当PI单独作用时,很容易出现超界的现象,因为一开始的误差特别大,P乘以误差的值很大,而初始误差很大导致初始阶段的积分累计误差也很大,PI的合并作用导致系统的输出过大,可能会从0上升到150,然后再震荡回100,但实际中超界并不是我们所期望的现象,所以要映入D微分项。
微分项:Kd乘以误差的变化率,
仅当PI项存在时,误差曲线见下图;当引入D项后,初始阶段的微分项对误差的消除起负贡献,因此提升了稳定性
调参思路:
1.系统应尽量避免超调,所以先给小的Kp,再逐渐给大,让稳态误差为一个相对小的值;
2.Ki先给小,再提高,使满足对系统响应时间的要求 (大部分实际中只用P和I,当震荡明显时才用D)
3.再给Kd,消除超调,Kd太大会严重影响系统的调节时间
其他注意事项:
1.积分限幅
举例:无人机要从地面上升停在空中100m的高度,但在空中存在一个外界干扰(人为的把无人机按住了,一直保持在地面),此时误差保持为一个恒定值,PD*ERROR输出为恒定值,但积分项随时间会不断地线性增大,一段时间后,当外界干扰去除时,无人机会以一个巨大的速度上升,导致控制紊乱,所以建议限制积分项的最大值。
2.积分分离
给积分项I一个阈值,只有当ERROR小于某一个值时,才让积分项起作用,避免积分项的累计过快,引起系统的超调
3.积分先行
设置PI项的输入为 期望值-输出值
而D项的输入为 输出值
这样可以消除当期望值产生突变时,对积分项的影响