3. s域与z域变换:从连续到离散的桥梁

做数字电源控制,绕不开一个核心问题:连续世界的控制器,怎么搬到数字芯片里?

模拟控制器用运放、电阻、电容搭电路,天然工作在连续时间域。但数字控制器不一样——它只在每个采样时刻算一次,中间的时间它「看不见」。这就引出了s域到z域的变换问题。

我个人习惯把这件事分成三步:先搞清楚拉普拉斯变换在干嘛,再理解z变换的本质,最后掌握几种映射方法。咱们一步步来。

3.1 拉普拉斯变换回顾

拉普拉斯变换,说白了就是把时域信号变成复频域信号。公式长这样:

F(s) = ∫₀^∞ f(t) · e^(-st) dt

其中 s = σ + jω。σ 控制衰减,ω 控制振荡。

为什么电源工程师要关心这个?因为控制环路的稳定性,在s域里看得最清楚。极点位置、零点位置、增益裕量、相位裕量——这些概念全建立在s域分析上。

关键记忆点:

  • s平面的左半平面 → 稳定系统(极点实部 < 0)
  • s平面的右半平面 → 不稳定系统(极点实部 > 0)
  • 虚轴上的极点 → 临界稳定(振荡)

我在做第一个数字电源项目时,犯过一个低级错误:模拟环路补偿器在s域设计得好好的,直接离散化后却振荡了。后来才明白——映射方法没选对。所以这块基础一定要打牢。

3.2 z变换基础

z变换是离散时间系统的「拉普拉斯变换」。定义式:

X(z) = Σ_{n=0}^∞ x[n] · z^(-n)

这里 z = e^(sT),T是采样周期。你看,z和s天然通过指数函数关联。

z变换有几个常用性质,做数字电源设计时经常用到:

性质 时域 z域
线性 a·x[n] + b·y[n] a·X(z) + b·Y(z)
时移(延迟) x[n-k] z^(-k)·X(z)
卷积 x[n] * y[n] X(z)·Y(z)
初值定理 x[0] lim_{z→∞} X(z)
终值定理 lim_{n→∞} x[n] lim_{z→1} (1-z^(-1))·X(z)

这里我想特别提一下终值定理。做数字电源时,我们经常用这个定理来验证稳态误差。比如,一个Buck变换器在负载跳变后,输出电压最终能不能回到设定值?用终值定理算一下就知道。

实用技巧:

z变换的延迟算子 z^(-1) 对应数字控制器里的「一拍延迟」。你在写代码时,z^(-1) 就是一个移位寄存器。理解这个对应关系,写数字滤波器代码会顺手很多。

3.3 从连续域到离散域的映射方法

好,现在到了最核心的部分。s域的传递函数 H(s),怎么变成z域的 H(z)?

常用的映射方法有四种。我按推荐程度排个序:

3.3.1 双线性变换(Tustin变换)

这是我最推荐的方法。公式:

s = (2/T) · (1 - z^(-1)) / (1 + z^(-1))

为什么推荐它?因为它把s平面的整个左半平面映射到z平面的单位圆内。这意味着:模拟域稳定的系统,离散化后一定稳定。没有歧义。

我在项目中用过很多次双线性变换。有一次设计一个48V转12V的DC-DC,开关频率200kHz,采样频率也是200kHz(单周期控制)。用双线性变换离散化后,环路响应和模拟仿真几乎完全吻合。

注意:

双线性变换会引入频率翘曲(frequency warping)。高频段的频率响应会被压缩。如果你的补偿器零点在接近奈奎斯特频率的位置,需要做预翘曲校正(pre-warping)。

3.3.2 前向欧拉法

公式:

s = (1 - z^(-1)) / T

这个方法简单,但有个大坑:稳定的模拟系统,离散化后可能不稳定。s平面的稳定区域映射到z平面是一个偏移的圆,不是整个单位圆。

我曾经在一个学生项目里用过前向欧拉法,结果环路在轻载时振荡。查了半天才发现是映射方法的问题。后来换成双线性变换,问题立刻解决。

3.3.3 后向欧拉法

公式:

s = (1 - z^(-1)) / (T · z^(-1))

这个方法比前向欧拉法稳定一些,但精度不如双线性变换。我一般只在采样频率远高于系统带宽时用它。

3.3.4 零极点匹配法

这个方法比较直观:把s域的零极点直接映射到z域。

z = e^(sT)

每个极点 p_s 映射到 z = e^(p_s · T)。零点也一样。然后调整增益使低频响应匹配。

这个方法在谐振控制器(PR控制器)的离散化中特别有用。因为PR控制器在特定频率有谐振极点,用零极点匹配法能精确保持谐振频率。

3.4 四种映射方法对比

方法 稳定性 精度 计算量 推荐场景
双线性变换 ★★★★★ ★★★★☆ ★★★☆☆ 通用,最推荐
前向欧拉 ★★☆☆☆ ★★★☆☆ ★★★★★ 不推荐,除非采样率极高
后向欧拉 ★★★★☆ ★★★☆☆ ★★★★★ 低精度快速原型
零极点匹配 ★★★★★ ★★★★★ ★★☆☆☆ 谐振控制器、精确频率控制

3.5 知识体系总览

下面这张图把本章的核心逻辑串起来了。你想想看,从连续域的微分方程,到s域的传递函数,再到z域的差分方程——每一步都有明确的数学工具和物理意义。

s域与z域变换知识体系 时域微分方程 d²v/dt² + ... 拉普拉斯变换 s域传递函数 H(s) = ... z变换 z域传递函数 H(z) = ... 四种映射方法:从 H(s) 到 H(z) 双线性变换 s = (2/T)·(1-z⁻¹)/(1+z⁻¹) 前向欧拉 s = (1-z⁻¹)/T 后向欧拉 s = (1-z⁻¹)/(T·z⁻¹) 零极点匹配 z = e^(sT) 数字控制器差分方程 y[n] = b₀·x[n] + b₁·x[n-1] + ... - a₁·y[n-1] - ... 核心原则:选择映射方法时,优先保证稳定性,其次追求精度,最后考虑计算量

3.6 实际设计中的选择建议

说了这么多理论,最后给点实际建议。你设计数字电源时,怎么选映射方法?

  1. 默认选双线性变换。90%的场景它都够用,而且稳定可靠。
  2. 如果补偿器有谐振极点(比如PR控制器、LLC谐振变换器),用零极点匹配法。它能精确保持谐振频率。
  3. 如果采样频率远高于控制带宽(比如10倍以上),后向欧拉法也能用,计算量小。
  4. 前向欧拉法——我个人建议你直接忘掉它。除非你非常清楚自己在做什么。

一个小技巧:

做完离散化后,一定要做一步验证:把H(z)的频率响应画出来,和H(s)的频率响应叠在一起看。如果低频段(DC到1/10采样频率)的增益和相位匹配良好,那这个离散化就是成功的。我每次设计完都会做这个检查,能提前发现很多问题。