4. 离散系统建模:采样时间概念、离散传递函数、零阶保持器

说实话,很多工程师一听到「离散系统」就觉得头大。我当年刚接触Simulink时也是这样——总觉得连续系统才是物理世界的真实反映,离散嘛,无非是近似。但做了几个实际项目后,我彻底改变了看法。

你想想看,现在的控制器几乎都是数字芯片实现的。PLC、DSP、单片机,哪个不是按固定时间节拍工作的?所以离散系统建模,说白了就是让我们的仿真更贴近真实硬件。

4.1 采样时间——离散系统的脉搏

采样时间,我习惯叫它「心跳」。每个离散模块都有自己的心跳频率。

在Simulink里,你双击一个离散模块,会看到Sample time这个参数。它决定了模块多久计算一次。比如设成0.01,那就是每10毫秒更新一次输出。

采样时间的三种常见形式:

  • 标量值(如0.01):固定步长,最常用
  • 向量(如[0.01, 0.005]):第一个是采样周期,第二个是偏移量
  • -1:继承上游模块的采样时间

我记得有一次调试一个电机控制系统,仿真结果和实测总是对不上。折腾了两天,最后发现是采样时间设成了0.001,而实际控制器的采样周期是0.01。差了10倍,能对才怪。

避坑指南:我曾经犯过一个低级错误——把连续模块和离散模块直接相连,没加零阶保持器。结果仿真报错,说采样时间冲突。记住:连续信号和离散信号之间,必须要有明确的接口转换。

4.2 离散传递函数——Z域的世界

连续系统我们用拉普拉斯变换,离散系统就用Z变换。道理是一样的,只是把s换成z。

在Simulink里,离散传递函数模块叫Discrete Transfer Fcn。它的参数和连续版本很像,只是多了个采样时间。

举个例子,一个简单的低通滤波器:

连续域:G(s) = 1 / (s + 1)
离散域(采样时间0.1s):G(z) = 0.09516 / (z - 0.9048)

怎么得到的?用双线性变换或者零阶保持器法。我个人习惯用零阶保持器法,因为它更符合实际物理过程——数字控制器输出后,通过D/A转换器保持到下一个采样时刻。

小技巧:如果你懒得手动计算离散传递函数,Simulink有个好用的工具——c2d命令。在MATLAB命令行输入:

s = tf('s');
G = 1/(s+1);
Gd = c2d(G, 0.1, 'zoh')

瞬间就得到离散模型了。'zoh'就是零阶保持器法。

4.3 零阶保持器——数字到模拟的桥梁

零阶保持器,英文叫Zero-Order Hold,简称ZOH。它的作用很简单:把离散信号变成连续信号,而且是在每个采样周期内保持上一个值不变。

你想想看,数字控制器输出的是一个一个的点,比如在t=0时输出1.0,t=0.01时输出1.2。但物理世界需要连续的电压或电流信号。ZOH就是干这个的——它把点连成台阶状的连续信号。

在Simulink里,ZOH模块在Discrete库中。它的参数只有一个:采样时间。

ZOH的数学模型:

时域上,它保持上一个采样值不变:

y(t) = u(kT),  kT ≤ t < (k+1)T

频域上,它的传递函数是:

H(s) = (1 - e^(-sT)) / s

这个公式看着复杂,但记住一点就行:ZOH会引入相位延迟,大约是半个采样周期。

我在做伺服驱动器项目时,就吃过这个相位延迟的亏。当时系统带宽设计得比较高,采样频率只比信号频率高10倍。结果ZOH引入的延迟导致系统不稳定,电机嗡嗡响。后来把采样频率提高了5倍,问题才解决。

4.4 离散系统建模的完整流程

好了,理论说完了,咱们看看实际怎么操作。我一般按这个步骤来:

  1. 确定采样时间:根据硬件能力和信号频率,一般采样频率是信号最高频率的10~20倍
  2. 建立连续模型:先用连续模块搭出物理系统
  3. 离散化控制器:用c2d命令或手动计算,把控制器变成离散形式
  4. 加入ZOH:在连续系统和离散系统之间插入零阶保持器
  5. 仿真验证:对比连续和离散结果,检查误差是否在可接受范围内

一个实用建议:刚开始做离散系统仿真时,可以先在连续域把系统调通,然后再离散化。这样如果出了问题,你能快速定位是离散化过程引入的,还是控制器本身的问题。

4.5 知识体系总览

下面这张图,是我自己总结的离散系统建模核心逻辑。你看一眼,就能把今天讲的内容串起来。

离散系统建模核心逻辑 采样时间 系统的心跳频率 离散传递函数 Z域的系统描述 零阶保持器 数字→模拟的桥梁 采样时间要点 • 固定步长 vs 变步长 • 采样频率 ≥ 10×信号频率 • 偏移量用于多速率系统 离散化方法 • 零阶保持器法(zoh) • 双线性变换(tustin) • 前向/后向欧拉法 ZOH特性 • 保持上一个采样值 • 引入半个周期延迟 • 高频衰减特性 三者结合 → 完整的离散控制系统 实际项目中,采样时间决定离散化精度,ZOH影响系统稳定性 三者需要综合考虑,才能得到可靠的仿真结果

这张图把今天讲的三个核心概念串起来了。采样时间是基础,决定了离散传递函数的形态;离散传递函数是工具,用来描述系统行为;零阶保持器是接口,连接数字和模拟两个世界。

嗯,离散系统建模这块内容不少,但只要你理解了采样时间这个核心,后面的东西就顺理成章了。我建议你打开Simulink,搭一个简单的离散低通滤波器试试,亲手调一调采样时间,看看输出波形的变化。实践出真知嘛。


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