对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和数字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的介绍,有一种普遍看法是对于电机应该采用增量式PID,但实际对电机的控制应用(智能小车中)中用的PID算法其实都是位置式PID。对这两种方式一直没有深刻的体会,具体的差别还需在实际应用中体验吧。位置式PID基本能满足我们的大多数需求。

你可能感兴趣的:(PID)