目录

一、前言

1.1 自动控制里,系统大致分两类

1)开环控制(Open-loop)

2)闭环控制(Closed-loop)

3)PID 的三部分含义

二、开环控制(只有计划,没有纠偏)

2.1 小明蒙眼走路:典型的开环

1)从控制角度看:

2)问题:

三、闭环控制

3.1 小明重见光明:闭环的引入

1)典型的闭环结构:

四、PID 控制器:闭环大脑的“标准算法”

4.1 标准 PID 数学形式

五、把 PID 放回小明故事里

5.1 比例 P:

5.2 积分 I

5.3 微分 D:

六、P / I / D 三者分工(图表)

七、总结


一、前言

开篇直指:从开环到闭环,为什么最后都走向 PID

1.1 自动控制里,架构大致分两类

1)开环控制(Open-loop)

只根据“事先算好的指令”去执行,不看结果。

开环控制示意图:

2)闭环控制(Closed-loop)

一边执行,一边“看结果、算偏差、再纠正”。

闭环控制示意图:

在几乎所有闭环控制系统中,只要是单输入单输出、目标是“跟着设定值走”,都会碰到一个经典算法:PID 控制

3)PID 的三部分含义

  • P(Proportional,比例):按误差大小“成比例”给控制量

  • I(Integral,积分)累计误差,消除长期偏差

  • D(Derivative,微分):看误差“变化趋势”,提前刹车、抑制过冲

PID控制示意图:

PID 的厉害之处在于:只靠这三个容易算子,就能把绝大多数工业对象调得“又快又准、还凑合稳”,而且建立简单,工程师可以靠经验就调出不错的效果,所以至今仍然是工业控制里的绝对主角。


二、开环控制(只有计划,没有纠偏)

2.1 小明蒙眼走路:典型的开环

小明被蒙上眼睛,需要从起点走到 10 米外的目标旗帜。
他的大脑先“算好”——比如自己每步 0.8 米,想走 10 米,大概要走 12~13 步。
然后他闭着眼,一口气走完这些步数。

1)从控制角度看:

  • Input(输入):目标距离 10 m

  • Controller(控制器):小明大脑——算步数 N

  • Process(被控对象):腿——执行 N 步

  • 没有 Feedback(反馈):中途不看自己走到哪了

2)问题:

  • 小明步长并不是每次都一样;

  • 地面可能有坡度、摩擦不同;

  • 中间可能踩偏了一点方向。

所以最后停下来的位置,很大概率不是 10 m 精准位置某个偏离目标的点就是,而

开环控制的特点:

  • 计算一次 → 执行到底 → 过程中不纠错

  • 优点:简单、快速、成本低

  • 缺点:完全不能自动纠偏,对干扰和模型误差非常敏感


三、闭环控制

看一眼结果再决定下一步

3.1 小明重见光明:闭环的引入

通过现在把小明眼罩摘掉,让他能够随时看到目标和自己所在的位置:

  1. 目标告诉他:“旗子在 10 米处” →给定值 r

  2. 小明走了一会儿,低头一看:“现在大概在 2 米位置” →当前输出 y

  3. 计算误差:

    e=r−y=10−2=8 me = r - y = 10 - 2 = 8\text{ m}e=r−y=10−2=8 m
  4. 大脑根据误差 e 再算下一段要走多少步 →控制量 u

  5. 再走一段 → 再看 → 再算误差 → 如此循环

1)典型的闭环结构:

  • 输入 r:目标位置

  • 输出 y:实际位置

  • 误差 e = r - y

  • 控制器 C:根据 e 计算控制量 u

  • 被控对象 G:腿+身体,接收控制量 u,产生新输出 y

  • 反馈:把 y 量出来(眼睛/传感器),送回去参与下一次计算

用一句话概括闭环:

“我知道我在哪儿、我要去哪儿,因此能不断调整自己。”


四、PID 控制器:闭环大脑的“标准算法”

4.1 标准 PID 数学形式

闭环里,控制器就是“把误差变成控制量”的算法
PID 的连续时间形式写成:

  • e(t)=r(t)−y(t):瞬时误差

  • u(t):控制器输出(给执行器的命令,比如电机电压、转矩指令等)

  • Kp​:比例增益

  • Ki:积分增益

  • Kd​:微分增益

控制器的块图可以画成:

误差 e(t) →【比例块 Kp】
→【积分块 Ki / s】
→【微分块 Kd · s】
三者相加 → 得到总控制量 u(t)


五、把 PID 放回小明故事里

还是那件事:小明要从 0 走到 10 m,设:

  • 目标 r = 10(固定)

  • 当前距离 y(t):小明实际走出去的位置

  • 误差 e(t) = r - y(t):还差多少没走到

