PID 原理入门:从开环到闭环,搞懂比例、积分、微分控制
PID 是控制系统中最经典的算法之一,但初学者往往容易被比例、积分、微分的概念绕晕。本文从最基础的角度出发,用“P 看现在,I 看过去,D 看未来”的方式,通俗解释 PID 的核心思想,并结合稳态误差、超调和振荡等现象,帮助读者理解三项参数在系统调节中的作用。本文只讲入门原理,不涉及代码和更复杂的控制结构,适合作为 PID 学习的基础文章。
简介:本人自动化专业在读,自行学习江协系列视频,近期需要用到PID。学习完PID对应视频后,与大家分享一些总结和经验,同时也为了博主方便日后的复习。欢迎大家一起讨论!如果有错误请各位大佬指出。
前言
PID 是控制系统中最经典、最常用的一类控制算法。很多初学者第一次接触 PID 时,容易被比例、积分、微分这些概念绕晕,感觉公式很多、名词很杂,不知道它到底在解决什么问题。
其实,PID 的核心思想并不复杂。它本质上是在做一件事:
根据目标值和实际值之间的误差,不断调整控制输出,让系统尽快、尽稳、尽准地逼近目标。
本文只讲 PID 的基本原理,不写代码,不展开串级控制,适合作为入门理解和教学整理。
为了更容易理解,本文会用一个非常直观的比喻来贯穿全文:
-
P 看现在
-
I 看过去
-
D 看未来
你会发现,PID 其实没那么神秘,它只是把“现在偏了多少”“过去积了多少”“未来会不会冲过头”这三件事结合起来,做出一个更合理的控制决策。
1.PID是什么?
PID 是 Proportional(比例)、Integral(积分)、Differential(微分) 的缩写。
它是一种典型的闭环控制算法。所谓闭环,简单来说就是:控制器在输出控制量的同时,还会持续获取被控对象的反馈值,然后根据 目标值(Target)和 实际值(Actual)的误差(Error)不断修正输出(Out),最终让系统尽可能快、尽可能稳地逼近目标值。
PID 的核心思想可以概括为一句话:
有偏差就修正,而且不是盲目修正,而是根据误差的大小、积累和变化趋势来修正。
比如说,我们想让一个电机转到某个速度:
-
目标速度:1000 rpm
-
实际速度:800 rpm
那么此时误差就是:
error = target - actual = 1000 - 800 = 200
控制器看到误差后,就知道“现在还差 200”,于是会增加输出,让电机继续往目标靠近。
但问题来了:
-
只看当前误差够不够?
-
如果误差已经持续很久了怎么办?
-
如果速度上升太快,马上就要冲过头了怎么办?
这三个问题,正好对应 PID 的三部分:
-
P:根据现在的误差立刻修正
-
I:根据过去累计的误差继续补偿
-
D:根据误差变化趋势提前刹车
所以你可以把 PID 理解成一个很会“判断局势”的控制器:
-
看现在,决定推多大力
-
看过去,决定要不要补一把
-
看未来,决定要不要提前收一点
2.开环控制与闭环控制
在真正讲 PID 之前,先把“开环”和“闭环”分清楚,因为 PID 本质上属于闭环控制
2.1 开环控制
开环控制就是:只发命令,不看结果。

比如给电机一个固定 PWM,占空比发出去了,但不去采集速度反馈,这就是开环。
你可以把它理解成:
我只负责下达指令,至于你最后执行成什么样,我不管。
例如:
-
给小车电机固定输出 50% 占空比
-
给加热器固定输出某个功率
-
给风扇固定一个电压
这类控制方式结构简单,实现容易,但有个明显问题:
它不知道系统最终有没有达到目标。
比如同样是给电机 50% PWM:
-
空载时转得很快
-
带负载时转得很慢
-
电池电压变了,速度也会变
-
摩擦变化了,结果也会变
也就是说,同一个输入,不一定得到同一个输出结果。
| 开环控制的优点 | 开环控制的缺点 |
| 结构简单 | 抗干扰能力弱 |
| 成本低 | 无法自动修正误差 |
| 实现方便 | 精度低 |
| 对计算资源要求低 | 环境一变化,结果就容易偏掉 |
2.2 闭环控制
闭环控制则不同。闭环控制会把系统的实际输出重新测回来,与目标值进行比较,然后根据误差继续修正输出。

