19.2 离散时间系统入门
上一节,我们揭开了数字环路的面纱——量化像台阶一样粗糙,延迟像幽灵一样存在。 这些非理想因素把原本连续、平滑的模拟控制切得支离破碎。 为了在这个破碎的世界里重建稳定,我们手里需要一把新的锤子。 这把锤子,就是离散时间系统理论。
本节的任务,就是把这把锤子递到你的手里。我们将看到如何在离散的数字域里,用加减乘除和单元延迟,去重建那些我们在模拟域里熟稔的积分、比例和微分运算。
19.2.1 连续积分与离散积分
让我们从最熟悉的场景开始。 一个标准的模拟控制环路你早就见过:传感器采回来输出电压,减去参考值得到误差,再丢进那个连续域的补偿器
考虑一个最简单的纯积分补偿器(公式 19.15):
在
想象一下这两个信号的波形:在这个例子里,输入信号
现在的关键问题是:在我们那个数字控制器里,这个积分到底该怎么算? 我们手里只有一堆离散的采样点
【模式 B:侯捷紧密模式】 先把连续积分公式 (19.16) 变个形。 我们把积分区间切开,切成一个个长度为
要想在数字域精确复现公式 (19.17),补偿器得算出这个积分: 也就是算出
但这里有个硬伤:我们根本不知道曲线长什么样,只有头尾两个采样点
最常用的近似方法,是梯形近似(Trapezoidal Approximation)。 思路很简单:把相邻两个采样点连起来,用这俩点撑起的梯形面积,去代替曲线底下那一段真实的面积。
这个公式非常有价值。 它把微积分变成了简单的算术:一个加法(取平均),一个乘法(乘系数),再加到上一时刻的结果上。 这正是 CPU 或 FPGA 擅长的事情。
把离散积分器算出来的
当然,梯形近似不是唯一的路。 如果你把面积近似成矩形,还有两种常见的“偷懒”方法:
- 后向欧拉法(公式 19.20):只看上一个时刻的高度。
- 前向欧拉法(公式 19.21):只看当前时刻的高度。
这三种方法都有人用,但通常来说,梯形近似是最准的。 为什么?因为它抓住了“平均值”的本质。
19.2.2 Z 变换与频率响应
公式 (19.19), (19.20), (19.21) 给出了时域里的递推公式。 但在前几章里,我们已经习惯了用拉普拉斯变换、传递函数和波特图来思考问题。 在离散域里,对应的家伙是谁?是 Z 变换。
它是离散时间系统的“拉普拉斯变换”。
对于一个离散信号
它和拉普拉斯变换一样,也是线性的(公式 19.23):
最核心的性质来了(公式 19.24)。 如果你把信号
做变量替换
结论很简单,但极其重要:时域延迟一个周期
好了,有了这个武器,我们回过头看那个梯形近似的积分器公式 (19.19)。 两边做 Z 变换(利用线性性质和延迟性质):
把它整理成传递函数的形式
我们把这个结果列在表 19.2 里,你可以看到前向欧拉和后向欧拉的结果也在那儿。
表 19.2 离散积分器传递函数对比
| 近似方法 | |
|---|---|
| 梯形近似 | |
| 后向欧拉 | |
| 前向欧拉 |
【模式 A:SICP 紧绷模式】 现在我们站在了一个分岔路口。 我们有了离散域的传递函数,但怎么评估它的稳定性? 在模拟域,我们把
回想一下刚才的结论:
- Z 域的
是单位延迟。 - 拉普拉斯域里,延迟
对应的因子是 (公式 19.27)。
这意味着,我们可以建立这样一个映射:
所以,求
我们来试一下。 把那个梯形积分器的公式 (19.26) 代进去(公式 19.29):
利用欧拉公式
这东西看起来很怪。我们来对比一下原版模拟积分器的响应(公式 19.31):
惊人的事情发生了。 如果你看相位,公式 (19.30) 在所有频率下的相位都是
我们再来看看幅值。 假设频率很低,满足
这说明:只要采样频率足够高,在低频段,离散积分器几乎完美复现了模拟积分器。
但是,随着频率升高,接近奈奎斯特频率(
这在模拟积分器里是不可想象的——
【阶段收尾 - 喘息】 这里我们看到了离散域的第一个代价:高频特性的畸变。 但在控制环路里,我们的穿越频率通常远小于
💡 一句话记住梯形近似为什么「最准」:前向、后向欧拉各自只偷看一个采样点(左端点或右端点),本质是拿矩形去糊弄曲线面积;梯形近似左右两点都看,等价于把那段曲线当线性插值——只要采样够密,曲线段本来就近似直线,所以梯形几乎是「白捡」的精度。这也是为什么双线性映射在相位上能撞上
、而两种欧拉法做不到——精度不是天上掉下来的,是「多用一个采样点信息」换的。
接下来的问题是,对于一个更复杂的补偿器(比如 PID),我们怎么从
19.3.3 连续域到离散域的映射
我们在上一节里,用梯形积分的例子推导出了一个从
如果我们把这个
这就是大名鼎鼎的双线性映射,或者叫 Tustin 映射。 只要把你设计好的模拟补偿器
这个映射到底干了什么? 它的秘密藏在
平面的原点( ,积分器极点),跑到了 平面的 。 平面的虚轴( ),跑到了 平面的单位圆上( )。 平面的左半平面(稳定区),跑到了 平面的单位圆内部。
这太完美了。它保证了稳定的模拟系统映射后还是稳定的离散系统。
【模式 B:侯捷紧密模式】 我们来实战一下,把我们在第 9 章熟悉的 PI 补偿器搬过来。 模拟 PI 补偿器长这样(公式 19.38):
用双线性映射公式代入
通常 PI 补偿器的零点频率
这里看到了一个非常有意思的现象: 离散零点跑到了
在低频段(远低于
再来试试 PD 补偿器(公式 19.43):
同样代入双线性映射公式。 我们会发现,零点和极点都被映射到了
⚠️ 踩坑预警 如果
它的核心思想是:既然映射会把频率搞弯,那我就事先把那个关键的频率点“弯”回去。 我们在映射公式里加个系数
这个系数是精心设计的,目的是保证在某个特定频率
用了预畸变之后,你会看到在
最后,作为一个总结,我们来看看 PID 补偿器(公式 19.50)。 在模拟域,PID 通常有一个高频极点
直接用带预畸变的双线性映射,得到的离散 PID 传递函数
这里的系数
【模式 C:费曼流动模式】 说实话,手动去算这些 c2d 函数(表 19.3)一键就能搞定这些繁琐的代数运算。
表 19.3 离散化映射工具
| 映射方法 | 替换公式 | MATLAB 函数 |
|---|---|---|
| 双线性 | c2d(Gc, Ts, 'tustin') | |
| 带预畸变的双线性 | c2d(Gc, Ts, 'prewarp', wprewarp) |
至此,我们完成了从理论到工具的准备。 我们已经知道怎么把模拟补偿器“翻译”成数字算法。 但“翻译”仅仅是第一步。 当你把这行代码真的塞进单片机里跑的时候,你会发现有些坑是数学公式里看不出来的—— 比如,当积分值大到连 uint32_t 都装不下时会发生什么? 比如,当 DPWM 的分辨率不够,你想调 1% 占空比却只能调 2% 时会怎样? 这就是下一节(19.3 和 19.4)我们要面对的残酷现实。
参考说明:参考自 geqianQWQ 同学阅读《Fundamentals of Power Electronics》的笔记,仅作理解线索;本文为结合自己理解重新整理的学习笔记,不涉及对原书的复制或翻译。