3. 脉冲传递函数:定义、推导方法、开环与闭环系统

好,咱们今天聊聊脉冲传递函数。这东西说白了,就是离散系统的“灵魂”。你想想看,连续系统里我们用拉普拉斯变换,到了离散域,就得用Z变换。脉冲传递函数,就是系统在Z域里的输入输出关系。

我个人习惯把脉冲传递函数理解成“采样系统的心脏”。没有它,你根本没法分析系统的稳定性,更别提性能了。我记得刚入行那会儿,有个老工程师跟我说:“小伙子,搞懂脉冲传递函数,采样系统你就通了八成。”当时不信,后来吃了不少亏才明白——这话一点不假。

3.1 脉冲传递函数的定义

先给个严谨的定义:脉冲传递函数,是指在零初始条件下,系统输出信号的Z变换与输入信号的Z变换之比。

用数学式子表达就是:

G(z) = Y(z) / R(z)

其中:

  • Y(z) — 输出信号的Z变换
  • R(z) — 输入信号的Z变换
  • 初始条件全部为零

这里有个关键点要注意:脉冲传递函数只适用于线性时不变离散系统。如果你遇到非线性或者时变系统,这套理论就不灵了。嗯,这个坑我踩过。

核心要点:脉冲传递函数描述的是系统在采样时刻的输入输出关系。它只关心采样点上的值,采样点之间的行为它不管。这一点和连续传递函数有本质区别。

3.2 推导方法

推导脉冲传递函数,说白了就两条路:一条是从差分方程出发,另一条是从连续系统的离散化入手。我分别说说。

3.2.1 从差分方程推导

假设系统由以下差分方程描述:

y(k) + a₁y(k-1) + ... + aₙy(k-n) = b₀r(k) + b₁r(k-1) + ... + bₘr(k-m)

两边同时取Z变换(零初始条件):

Y(z) + a₁z⁻¹Y(z) + ... + aₙz⁻ⁿY(z) = b₀R(z) + b₁z⁻¹R(z) + ... + bₘz⁻ᵐR(z)

整理一下:

Y(z)[1 + a₁z⁻¹ + ... + aₙz⁻ⁿ] = R(z)[b₀ + b₁z⁻¹ + ... + bₘz⁻ᵐ]

所以:

G(z) = Y(z)/R(z) = (b₀ + b₁z⁻¹ + ... + bₘz⁻ᵐ) / (1 + a₁z⁻¹ + ... + aₙz⁻ⁿ)

你看,其实就是把差分方程里的延迟算子换成z⁻¹,然后做个除法。简单吧?

3.2.2 从连续系统离散化推导

实际工程中,我们经常遇到“连续对象 + 采样器 + 保持器”的结构。这时候怎么求脉冲传递函数?

我建议你记住这个套路:

  1. 先写出连续对象的传递函数 G(s)
  2. 考虑零阶保持器 H(s) = (1 - e⁻ᵀˢ)/s
  3. 求广义对象的脉冲传递函数:G(z) = Z{H(s)G(s)}

具体计算时,可以查Z变换表,也可以用部分分式展开法。我个人习惯用部分分式,因为不容易出错。

小技巧:如果你用MATLAB,直接调用 c2d(Gs, Ts, 'zoh') 就能得到离散化结果。但建议你至少手动推导一两次,理解背后的原理。我曾经带过一个实习生,只会用函数不会推导,结果换了采样周期就懵了。

3.3 开环脉冲传递函数

开环系统,就是没有反馈的系统。它的脉冲传递函数就是各个环节串联后的总传递函数。

这里有个容易搞混的地方:连续系统串联时,总传递函数是各环节传递函数的乘积。但离散系统不一样!

为什么?因为采样器的存在。你想想看,两个连续环节中间如果有采样器,信号就被离散化了。这时候总传递函数就是 G₁(z)G₂(z)。但如果中间没有采样器,那就得先求连续乘积,再离散化:Z{G₁(s)G₂(s)}

我画个图帮你理解:

R(z) G₁(z) G₂(z) Y(z) G(z) = G₁(z) · G₂(z) R(z) G₁(s) G₂(s) Y(z) G(z) = Z{G₁(s) · G₂(s)} 上:有采样器隔开 → 直接相乘 下:无采样器隔开 → 先乘连续函数再离散化

⚠️ 注意:千万不要把两种情况搞混!我曾经在一个项目中,因为忽略了两个连续环节之间的采样器,直接把传递函数相乘了,结果仿真结果和实际系统对不上。查了整整两天才找到问题。

3.4 闭环脉冲传递函数

闭环系统,就是有反馈的系统。它的脉冲传递函数推导起来稍微复杂一点,但核心思想就四个字:信号流图

典型的单位反馈闭环系统结构如下:

R(z) → [⊕] → [G(z)] → Y(z)
        ↑          |
        └──[H(z)]──┘

从信号流图可以写出:

E(z) = R(z) - H(z)Y(z)
Y(z) = G(z)E(z)

联立求解:

Y(z) = G(z)[R(z) - H(z)Y(z)]
Y(z) = G(z)R(z) - G(z)H(z)Y(z)
Y(z)[1 + G(z)H(z)] = G(z)R(z)

所以闭环脉冲传递函数为:

Φ(z) = Y(z)/R(z) = G(z) / [1 + G(z)H(z)]

你看,形式和连续系统一模一样!但要注意,这里的 G(z)H(z) 都是脉冲传递函数,不是连续传递函数。

关键公式:

  • 开环脉冲传递函数:G₀(z) = G(z)H(z)
  • 闭环脉冲传递函数:Φ(z) = G(z) / [1 + G₀(z)]
  • 误差脉冲传递函数:Φₑ(z) = 1 / [1 + G₀(z)]

3.5 实际应用中的注意事项

聊了这么多理论,说点实际的。我在做数字控制系统时,总结了几条经验:

  1. 采样周期选择很关键。采样周期太大,离散化后系统性能会严重下降;太小,计算负担又重。一般建议采样频率是系统带宽的5~10倍。
  2. 零阶保持器不是万能的。虽然工程上最常用,但它会引入相位滞后。如果你对相位要求高,可以考虑一阶保持器或者三角保持器。
  3. 别忘了量化效应。脉冲传递函数是理想模型,实际系统中还有A/D、D/A转换的量化误差。特别是定点DSP,量化误差可能导致系统不稳定。

避坑指南:我曾经在一个电机控制项目中,用MATLAB设计好了控制器,仿真完美,结果上板子就振荡。查来查去,发现是采样周期设置得太接近系统时间常数了。离散化后的极点位置和连续域差别很大。所以我的建议是:设计完成后,一定要在离散域重新校验稳定性。

3.6 小结

脉冲传递函数是采样系统分析的基石。从差分方程或者连续系统离散化都能推导出来。开环和闭环的推导逻辑和连续系统类似,但要注意采样器的位置会影响串联系统的传递函数形式。

嗯,这一节的内容就到这里。记住:搞懂了脉冲传递函数,你就掌握了采样系统分析的“钥匙”。


公众号:蓝海资料掘金营,微信deep3321