也就是说,它不是只下命令,而是会不断问一句:
“我现在到底做到没有?”
如果没做到,就继续调;如果快过头了,就收一点;如果已经到了,就尽量稳定住。
所以闭环控制系统通常具有更好的:
-
准确性
-
稳定性
-
抗干扰能力
-
自适应修正能力
PID 正是闭环控制中最经典的一种算法。
3. PID 的基本公式与系统框图
基本公式:

这个公式虽然看起来有点长,但本质上就是三部分相加:
-
比例项 P (Kp比例系数)
-
积分项 I (Ki积分系数)
-
微分项 D (Kd微分系数)
很多实际场景里,更常用的理解方式不是死记公式,而是记住这句话:
PID 的输出 = 现在怎么调 + 过去补多少 + 未来刹多早
也就是:
-
P 决定当前反应有多猛
-
I 决定长期偏差能不能消掉
-
D 决定系统会不会冲过头
3.1 系统框图怎么理解?
一个典型的 PID 控制闭环,大致可以这样理解:
-
先给系统一个目标值
-
传感器测到当前的实际值
-
目标值减去实际值,得到误差
-
PID 根据误差计算出一个输出值
-
输出作用到被控对象
-
被控对象状态发生变化
-
再次测量,重复上述过程
这就是一个持续循环修正的过程。
你会发现,PID 并不是“一次算完就结束”,而是:
边看边调,边调边看,不断把系统往目标拉。
4. 用“过去、现在、未来”理解 PID
很多人学 PID,最大的问题不是不会背公式,而是不知道三项到底在干什么。
假设你在开车,目标是把车停在停车线前面。
-
现在离停车线还多远? —— 这是 P
-
过去是不是一直没停准,总是差一点? —— 这是 I
-
照现在这个冲法,会不会马上冲过线? —— 这是 D
所以 PID 其实像一个很有经验的司机:
-
看现在差多少,先踩油门或刹车
-
看过去一直差着,就多补一点
-
看趋势快冲过头了,就提前收力
这就是 PID 的直觉本质。
5. 比例项 P:只看“现在”的误差
比例项是 PID 中最直观、最好理解的一项。
它的表达式是:
意思就是:
误差越大,输出越大;误差越小,输出越小。
比如现在误差是 10:
-
如果 Kp=0.1,那么比例输出就是 1
-
如果 Kp=1,那么比例输出就是 10
很明显,Kp 决定了系统修正误差时的“手劲”有多大
5.1 比例项的作用
比例项的作用是:快速响应误差,让系统尽快向目标逼近。
如果现在离目标很远,比例项就会给出比较大的调节力度;
如果已经快接近目标了,比例项就会自动减小力度。
所以比例项最大的特点就是:
反应快,动作直接。
5.2 Kp 调大后会发生什么?
如下图所示:
红色线条表示电机目标速度,紫色线条是电机实际速度。
系统到最后可能会停在离目标值还有一点偏差的位置,而不是完全重合。

Kp 增大后,比例项权重变大,通常会带来以下现象:
| 正面效果 | 负面效果 |
| 系统响应更快 | 超调增加 |
| 上升时间缩短 | 振荡趋势增强 |
| 更有力地朝目标逼近 | 系统更容易不稳定 |
| 稳态误差通常会减小 | 过大时可能来回摆动 |
也就是说,Kp 并不是越大越好。可以把 Kp 理解成“推力系数”:
-
推力太小,系统慢吞吞
-
推力太大,系统容易冲过头(超调),甚至产生自激振荡
5.3 纯比例控制为什么会有稳态误差?
但纯比例控制通常会有一个问题:稳态误差。
这是一条非常重要的结论,也是很多初学者最容易忽略的地方。
纯比例控制时,如果误差变成 0,那么比例项输出也会变成 0:

