3. 时域辨识方法:阶跃响应法、脉冲响应法、相关分析法
说到时域辨识,很多刚入行的朋友容易把它想复杂了。其实说白了,就是给系统一个已知的输入信号,然后看它怎么“反应”。我这些年做项目,最常用的就是这三种方法:阶跃响应法、脉冲响应法,还有相关分析法。它们各有各的脾气,用对了地方,事半功倍。
3.1 阶跃响应法:最直观的“敲门砖”
阶跃响应法,我个人认为是所有方法里最“亲民”的。你给系统一个突然的、持续的输入变化,比如从0跳到1,然后记录输出怎么从旧稳态过渡到新稳态。这就像你轻轻推一下秋千,看它怎么晃起来。
核心思路: 从阶跃响应曲线里,直接提取关键参数。
- 增益 K: 输出稳态变化量 / 输入阶跃幅度。这个最简单,一眼就能看出来。
- 时间常数 T: 对于一阶系统,输出达到稳态值的63.2%所需的时间。嗯,这里要注意,这个63.2%是数学推导出来的,别问为什么,记住就行。
- 延迟时间 τ: 从输入变化到输出开始有明显变化的时间差。我在项目中遇到过,有些系统延迟特别大,比如管道输送,这时候τ就很重要。
避坑指南: 我曾经在一个温度控制项目里,直接用阶跃响应法辨识,结果模型怎么都对不上。后来发现,是因为阶跃幅度太大了,系统进入了非线性区。所以,阶跃幅度要选得“温柔”一点,最好在系统正常工作点附近。
适用场景: 系统相对稳定,噪声不大,且允许施加一个持续的阶跃信号。比如液位控制、温度控制这些慢过程。
3.2 脉冲响应法:短平快的“冲击测试”
脉冲响应法,说白了就是给系统一个“瞬间的冲击”,比如一个很窄的脉冲信号,然后看它怎么恢复。这就像你弹一下吉他弦,听它怎么振动衰减。
核心思路: 脉冲响应其实就是系统的“单位冲激响应”,它包含了系统的全部动态信息。理论上,只要脉冲足够窄、幅度足够大,就能近似得到理想的冲激响应。
实际操作:
- 设计一个宽度为 Δt、幅度为 A 的脉冲信号。Δt 要远小于系统的最小时间常数。
- 施加脉冲,记录输出响应 y(t)。
- 对 y(t) 进行归一化处理:g(t) ≈ y(t) / (A * Δt)。
我的经验: 脉冲宽度怎么选?我一般先估算一下系统的截止频率,然后让脉冲的频宽覆盖这个范围。你想想看,如果脉冲太宽,它就变成阶跃了;如果太窄,能量又不够,容易被噪声淹没。这是个权衡。
优点: 测试时间短,对系统正常运行影响小。
缺点: 对噪声敏感,信噪比低时效果很差。
3.3 相关分析法:对抗噪声的“秘密武器”
前面两种方法,最怕的就是噪声。一旦噪声大了,曲线毛刺多,参数根本读不准。这时候,相关分析法就派上用场了。它的核心思想是:用输入信号和输出信号的互相关函数,来“提取”系统的脉冲响应。
为什么有效? 因为噪声通常与输入信号不相关。通过互相关运算,相当于把噪声“平均”掉了,而系统的真实响应被保留下来。我刚开始用这个方法时,也觉得有点绕,但用过一次就离不开了。
数学原理(简化版):
R_uy(τ) = ∫ u(t) * y(t+τ) dt
其中,R_uy(τ) 是输入 u 和输出 y 的互相关函数。如果输入 u 是白噪声,那么 R_uy(τ) 就正比于系统的脉冲响应 g(τ)。
实际步骤:
- 设计一个伪随机二进制序列(PRBS)作为输入信号。PRBS 有近似白噪声的特性,但更容易实现。
- 施加 PRBS 信号,同时采集输入和输出数据。
- 计算输入和输出的互相关函数。
- 从互相关函数中提取脉冲响应。
注意: PRBS 的周期和时钟频率需要精心选择。周期要大于系统的 settling time,时钟频率要覆盖系统的带宽。我曾经因为 PRBS 周期选得太短,导致辨识出来的模型只反映了系统的“快动态”,忽略了慢动态,结果控制器设计出来低频性能很差。
3.4 三种方法对比与选择
为了让你看得更清楚,我整理了一个表格:
| 方法 | 输入信号 | 抗噪能力 | 测试时间 | 适用场景 |
|---|---|---|---|---|
| 阶跃响应法 | 阶跃信号 | 弱 | 长(需达到稳态) | 低噪声、慢过程 |
| 脉冲响应法 | 窄脉冲 | 弱 | 短 | 低噪声、快速测试 |
| 相关分析法 | PRBS | 强 | 中等(取决于PRBS周期) | 高噪声、在线辨识 |
我的建议: 如果现场条件允许,噪声不大,优先用阶跃响应法,简单直观。如果系统不允许长时间施加阶跃,用脉冲响应法。如果噪声大得离谱,别犹豫,直接上相关分析法。我在一个化工厂的项目里,现场电磁干扰严重,阶跃响应曲线跟心电图似的,最后就是用相关分析法搞定的。
3.5 知识体系总览
下面这张图,帮你把本章的核心逻辑串起来:
你看,从输入信号出发,根据你的实际工况(噪声大小、测试时间限制),选择合适的方法,最终都能得到系统的数学模型。这就是时域辨识的整个逻辑链条。
最后说一句: 这三种方法不是互斥的。我在实际项目中,经常先用相关分析法粗辨识一个模型,再用阶跃响应法去验证和微调。结合起来用,效果往往更好。