解决对PID理解的困惑

一、认识PID

在刚学习PID的时候,会猛然接触到很多概念,如连续PID,离散PID、模拟PID、数字PID、增量式PID和位置式PID等概念,让人感觉到PID很复杂,但其实本质上PID的公式就只有一个,其他只是为了不同场合应用的变式,其本质还是一样的。

原始PID公式:
u ( t ) = K P ( e ( t ) + 1 T I ∫ e ( t ) d t + T D d e ( t ) d t ) u(t)=K_P(e(t)+\frac{1}{T_I}\int{e(t)}dt+\frac{T_Dd_{e(t)}}{dt}) u(t)=KP(e(t)+TI1e(t)dt+dtTDde(t))
将PID参数对比到时间进程上:
P 代表现在(乘上比例因子)
I 代表过去(对过去的累加)
D 代表未来(通过变化率预测未来的趋势)

二、模拟PID和数字PID

模拟PID公式:
u ( t ) = K P e ( t ) + K I ∫ e ( t ) d t + K D d e ( t ) d t u(t) = K_Pe(t) + K_I\int{e(t)}dt + K_D\frac{d_{e(t)}}{dt} u(t)=KPe(t)+KIe(t)dt+KDdtde(t)
数字PID公式:
u ( k ) = K P e ( k ) + K I ∑ i = 0 k e ( k ) + K D ( e ( k ) − e ( k − 1 ) ) u(k)=K_Pe(k)+K_I\sum_{i=0}^{k}e(k)+K_D(e(k)-e(k-1)) u(k)=KPe(k)+KIi=0ke(k)+KD(e(k)e(k1))
可以用微积分的知识来理解上面两个公式:模拟PID公式类似于求曲边梯形的面积问题,而数字PID便是将曲边梯形的面积划分为很多段矩形的面积来求和。这样看来数字PID公式便是对模拟PID的离散化。

模拟PID公式只是在理想条件下的公式,在实际应用中我们只能采用数字PID公式进行计算。虽然有些PID的代码实践看似是根据模拟PID公式而来,但其实也是数字PID的应用,只不过dt用来表示时间间隔罢了。

对比上面的公式发现:模拟PID涉及到了时间,而数字PID中不涉及时间?

其实数字PID中也是包含时间的,我们平时在应用PID时都是以固定的时间间隔来计算,因此可以在化简的过程中将时间常数算进积分系数和微分系数中。

三、增量式PID和位置式PID

单纯从公式上来理解:增量式PID就是两次位置PID计算的差值
u ( k ) = K P e ( k ) + K I ∑ i = 0 k e ( k ) + K D ( e ( k ) − e ( k − 1 ) ) u_{(k)}=K_Pe_{(k)}+K_I\sum_{i=0}^{k}e_{(k)}+K_D(e_{(k)}-e_{(k-1)}) u(k)=KPe(k)+KIi=0ke(k)+KD(e(k)e(k1))
u ( k − 1 ) = K P e ( k − 1 ) + K I ∑ i = 0 k − 1 e ( k − 1 ) + K D ( e ( k − 1 ) − e ( k − 2 ) ) u_{(k-1)}=K_Pe_{(k-1)}+K_I\sum_{i=0}^{k-1}e_{(k-1)}+K_D(e_{(k-1)}-e_{(k-2)}) u(k1)=KPe(k1)+KIi=0k1e(k1)+KD(e(k1)e(k2))
Δ u ( k ) = K P ( e ( k ) − e ( k − 1 ) ) + K I e ( k ) + K D ( e ( k ) − 2 e ( k − 1 ) + e k − 2 ) Δu_{(k)}=K_P(e_{(k)}-e_{(k-1)})+K_Ie_{(k)}+K_D(e_{(k)}-2e_{(k-1)}+e_{k-2}) Δu(k)=KP(e(k)e(k1))+KIe(k)+KD(e(k)2e(k1)+ek2)
从公式看:增量式PID计算上只需要知道近三次的偏差,可以减弱过去对现在的影响。每次只计算当前相对于之前的增量,一定程度上可以避免错误数据导致输出产生过大的波动。
在理想条件下,增量式PID和位置式PID最终实现的效果应该是一致的。但在现实条件下,还是各自有适用的场景,基本上位置PID可以满足绝大多数的需求。
位置PID适合于对没有积分效应的执行器件进行控制而增量PID更适合于对有积分效应的执行器件进行控制。
这里一定要清楚这里说的带积分效应的执行期间中的“积分”和PID控制中的“积分”不是一个概念!!!

  • 对舵机进行控制:舵机输入多少占空比就转到多少角度,不具备积分特性。(这里在进行PID控制时仍可以有积分项I,实际需不需要根据实际情况决定。)
  • 对步进电机进行位置控制:步进电机在无输入时会保持当前的状态,每输入多少脉冲就会运动多少步,因此只需计算下一时刻的增量即可达到目标位置。
  • 对直流有刷电机进行速度控制:采用位置式PID和增量式PID基本可以达到一致的效果。
    由此可以看来:位置PID和增量PID没有本质的区别,到底选用哪种方式更多的取决于控制对象是否有积分效应。

四、举例—直流电机的调速控制

  • 单电机速度闭环:
    通过编码器计算轮子速度作为测量值,下发的速度作为设定值通过PI控制进行闭环

  • 单电机位置闭环:
    通过编码器计算轮子的位置作为测量值,下发的距离作为设定值。

  • 速度+位置双闭环:
    位置作为内环,速度作为外环进行双闭环控制

五、抗积分饱和

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值