简介
PID 是 Proportional(比例)、Integral(积分)、Differential(微分)的缩写。PID 控制算法结合这三种环节,是连续系统中技术最为成熟、应用最为广泛的一种控制算法。该算法出现于 20 世纪 30 至 40 年代,适用于对被控对象模型了解不清楚的场合。实际经验和理论分析表明,运用这种控制规律对许多工业过程进行控制时,都能得到比较满意的效果。PID 控制的实质就是根据输入的偏差值,按照比例、积分、微分的函数关系进行运算,运算结果用以控制输出。
闭环控制
1. 开环控制
开环控制是指控制回路不形成环,即输出没有影响到输入的情况。输入只管输入,不依赖于输出。这种情况下,系统可能由于外界干扰导致输出与预期存在偏差,且无法自动调整。

2. 闭环控制
闭环控制是将输出量直接或间接反馈到输入端形成闭环、参与控制的控制方式。当输出出现偏差的时候,可以根据偏差来影响输入,进而调整下次输出的偏差,从而保持系统的稳定。

假定在时刻 T 有:
- 输入 [input(t)]
- 输出 [output(t)]
- 误差 [err(t) = input(t) - output(t)]
- PID 输出 [u(t)]
系统执行的是 PID 的输出值。系统的输出值回到输入的地方,与当前时刻的输入进行误差计算,进而影响系统的执行过程。像这种输出影响输入的,就属于闭环控制。
PID 算法的控制架构

PID 算法的控制架构主要分为三个部分,这三个部分的简单相加决定了 u(t)。接下来依次说明比例控制算法、积分控制算法、微分控制算法。
比例控制算法(P)
比例控制算法是 PID 算法中比较核心的部分,是整个 PID 中的主力。积分和微分控制算法主要用于消除误差,减少震荡。
假设将水倒入水缸中,目的水位为 1m(r(t)=1m)。
- 此时水缸为空,当前水位为 0m,误差 e(t) 为 1m。若只有比例控制,u(t) = Kp * e(t),假设 Kp 为 0.1,则 u(t) 为 0.1m,向水缸加入 0.1m 的水。
- 水缸中有 0.1m 的水,误差变为 0.9m,需加入 0.09m 的水。这是一个累加的过程,最终会将水缸倒满。
在理想状态下,比例控制算法可以满足要求。但如果水缸漏水(如每放入 0.05m 水,漏掉 0.05m),会导致水缸永远填不满,水位保持固定。这导致了稳态误差,即误差通过 PID 算法计算出来的 u(t) 完全没有起到作用。
在实际情况中,类似水缸漏水的情况往往更加常见,比如控制汽车运动时的摩擦阻力,或控制机械臂、无人机飞行时的各类阻力和消耗。
积分控制算法(I)
积分控制算法是为了消除稳态误差。积分是从 0 时刻一直积分到当前时刻 t,并对 e(t) 函数进行积分。
- 在到达目标位置之前,e(t) 始终是正的,积分始终大于 0。如果系统存在稳态误差,由于误差一直不变,但积分会一直增长,导致每次 u(t) 的输出也在一直增大,从而稳态误差被消除。最后误差为零,e(t) 也为 0,积分固定在某一值。
- 如果冲过了目标位置,误差变为负的,积分正负相减,同样可以适应这种情况。






