你看到的是过去
前八章我们一直在改控制器。这一章反过来:控制器一个字都不改,Kp 钉死在 4,只动一根滑杆——你多久之后才看得见结果。从 0 秒拉到 6 秒,同一个控制器会从「一次也不越线」变成「永远停不下来」。
那台设备(K = 1,惯性 τ = 10 秒),纯比例控制,Kp 固定为 4。没有延迟时它表现完美:单调爬升,一次也不越线,7.8 秒安静下来。
现在给它加上延迟。延迟 2 秒,也就是惯性的五分之一——听起来很小。
如果你选了 A 或 B,下面这张表会让你重新排一次序。
控制器一个字都没改
请先确认这件事:下面这张表里,Kp 从头到尾都是 4。没有换算法,没有加微分,没有滤波。改的只有一件事——那个动作生效之前有多长时间「什么都不发生」。
| 延迟 L | 能用的最大增益 Ku | Kp=4 用掉了 | 晃的幅度 | 安静下来要 |
|---|---|---|---|---|
| 0 s | ∞ | 0% | 0.0% | 7.8 s |
| 0.5 s | 32.056 | 12% | 0.0% | 6.5 s |
| 1.0 s | 16.351 | 24% | 0.7% | 4.3 s |
| 2.0 s | 8.502 | 47% | 30.3% | 16.6 s |
| 3.0 s | 5.890 | 68% | 62.3% | 44.8 s |
| 4.0 s | 4.587 | 87% | 90.7% | 177.3 s |
| 6.0 s | 3.289 | 122% | 停不下来 | 永远 |
几件事同时值得注意。
第一行的 ∞ 不是笔误。没有延迟时,这台一级惯性设备的可用增益真的没有上限——第 4 章已经证过了。所以「Kp = 4 会不会太大」这个问题,在 L = 0 时根本不成立。
延迟一出现,这个上限立刻变成有限的,而且下降得很快。0.5 秒 → 32;1 秒 → 16.4;2 秒 → 8.5;4 秒 → 4.6。你会注意到每次延迟翻倍,上限差不多对半砍——这正是第 1 章那个洗澡水龙头里出现过的规律,第 11 章会把它变成一条能验算的等式。
第三列是这张表真正的主角。Kp 一直是 4,但它「占用了多少预算」在飞快上升:12% → 24% → 47% → 68% → 87% → 122%。不是你的力气变大了,是预算变小了。越过 100% 的那一刻,系统就再也回不来了。
延迟不是「让事情变慢」,延迟是在收走你的力气预算。
每个反馈环都有一个「最多能用多大增益」的上限。没有延迟(也没有多级惯性)时,这个上限是无穷大——你想用多少力气都行。而延迟每翻一倍,这个上限就大约减半。
所以「延迟」这件事的正确读法不是「我要多等几秒」,而是:「我被没收了多少力气。」而力气就是精度、就是速度、就是抗扰动能力(第 5 章那三条全部由回路增益决定)。延迟收走的是这一切。
「安静下来」那一列的 U 形
最后一列有个容易被忽略的现象:它先变快,再变慢。
0 秒时 7.8 秒安静,0.5 秒时 6.5 秒,1 秒时 4.3 秒——比没有延迟还快。然后才开始恶化:2 秒时 16.6,4 秒时 177.3,6 秒时永远。
为什么加了延迟反而更快?因为「安静下来」的定义是进入终值 ±2% 并不再出来。没有延迟时曲线是单调爬升的指数,它要爬很久才进入那条窄带;有一点延迟时曲线开始有轻微的振荡成分,反而更快地冲进了那条带子里。
这不是延迟的功劳,是指标的口径造成的。它是一个很好的提醒:
任何一个单一指标都可以被优化到骗人。只看「调节时间」,你会得出「延迟 1 秒比不延迟更好」这种荒唐结论。要看清一个环的状态,至少要同时看:冲过头多少、多久安静、离失稳还有多远。
第 14 章会给出「离失稳还有多远」的两把标准尺子;第 24 章的自查表会把这几项一起摆出来。
惯性和延迟,代价差多少
第 3 章说过它们是「两种不同的毒」。现在可以把这句话量化了。
比较这两台设备,它们的「从动手到基本到位」都是大约 12 秒:
可用增益上限 Ku Kp=4 时的表现 ──────────────────────────────────────────────────────── τ = 12 秒,L = 0(纯惯性) ∞ 不越线,单调 τ = 10 秒,L = 2 秒 8.502 冲过头 30.3% # 同样「大约 12 秒到位」,一个给你无限的力气预算, # 另一个只给你 8.5,而你已经花掉了近一半。 ★ 惯性花你的是时间,延迟花你的是力气。 时间可以等,力气不能凭空变出来。
这也解释了一个常见的现场经验:把一个慢的传感器换成快的,往往比调一整天参数管用。因为前者是在把预算加回来,后者只是在有限的预算里重新分配。
那么延迟到底是怎么收走力气的?它凭什么能做到这件事?
答案在下一章,而且是这本书里最漂亮的一个转折:延迟会把「晚」变成「反」。一个迟到的信号,在某些频率上会和原信号精确地反相——此刻你以为自己在做负反馈,实际上你在做正反馈。而正反馈是会自我放大的。
这就是那个上限的来历:你能用的力气,恰好是「在反相的那个频率上,环路增益不超过 1」所允许的力气。超过 1,误差绕一圈回来变大了,于是下一圈更大,于是永远停不下来。
你的监控看板。一分钟粒度 + 五分钟告警窗口 = 这个环至少 5 分钟的延迟。按上面那张表的规律,这个环能承受的「纠偏力度」比一个秒级反馈的环小一到两个数量级。这就是为什么「人看着告警手动扩容」总是过量:人的动作力度是按秒级反馈的直觉来的,而这个环的预算是分钟级的。
代码评审到合并的时间。如果一个改动从提交到有人看要两天,那这个团队的质量反馈环延迟是两天。此时任何「加强代码规范」的强力动作(增大增益)都会引起震荡:一阵子管得极严,一阵子又全放开。有效的做法是缩短延迟——把评审拆小、加自动检查、pre-commit hook。同一个动作,在短延迟的环里是良药,在长延迟的环里是毒药。
疫情期间的防控政策。感染到确诊到统计上报,延迟以周计;而政策生效到感染数变化,又是一到两周。这是一个总延迟三四周的环,而它面对的是一个倍增时间只有几天的对象。结构上就注定了要么反应不足、要么过度反应——这不是决策者水平问题,是这个环的算术。
这个直觉的问题在于它用加法的眼光看延迟:「12 秒和 10 秒差不多」。而延迟在闭环里的作用是乘法性的——它决定的是一个比值(你用了预算的百分之几),不是一个绝对量。
工业界有一条流传很广的经验,可以作为对照:
L/τ < 0.1:延迟基本可忽略,PID 好调,可以整定得很紧。0.1 < L/τ < 0.5:延迟已经是主要约束,整定必须留余量。我们这台设备(0.2)就在这一档。L/τ > 1:延迟主导。此时换控制器算法收益很小,该做的是缩短延迟,或者上专门对付延迟的结构(Smith 预估器,第 18 章会提到)。
第 24 章的自查表第一项就是算这个比值——它决定了你接下来该做什么,比任何参数都更早需要知道。
D冲过头 30.3%,而且要 16.6 秒才安静下来——比没有延迟时(7.8 秒)慢了一倍多。而 Kp 一个字都没改。
更值得记住的是那个背景数字:这台设备的可用增益上限从 ∞ 掉到了 8.502,而你用的 4 已经占了 47%。你没有变得更激进,是安全区变小了。
A 「2 秒相对 10 秒微不足道」——这是拿延迟和惯性做加法比较。它们不在一个账本上:惯性花时间,延迟花力气预算,而力气预算是不可再生的。 B 「慢一点,仍然不越线」——「不越线」这件事在 L = 0 时是结构保证的(一阶闭环单调)。而只要加上延迟,闭环就不再是一阶的了——严格说,带纯延迟的系统有无穷多个特征根(第 11 章会真的把它们找出来)。结构一变,那个保证就没了。 C 「冲过头百分之几」——方向对了,量级差一个数量级。这个偏差很典型:人对延迟后果的直觉普遍是线性的,而真实关系里,冲过头的幅度随 L 的增长要快得多(0.7% → 30.3% → 62.3% → 90.7% → 发散)。这一章的一句话
延迟不让你等,它让你穷——它收走的是你能用的力气,而力气就是精度、速度和抗扰动能力的全部来源。
下一章解释这件事的机制,而这是全书最不舒服的一个结论:你设计的负反馈,会在某个频率上精确地变成正反馈。那个频率不神秘,它就是周期恰好等于两倍延迟的那个——在那里,迟到的信号和原信号的相关系数是 −1.0000,一分不差。