STM32控制电机的PID基础
PID基础
参考:[野火EmbedFire]《电机应用开发实战指南—基于STM32》
1.两种形式的PID
1.1 全量式PID
PID的基础公式如下
u ( t ) = K P ( e ( t ) + 1 T t ∫ 0 t e ( t ) d t + T D d e ( t ) d t ) u(t) = K_P(e(t)+frac{1}{T_t}int_0^te(t)dt+T_Dfrac{de(t)}{dt}) u(t)=KP(e(t)+Tt1∫0te(t)dt+TDdtde(t))
我们需要将这个连续的方程化成离散的适合程序处理的形式,变形如下
u ( k ) = K p e r r ( k ) + K i ∑ e r r ( k ) + K d ( e r r ( k ) − e r r ( k − 1 ) ) u(k)=K_perr(k)+K_isum err(k)+K_d(err(k)-err(k-1)) u(k)=Kperr(k)+Ki∑err(k)+Kd(err(k)−err(k−1))
其中
k——采样信息的序号, err(k)——第k次误差 u(k)——输出量 K p K_p Kp——比例系数 K i K_i Ki——积分系数 K d K_d Kd——微分系数
这个形式的PID称为位置式PID或全量式PID,公式说明输出量与这一次与上一次的偏差值有关
1.2 增量式PID
PID还有另一种形式是增量式PID,即根据全量式PID计算 u ( k ) − u ( k − 1 ) u(k)-u(k-1) u(k)−u(k−1),得到下式
Δ ( u ) = K P ( e r r ( k ) − e r r ( k − 1 ) ) + K i e r r ( k ) + K d ( e r r ( k ) − 2 e r r ( k − 1 ) + e r r ( k − 2 ) ) Delta (u)=K_P(err(k)-err(k-1))+K_ierr(k)+K_d(err(k)-2err(k-1)+err(k-2)) Δ(u)=KP(err(k)−err(k−1))+Kierr(k)+Kd(err(k)−2err(k−1)+err(k−2))
该式说明增量式PID的输出与近三次偏差值有关,这个输出指的是相对于上一次的调节量,PID总的输出应该是上一次的输出加上调节量
u ( k ) = u ( k − 1 ) + Δ u ( k ) u(k)=u(k-1)+Delta u(k) u(k)=u(k−1)+Δu(k)
2.全量式PID和增量式PID的区别
- 增量式不需要积分,而全量式需要积分,积分容易产生累加误差
- 增量式算的是输出的差值,不会严重影响系统的工作,而全量式PID对系统的影响较大
- 增量式没有积分作用,适用于机构带积分作用的对象,如步进电机等,位置式适用于不带积分部件的对象,如电液伺服阀
- 位置式需要积分限幅和输出限幅,而增量式只需要输出限幅
全量式PID和增量式PID的优缺点
- 位置式PID
优点: 非递推,可直接控制执行机构,输出量 u ( k ) u(k) u(k)和机构的实际位置一一对应,在不带积分部件的机构中有很好的应用 缺点: 计算时要对偏差值进行累加,工作量大
- 增量式PID
优点: ①出错时对系统影响小,可以用逻辑判断去掉错误数据 ②不需要累加,在速度闭环控制中有很好的实时性 缺点: ①有稳态误差 ②溢出影响大,对有的对象效果不好