5.1 比例 P:

误差大的时候冲刺,误差小了就慢下来

设小明用纯 P 控制:

通俗一点解释:

  • 刚起步时,误差 10 m 很大→ 误差 u 也很大 → 小明跑得比较快;

  • 当他走到 9 m 附近时,误差变成 1 m → u 变小 → 他会自动放慢脚步

优点:

  • 响应直观简单:偏差大就“踩油门”,偏差小就松一点

  • 响应快:稍微增大 Kp,小明就跑得更积极。

缺点:

  • 只用 P,一般会留下“稳态误差”:
    比如,走到 9.7 m 时,误差只有 0.3 m,产生的控制量可能不够大,小明“懒得再迈完整一步”,最后就停在 9.7 m 左右,不会精确到 10 m。

  • Kp​ 调太大,系统容易震荡甚至发散(小明来回跨大步,走过头再往回走)。

5.2 积分 I

不允许长期偏差,迟早要把账算清

积分项:

它干的事是:把误差随时间累加。哪怕误差很小,只要时间够久,积分值也会变大,最终产生足够的控制量,把误差“压到 0”。

在小明的比喻里:

  • 如果他一直停在 9.7 m,不往前挪,说明还有 0.3 m 的误差;

  • 积分项会一直累加这个 0.3 m;

  • 再迈一小步;就是累到一定程度,就相当于“大脑突然意识到:好像还有点距离没走够”,于

  • 这样就消除了 P 控制留下的稳态误差,让最终位置真的靠近 10 m。

优点:

  • 消除稳态误差:确保长时间后误差趋近于 0。

缺点(入门先感性认识):

  • 对误差累得太狠会超调:走过头再回来;

  • 出现所谓积分饱和:长期大误差时代码里积分累太大,即使后面误差变 0 或反号,积分项还会拖后腿,导致系统要很久才能拉回来。

5.3 微分 D:

提前刹车,抑制过冲

微分项:

代表误差变化的斜率。它关心的是:

“误差是在快速变小,还是变大?变化速度有多快?”

  • 当小明离目标还有一点点距离时,误差 e 哪怕不大,但下降得很快(走得很急),
    此时 de/dt <0,因此:

    PID 总输出:

  • 其中 uD​ 把总输出往下拉(相当于踩刹车)。

  • :在接近目标前,系统自动“减速”,从而就是结果就抑制过冲

直观理解:

  • P:看到“你离目标还差 3 m”,所以踩油门;

  • D:看到“你靠近目标的速度太快了”,所以告诉你“赶紧松油门甚至踩刹车”。

优点:

  • 抑制过冲,改善动态性能

  • 在变化剧烈的时候给出“刹车信号”。

缺点:

  • 噪声敏感:微分本质上是“高频放大器”,传感器有微小抖动时,D 项可能疯狂抖动,于是工程上一般不会给 Kd 调太大,还会加滤波。


六、P / I / D 三者分工(图表)

环节数学形式核心作用优点典型副作用
PKp * e误差越大,动作越大结构简单、响应速度快稳态误差难以消除,Kp 大会振荡
IKi * ∫edt对误差进行积累消除稳态误差易产生超调、振荡、积分饱和
DKd * de/dt看误差变化趋势抑制过冲,改善动态性能对噪声敏感,Kd 过大会抖动

配合一句好记的总结:

P 决定“敢不敢冲”,I 决定“冲到准不准”,D 决定“要不要刹车”。


七、总结

学习完本章,应该能够解决:

  • 画出基本闭环结构图

    能指出:参考输入 r、被控量 y、误差 e、控制器 C(s)、被控对象 G(s)、反馈环节。
  • 写出标准 PID 公式

    • 连续形式:

  • 用“小明走 10 m”的故事,口头讲清楚 P / I / D 如何影响运动过程

    • 只用通俗语言,也能讲清楚:

      • 只有 P:会快,但可能停在 9 m 或 9.5 m,收不回来。

      • 加了 I:能慢慢推到 10 m,误差被“算总账”消了掉。

      • 加了 D:快到 10 m 前提前减速,不会冲到 11 m 再回来。

  • 直觉上理解“参数调大/调小”会发生什么

    • Kp 太小:慢吞吞、软趴趴;Kp 太大:快但容易晃。

    • Ki 太小:残余误差消不干净;Ki 太大:超调、振荡更明显。

    • Kd 合适:曲线更平顺;Kd 过大:噪声放大,抖动明显。

本文参考:

简易PID算法的高效扫盲(超详细+过程推导+C语言程序) - 知乎