上一篇我们先搭起了闭环控制系统的骨架:目标、比较、控制器、执行器、被控对象与反馈。
但当控制器真的对一个对象发出指令时,新的问题就来了:为什么同样给一个输入,有些系统几乎立刻响应,有些却要慢慢变化;为什么输入停止后,输出还会继续变化?
写在前面
刚开始学控制时,很容易把系统想得过于直接:给电机加大一点电压,它就应该马上更快;给房间开大一点加热器,温度就应该立刻升高。
可一旦真正接触实物,就会发现事情没这么简单。
电机转速不会瞬间跳到目标值;房间温度也不会因为刚打开加热器就马上变化;水箱进水以后,液位还会持续上升一段时间。它们都像是"记住了"之前发生过什么。
这并不是系统真的拥有意识,而是因为很多真实对象都在不断储存和释放某种东西:质量、能量、电荷、热量,或者动量。
控制理论里,我们把这类"现在不仅取决于此刻输入,还受过去影响"的对象,叫作动态系统。
本文我们聚焦:系统的动态过程,究竟从哪里来;而所谓系统的"记忆",又到底在记什么。
一、同样一个输入,为什么系统的反应会不一样?
先看两个简单场景。
第一个场景,是给一个理想电阻两端加电压。电压变化后,电流几乎同步变化。此刻的输出主要由此刻的输入决定,过去曾经加过多大电压,对现在基本没有影响。
第二个场景,是往水箱里持续注水。进水流量变大以后,液位不会瞬间跳到某个高度,而是慢慢上升。即使你现在停止进水,水箱里已经积累的水也不会凭空消失。
这两者最大的区别在于:
- 理想电阻几乎不储存能量;
- 水箱会储存水;
- 房间会储存热量;
- 电机转子会储存动量;
- 电容会储存电荷;
- 弹簧会储存弹性势能。
只要系统内部存在"存起来"的东西,过去的输入就会以某种形式留在系统里,并继续影响之后的输出。

所以,静态系统可以粗略理解为:
此刻输入是什么,此刻输出就主要是什么。
而动态系统则更接近:
此刻输出不仅和当前输入有关,也和系统此前经历过什么有关。
这就是"系统有记忆"的第一层含义。
二、系统的"记忆",本质上是内部状态没有立刻消失
把"记忆"换成控制理论里的语言,其实就是:系统存在内部状态。
以房间恒温为例。
你刚打开加热器时,电能不会直接变成一个"24℃"的结果。热量会先被空气、墙壁、家具吸收,房间内部的热状态逐渐变化,最后才表现为温度计读数的上升。
于是,当前室温除了和"现在加热器功率多大"有关,还和下面这些事情有关:
- 之前已经加热了多久;
- 房间原本有多冷;
- 墙壁和家具已经吸收了多少热量;
- 窗户是否打开、外界温度是多少。
这些正在系统内部延续的影响,就是状态。
同样的道理也能放到电机上:
- 当前电压,是电机现在收到的输入;
- 当前转速,是我们关心的输出;
- 转子已经积累起来的动量、电流建立起来的磁场等,则属于系统内部状态的一部分。
所以即使你把输入电压调回原来的值,电机也不会马上停回原来的转速。它还带着之前积累的动量,继续"往前走一段"。
系统记住的不是一串历史数据,而是过去作用留下的、仍在影响未来的内部状态。