但现实中的被控对象往往并不会在输入为 0 时就稳定不动。
很多系统在没有驱动力时,会因为摩擦、负载、惯性、重力、偏置等因素,自动向某个方向偏移。
于是就会出现这样的情况:
-
如果误差完全为 0,控制器输出也为 0
-
输出为 0 时,被控对象又会自己偏掉
-
一旦偏掉,误差又出现
-
比例项再输出一个平衡这种偏移的力
最终,系统会停在一个:
“误差不为 0,但输出刚好足够抵消对象偏移”的位置。
这个残余误差,就是稳态误差。
问:那为什么驱动力和外力平衡时,稳态误差存在,系统不会自动增大输出吗?
纯比例控制的输出只等于当前误差乘以比例系数。当这个输出刚好和摩擦力、负载力平衡时,系统就会停在一个仍有误差的位置。由于纯比例控制没有历史累积能力,它不会因为误差持续存在就继续增大 PWM,这就是稳态误差产生的原因。只有加入积分项后,系统才会因为误差长期存在而继续增加输出,最终把误差进一步消除。
6. 积分项 I:它看的是“过去积累了多少误差”
如果说比例项只看现在,那么积分项就是在看历史。
它的核心思想很简单:
如果系统长期都有误差,那就不能只看当前这一点点误差,而要把过去累积的误差也算进去。
积分项的表达式可以理解为:

意思是:
-
把过去每一时刻的误差都累加起来
-
误差持续存在得越久,积分项越大
-
然后再乘上一个系数 Ki,形成积分输出
6.1 积分项到底在解决什么问题?
积分项最核心的作用就是:
消除稳态误差。
前面说过,纯比例控制可能停在“离目标还差一点”的地方。
为什么会这样?因为误差小了以后,比例输出也小了,推不动了。
那积分项的做法是:
只要这个误差一直存在,我就一直记着,一直累计,直到累计出足够大的补偿量为止。
也就是说,哪怕当前误差已经不大了,只要它持续存在,积分项就不会放过它。
这就像一个很“记仇”的人:
-
你偶尔差一点,算了
-
但你一直差一点,那就不行
-
差一天我记一天,差十天我记十天
-
记到最后,总要把这点偏差补回来
所以积分项是专门用来处理“总差一点”的。
6.2 用生活化的方式理解积分
继续用停车的例子。
假设你停车时总是离停车线差 10 厘米,而且每次都这样。
如果只有比例项,可能每次接近了就收力,最后总停在差 10 厘米的地方。
但如果加入积分项,控制器会想:
“你不是这一次差 10 厘米,你是一直都差 10 厘米。这个误差不能就这么算了。”
于是积分项会把这 10 厘米不断累计,最终形成额外补偿,让你继续往前微调,直到真正停准。
所以积分项看的不是“你现在差多少”,而是:
“你过去到底欠了多少账。”
6.3 Ki 调大后会发生什么?
一般来说,Ki 增大后,会有这些现象:
| 正面效果 | 负面效果 |
|---|---|
| 消除稳态误差更快 | 系统更容易超调 |
| 长期偏差能被更快补偿 | 响应更容易变慢、变拖 |
| 最终精度提高 | 积分过强会导致振荡 |
也就是说,积分不是越强越好。
因为它有一个典型副作用:
滞后。
积分项是靠“累积”起作用的,它不像比例项那样立刻反应,而是需要时间一点点攒起来。
这就意味着:
-
它消除静态误差很有用
-
但如果积得太多,也容易让系统“收不住”

所以积分项很像“后劲”:
-
该有,但不能过猛
-
有了它,系统能更准
-
太多了,系统容易拖泥带水,甚至过冲
6.4含有比例项和积分项的PID输出值

积分项用于弥补纯比例项产生的稳态误差,若系统持续产生误差,则积分项会不断累积误差,直到控制器产生动作,让稳态误差消失

