第4章 离散系统建模:离散积分器、单位延迟、零阶保持器、离散传递函数、采样时间概念
各位同学,欢迎来到离散系统建模这一章。说实话,很多做连续系统仿真的工程师,一听到「离散」两个字就头大。我当年刚入行时也一样,总觉得连续系统才是「真」的,离散不过是近似。直到我在一个电机控制项目里,被采样频率折腾得够呛,才真正理解了离散建模的价值。
这一章,咱们就聊聊离散系统建模的几个核心模块。我会结合自己的项目经验,帮你把这些概念吃透。
4.1 采样时间:离散系统的「心跳」
先问一个问题:连续系统和离散系统,本质区别在哪?
连续系统里,信号是随时间连续变化的。你可以在任意时刻观察它。离散系统呢?信号只在某些特定时刻才有值。这些时刻,就是采样时刻。
采样时间,就是相邻两个采样时刻的间隔。我习惯把它叫做离散系统的「心跳」。心跳快了,系统反应灵敏,但计算量大;心跳慢了,计算量小,但可能漏掉关键信息。
在Simulink里,采样时间用Ts表示。你可以在每个模块的参数对话框里设置它。注意,不同模块的采样时间必须兼容。否则,Simulink会报错。
核心概念:采样时间决定了离散系统的精度和实时性。选大了,系统可能不稳定;选小了,硬件可能跑不动。
我的经验:选采样时间时,有个经验法则——采样频率至少是系统最高频率的10倍。比如你的系统最高频率是100Hz,那采样频率至少1000Hz,也就是Ts=0.001秒。我在一个伺服驱动项目里,就因为采样频率只取了5倍,结果系统震荡得厉害。后来改成10倍,问题就解决了。
4.2 离散积分器:累加的艺术
连续积分器,大家都很熟悉。它是对输入信号做积分。离散积分器呢?它是对输入信号的采样值做累加。
说白了,离散积分器就是一个累加器。每个采样时刻,它把当前的输入值乘以采样时间,然后加到之前的累加结果上。
Simulink里提供了几种离散积分器:
- 前向欧拉法:
y(n) = y(n-1) + Ts * u(n-1) - 后向欧拉法:
y(n) = y(n-1) + Ts * u(n) - 梯形法:
y(n) = y(n-1) + Ts/2 * (u(n) + u(n-1))
这三种方法,精度和稳定性不同。前向欧拉法最简单,但可能不稳定。后向欧拉法稳定,但精度稍差。梯形法精度最高,但计算量也最大。
注意:离散积分器的初始条件很重要。如果你设错了初始值,仿真结果可能完全不对。我曾经在一个温度控制模型里,忘了设积分器的初始温度,结果仿真曲线从0开始,跟实际差了十万八千里。排查了半天才发现是这个问题。
4.3 单位延迟:一个采样周期的等待
单位延迟,就是让信号延迟一个采样周期。它的数学表达式很简单:y(n) = u(n-1)。
你想想看,这个模块有什么用?
实际系统中,信号传输、计算都需要时间。单位延迟可以模拟这种延迟。另外,在数字控制器里,单位延迟也用来实现状态更新。
Simulink里的Unit Delay模块,默认初始输出为0。你可以根据需要修改初始值。
避坑指南:我曾经在一个多速率系统里,用了多个单位延迟模块。结果因为采样时间不匹配,信号时序全乱了。后来我统一了所有模块的采样时间,才把问题解决。记住,单位延迟的采样时间必须与系统其他部分兼容。
4.4 零阶保持器:把离散信号变回连续
零阶保持器,英文叫Zero-Order Hold,简称ZOH。它的作用是把离散信号保持住,直到下一个采样时刻。
说白了,ZOH就是把离散的「点」变成连续的「台阶」。每个采样时刻,它输出当前值,然后一直保持到下一个采样时刻。
在Simulink里,ZOH模块通常用在ADC(模数转换)或DAC(数模转换)的建模中。比如,你想模拟一个数字控制器输出给模拟执行器的过程,就可以用ZOH。
ZOH的传递函数是:G(s) = (1 - e^(-sTs)) / s。这个公式看着复杂,但理解起来不难——它就是一个保持器。
关键点:ZOH会引入相位延迟。采样时间越大,延迟越明显。在高精度控制系统中,这个延迟可能影响稳定性。
4.5 离散传递函数:Z域里的系统描述
连续系统用拉普拉斯变换描述,离散系统用Z变换描述。离散传递函数,就是Z域里的系统模型。
它的形式是:H(z) = (b0 + b1*z^(-1) + ... + bm*z^(-m)) / (1 + a1*z^(-1) + ... + an*z^(-n))
在Simulink里,你可以用Discrete Transfer Fcn模块来实现。只需要输入分子和分母系数即可。
举个例子,一个一阶低通滤波器的离散传递函数是:
H(z) = (1 - alpha) / (1 - alpha * z^(-1))
其中 alpha = exp(-Ts / tau),tau是时间常数
这个滤波器,我在很多项目里都用过。比如传感器信号去噪,或者参考信号平滑。
我的习惯:设计离散传递函数时,我一般先用连续域设计,然后用双线性变换法离散化。这样能保证离散后的系统特性与连续域尽量一致。当然,如果采样频率足够高,直接用前向欧拉法也行。
4.6 知识体系总览
下面这张图,帮你梳理本章的核心知识点:
4.7 综合示例:一个简单的离散低通滤波器
咱们来搭一个实际的模型。假设你要设计一个离散低通滤波器,截止频率100Hz,采样时间0.001秒。
第一步,计算alpha值:
tau = 1 / (2 * pi * 100) ≈ 0.00159
alpha = exp(-0.001 / 0.00159) ≈ 0.533
第二步,在Simulink里搭建:
- 用
Discrete Transfer Fcn模块,分子系数[1-alpha],分母系数[1, -alpha] - 采样时间设为0.001
- 输入一个正弦波,频率50Hz,看看输出是否被衰减
你试试看。如果滤波器设计正确,50Hz的信号应该基本通过,而200Hz的信号会被明显衰减。
注意:离散滤波器的频率响应,在接近奈奎斯特频率(采样频率的一半)时会失真。所以,滤波器的截止频率不能太高。一般建议截止频率不超过采样频率的1/10。
4.8 本章小结
离散系统建模,说白了就是把连续世界的「流」变成离散世界的「滴」。采样时间是节奏,离散积分器是累加,单位延迟是等待,ZOH是保持,离散传递函数是Z域里的系统描述。
这些模块,在数字控制器、数字信号处理、通信系统里随处可见。掌握了它们,你就掌握了离散建模的核心。
嗯,这一章就到这里。记住,多动手搭模型,比光看书有用得多。
公众号:蓝海资料掘金营,微信deep3321