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 从连续系统离散化推导
实际工程中,我们经常遇到“连续对象 + 采样器 + 保持器”的结构。这时候怎么求脉冲传递函数?
我建议你记住这个套路:
- 先写出连续对象的传递函数
G(s) - 考虑零阶保持器
H(s) = (1 - e⁻ᵀˢ)/s - 求广义对象的脉冲传递函数:
G(z) = Z{H(s)G(s)}
具体计算时,可以查Z变换表,也可以用部分分式展开法。我个人习惯用部分分式,因为不容易出错。
小技巧:如果你用MATLAB,直接调用 c2d(Gs, Ts, 'zoh') 就能得到离散化结果。但建议你至少手动推导一两次,理解背后的原理。我曾经带过一个实习生,只会用函数不会推导,结果换了采样周期就懵了。
3.3 开环脉冲传递函数
开环系统,就是没有反馈的系统。它的脉冲传递函数就是各个环节串联后的总传递函数。
这里有个容易搞混的地方:连续系统串联时,总传递函数是各环节传递函数的乘积。但离散系统不一样!
为什么?因为采样器的存在。你想想看,两个连续环节中间如果有采样器,信号就被离散化了。这时候总传递函数就是 G₁(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 实际应用中的注意事项
聊了这么多理论,说点实际的。我在做数字控制系统时,总结了几条经验:
- 采样周期选择很关键。采样周期太大,离散化后系统性能会严重下降;太小,计算负担又重。一般建议采样频率是系统带宽的5~10倍。
- 零阶保持器不是万能的。虽然工程上最常用,但它会引入相位滞后。如果你对相位要求高,可以考虑一阶保持器或者三角保持器。
- 别忘了量化效应。脉冲传递函数是理想模型,实际系统中还有A/D、D/A转换的量化误差。特别是定点DSP,量化误差可能导致系统不稳定。
避坑指南:我曾经在一个电机控制项目中,用MATLAB设计好了控制器,仿真完美,结果上板子就振荡。查来查去,发现是采样周期设置得太接近系统时间常数了。离散化后的极点位置和连续域差别很大。所以我的建议是:设计完成后,一定要在离散域重新校验稳定性。
3.6 小结
脉冲传递函数是采样系统分析的基石。从差分方程或者连续系统离散化都能推导出来。开环和闭环的推导逻辑和连续系统类似,但要注意采样器的位置会影响串联系统的传递函数形式。
嗯,这一节的内容就到这里。记住:搞懂了脉冲传递函数,你就掌握了采样系统分析的“钥匙”。
公众号:蓝海资料掘金营,微信deep3321