如果用最少的符号表达:
- 输入记作 u(t)u(t)u(t);
- 输出记作 y(t)y(t)y(t);
- 内部状态记作 x(t)x(t)x(t)。
静态系统里,我们常常只需要关心 u(t)u(t)u(t) 和 y(t)y(t)y(t) 的对应关系。
但动态系统里,控制器还必须理解:当前状态 x(t)x(t)x(t) 是什么,它会怎样继续演化。
三、有惯性、有积累,系统才会慢慢变化
在日常表达里,我们常把这种现象叫作"反应慢""有惯性"。虽然不同对象的物理原因不同,但它们的表现很相似:不会随着输入的变化立刻跳到最终结果。
几个典型例子:
- 水箱液位:水需要持续流入,液位才会逐渐升高;
- 房间温度:热量需要不断积累,空气与墙壁才会慢慢变暖;
- 电机转速:转子有惯量,需要时间才能被加速;
- 弹簧---质量块系统:外力改变后,质量块会先运动,甚至可能来回摆动;
- 电容电压:电荷需要逐渐积累,电压才会建立起来。
这也是为什么控制系统不能只问"输入有没有变",还要问:
- 输出开始变化得有多快?
- 达到目标附近要多久?
- 输入停止后,系统会不会继续往前冲?
- 外界扰动来了以后,系统要花多久才能恢复?
这些问题说的都是同一件事:系统在时间维度上的行为。
四、别把"有记忆"和"有时延"混为一谈
动态系统里,经常还会遇到另一个词:时延。
它和"记忆"有关,但不是一回事。
假设你打开房间加热器后,温度几乎马上开始缓慢上升。这说明系统有热惯性,也就是有状态、有记忆;但它未必存在明显的纯时延。
而如果温度计装在离加热器很远的房间角落,可能会出现这样的情况:加热器已经工作了一会儿,温度计却还没有任何变化;过了一段时间后,读数才开始上升。
这段"已经施加输入、输出却暂时没有反应"的时间,更接近时延。
可以先用一个很朴素的方式区分:
- 惯性:系统已经开始变化,只是变化得不快;
- 时延:系统暂时看起来完全没有反应;
- 记忆/状态:过去的作用仍然在影响现在和未来。
后面分析稳定性时会看到,惯性和时延都很重要。因为控制器一旦对"已经过时的信息"反应过猛,就可能出现来回修正,甚至越调越抖。
五、认识一个动态系统,常常从"突然给它一下输入"开始
工程上想了解一个对象的动态特性,经常会做一件很简单的事:给它一个突然变化的输入,然后观察输出怎么走。
例如,把加热器功率从较低值突然调高;或者让电机的目标电压突然增加一个台阶。这样的输入常被称为阶跃输入。
接下来观察输出曲线,我们通常会看到几个现象:
- 输出不会瞬间到达最终值;
- 它可能先慢后快,也可能先快后慢;
- 有些系统会在目标附近来回摆动;
- 最终可能稳定下来,也可能持续偏离目标。
这条"输入改变后,输出随时间怎样变化"的曲线,叫作系统的响应过程。

从控制角度看,这张图特别重要。
因为控制器真正面对的,从来不是一个"按一下就立刻到位"的对象,而是一个带惯性、可能有时延、会持续演化的动态过程。
六、为什么理解动态过程,是设计控制器的前提?
上一节里,我们知道闭环控制的基本逻辑是:
目标---偏差---修正。
但现在还要补上一层理解:
系统不是收到修正就立刻完成修正,它会按照自己的动态规律变化。
如果不了解对象的动态特性,就很容易出现两种极端:
- 控制得太保守:系统虽然稳定,但响应慢得像"没反应";
- 控制得太激进:对象还没来得及响应,控制器已经连续加码,最后反而造成振荡。
比如给房间升温时,如果温控器只看到"温度还没到目标",就不断加大功率,却忽略墙壁和空气正在持续吸热,那么等温度计终于反映出来时,房间可能已经积累了过多热量,结果直接超过目标温度。
这不是控制器"不会算",而是它没有正确面对对象的动态过程。
所以,后面无论讲 PID、状态反馈还是最优控制,都会反复回到这里:
- 对象有多快;
- 对象有多慢;
- 对象会不会滞后;
- 对象内部积累了什么;
- 当前动作会在多久以后显现出真正后果。
控制的难点,从来不只是"给出一个动作",而是在变化尚未完全显现之前,预判这个动作会把系统带向哪里。
七、把这一节放回整个专栏里看
这一节讲的是控制理论里很基础、也很容易被忽略的一件事:时间。
上一节我们建立了反馈回路,知道系统会比较目标与现实,再根据偏差修正自己。
这一节进一步说明:反馈面对的对象不是静止的。它有惯性、有积累、有内部状态,也可能有时延。过去的输入并不会立刻失效,而是会通过系统状态继续影响未来。
这条理解往后会不断出现:
- 到 PID 时,积分项本身也会"记住"过去的误差;
- 到状态空间方法时,会用状态变量描述系统当前的内部情况;
- 到嵌入式控制时,采样周期和计算时延会直接改变系统动态;
- 到机器学习时,时序模型同样需要从历史信息中理解当前状态;
- 到智能体时,"观察---思考---行动---再观察"依然是一条跨时间展开的动态过程。
技术名词会不断变化,但"过去如何影响未来"这件事始终不会变。
In the end:下一节该看什么?
现在我们已经知道,真实系统往往有惯性和记忆:输入改变以后,输出会经历一个动态过程,而不是瞬间到位。
为什么有些系统受到扰动后,能慢慢回到目标附近;有些系统却越调越抖,甚至不断发散?
要解开这个问题,我们需要回到控制理论最核心的底层逻辑 ------ 负反馈。
下一节就来深入拆解:负反馈的本质:系统如何用误差不断修正自己