Ki越大,积分项权重越大,稳态误差消失越快,但系统滞后性也会随之增加
改变Kp和Ki参数,不同的现象:
图中对比表明:Kp 提高响应速度,Ki 消除静差;参数合适时波形平稳,参数过大时则容易产生超调与振荡。

7. 微分项 D:它盯的是“未来的趋势”
前面两项:
-
P 看现在
-
I 看过去
那 D 看什么?
D 看的是:
误差正在怎么变化。
虽然微分项并不能真的预测未来,但它通过观察误差变化的快慢,能提前判断系统接下来可能发生什么。
这就是为什么很多人会说:
微分项像是在“预测未来”。
它的表达式可以理解为:

也就是看误差变化的斜率。
-
如果误差变化很快,微分项反应就强
-
如果误差变化很慢,微分项反应就弱
-
如果误差基本不变,微分项几乎不起作用
7.1 微分项的本质作用是什么?
微分项最核心的作用是:
抑制误差的剧烈变化,给系统增加阻尼,减少超调和振荡。
比如系统正在快速逼近目标。
虽然这时候误差在减小,看上去是好事,但如果减得太快,就说明系统可能由于惯性马上冲过头。
微分项一看趋势不对,就会提前给出一个“反方向的制动作用”。

斜率一定程度上反映了误差未来的变化趋势,这使得微分项具有 “预测未来,提前调控”的特性
微分项给系统增加阻尼,可以有效防止系统超调,尤其是惯性比较大的系统
所以它的特点是:
不是等冲过头了再救,而是在快冲过头之前先拦一下。
7.2 用开车来理解 D 项
还是用停车线举例。
你开车接近停车线时:
-
如果离得很远,应该踩点油门
-
如果已经很近了,但车速还很快,你就会提前刹车
这个“提前刹车”的动作,其实就很像微分项。
因为你不是只看“现在还差多少”,而是在看:
照现在这个冲法,下一秒会不会直接冲过头?
这就是 D 项的意义。
所以可以把它理解为:
-
P 是推你去追目标
-
I 是补你长期欠下的误差
-
D 是防你冲得太猛
7.3 Kd 调大后会发生什么?
通常来说,Kd 增大后,系统会出现这些特点:
| 正面效果 | 负面效果 |
|---|---|
| 抑制超调 | 对噪声更敏感 |
| 减少振荡 | 过大时动作发硬、卡顿 |
| 增加稳定性 | 响应可能变慢 |
| 提前制动 | 容易放大测量波动 |
所以微分项常被称为“阻尼项”。
它像汽车减震器,不是负责把你推到前面,而是负责让整个过程不要太颠、太冲、太飘。
但它有一个问题:
微分特别敏感。
因为它关注的是“变化率”,而噪声本身往往就是快速变化的,所以微分项很容易把噪声也当成真实变化,导致输出抖动。
这也是为什么很多实际系统里,D 项用得比较谨慎。
8. 三项合起来,PID 到底是怎么工作的?
现在把三项放在一起看,就很清楚了。
当系统偏离目标时:
-
P 会立刻根据当前误差给出修正,负责“先动起来”
-
I 会盯住长期存在的误差,负责“最后补到位”
-
D 会关注误差变化趋势,负责“别冲过头”
所以 PID 的整体行为可以总结成一句非常形象的话:
P 负责冲,I 负责补,D 负责稳。
或者换成“过去、现在、未来”的说法:
PID 就是一个同时参考现在、过去和未来趋势的控制器。
-
现在差多少? —— 比例项马上出手
-
过去一直差着吗? —— 积分项慢慢补偿
-
未来会不会冲过头? —— 微分项提前制动
这三者结合起来,系统就比只用一种判断方式更聪明得多。
总结
PID 不是一堆公式的堆砌,而是一种很符合直觉的控制思想:
“用比例处理当前,用积分修正过去,用微分预判未来。”
它的目标始终只有一个——让系统更快、更稳、更准地到达目标。
更多推荐



所有评论(0)