计算机无法连续作用,只能在时间轴上离散打点。任何「读传感器 → 计算 → 写执行器」的固定周期循环,结构上就是一个采样控制系统——本文从软件工程师的原生视角讲清采样与保持、z 域描述、离散稳定域,以及采样周期这个最容易被忽视的设计变量。

循环即采样控制系统

反馈控制 Feedback 的连续理论假设误差与控制量随时间连续演化,而 CPU 的现实是:每 秒(一拍)醒来一次,读一组数、算一个结果、写出去。游戏帧循环、TCP 拥塞控制、Kubernetes autoscaler、空调温控,全是这个结构——被控对象在连续时间里演化,控制器只在采样时刻发力。

离散化带来三个必答问题,构成本文主线:

  • 采样点之间的信息去哪了——采样定理与混叠
  • 控制律如何描述——差分方程与 z 域
  • 回路性质如何改变——半拍延迟、稳定域迁移

采样与保持

采样把连续信号 变成序列 。Nyquist–Shannon 定理划出信息底线:采样频率 必须超过信号最高频率的两倍,否则发生混叠(aliasing)——高于 的分量折叠成低频假信号,控制器追着一个不存在的扰动跑。工程解法是在采样前加模拟抗混叠滤波器把带外成分压掉;信息一旦混叠,软件层面无法事后恢复。

零阶保持(Zero-Order Hold, ZOH)是 DAC 的默认行为:输出 在整个周期内保持不变,形成阶梯信号,等效传递函数

代价有二:高频段幅值按 sinc 包络衰减,且平均引入半拍相位滞后。纯延迟最伤稳定裕度——哪怕控制器与连续设计完全相同,采样本身就吃掉一份相位裕度,这是数字回路与连续回路的核心差异。

z 域:差分方程的代数

定义了 s 平面到 z 平面的映射, 对应「延迟一拍」:。差分方程就此变为代数方程,传递函数 Transfer Function 在 s 域的全套方法——方块图化简、闭环特征方程、零极点分析——原样平移到 z 域。对象离散化有两条正路:

  • ZOH 精确离散化:,单变量回路的标准做法
  • 矩阵指数法:状态空间表示 State-Space 的 离散为 ,多变量系统的标准做法

把连续设计好的控制器 搬进代码,同样要选离散化方法:

方法近似左半平面映到保稳定
前向差分圆心 、半径 的圆,可越出单位圆否
后向差分单位圆内偏心圆是(畸变大)
Tustin 双线性单位圆内是(频率翘曲)

前向差分能把稳定的连续极点映出单位圆——实现连续设计默认用 Tustin 不是风格偏好,是稳定性要求。

离散稳定域:单位圆

极点 映到 ,模长 ,于是 系统稳定性 Stability 的左半平面判据迁移为:闭环极点全部位于单位圆内。 对应临界位置(连续的 ),辐角对应每拍振荡角。Routh–Hurwitz 的离散对应是 Jury 判据,工程上更常见的是 Tustin 变换后沿用连续工具,或直接数值求极点。

一个结构性事实:稳定的连续系统经 ZOH 离散化后必然仍稳定(指数映射保域)。但闭环稳定性还取决于 ——采样太慢可以让连续视角下毫无风险的回路翻车:

import math
 
def simulate(T, K=2.0, r=1.0, steps=40):
    a = math.exp(-T)                 # 对象 1/(s+1) 的 ZOH 精确离散化
    y = 0.0
    for _ in range(steps):
        u = K * (r - y)              # P 控制:每拍算一次
        y = a * y + (1 - a) * u      # u 保持一整拍(ZOH)
    return y
 
for T in (0.05, 0.5, 1.0, 1.5):
    print(f"T={T:>4}: y={simulate(T): .4f}")
# T=0.05 / 0.5:收敛到 2/3(P 控制固有稳态误差)
# T=1.0:剧烈振荡后勉强收敛(超调约 90%)
# T=1.5:发散。闭环极点 z = 3e^{-T} - 2,临界 T = ln 3 ≈ 1.10
# 连续时间下该一阶回路对任意 K > 0 都稳定,失稳纯粹由采样太慢造成

采样周期的工程权衡

经验准则:( 为闭环带宽),等价地,闭环阶跃的上升时间内至少约 10 拍。两头都有代价:

方向收益代价
加快信息完整、ZOH 滞后小、连续设计近似成立算力与通信负载;差分增益 放大高频噪声;量化步长相对变大
放慢负载低、对传感器噪声天然钝感相位滞后累积、信息丢失、混叠,直至失稳

不是越快越好的免费参数,而是带宽、噪声、算力的三方折中——它在软件架构上对应的正是「循环频率」这一决策。

数字 PID 的实现要点

离散公式(位置式/增量式)与三项标准改进——微分先行、微分滤波、积分抗饱和——见 PID 控制,此处不重复。采样视角补充的是实时循环的架构约束:

  • 定拍执行:每拍恰好调用一次 update,由硬件定时器或 RTOS 周期任务驱动,不用 sleep 忙等——周期抖动(jitter)等效 的随机波动,直接污染微分项
  • 计算延迟:读入到写出的耗时是额外回路滞后;传感、计算、执行在同一拍内完成,算完立刻写执行器
  • 与滤波耦合:微分滤波时间常数接近 时微分项已名存实亡; 是噪声放大器, 越小越凶
  • 量化效应:ADC 位数与定点截断在慢回路里可能与测量噪声同量级,积分器的累加精度需要单独关注

采样视角看 AI

强化学习的 agent–environment 循环就是一个采样控制系统:决策频率即采样率。frame-skip / action repeat 是显式的 选择—— 太小则样本相关性高、credit assignment 模糊;太大则环境状态欠采样,信息被混叠掉。「循环频率本身就是设计变量」这一直觉,正是数字控制理论通往 控制理论与强化学习 Control and Reinforcement Learning 的接口。