先搞懂核心前提:我们做离散化的终极目标
把我们在连续域(仿真 / 理论设计)里做好的滤波器、PID 控制器等,1:1 复刻到 MCU 里(离散时域),让 MCU 实际跑出来的效果,和仿真设计的完全一致,没有偏差。
所有离散化方法的优劣,都围绕「复刻的准确度 、稳定性 、计算量」这三个核心指标展开。
预畸变的基础
预畸变是为了解决普通双线性变换的频率畸变缺陷。
双线性变换的时域本质:梯形积分(比前向欧拉更准)
| 积分方法 | 时域近似逻辑 | 离散公式(积分项) | 精度 |
|---|---|---|---|
| 前向欧拉 | 用「矩形面积」近似积分 | I(k)=I(k−1)+e(k)⋅Ts | 一阶精度,误差大 |
| 双线性变换 | 用「梯形面积」近似积分 | I(k)=I(k−1)+(e(k)+e(k−1))⋅Ts/2 | 二阶精度,误差小 1 个数量级 |
梯形面积显然比矩形面积更接近真实的积分值,这就是双线性变换比前向欧拉精度更高的核心原因。
从梯形积分,推导出双线性变换的核心映射公式
连续域的积分运算,用拉普拉斯算子表示为:

把梯形积分的离散公式做 z 变换,整理后可以得到s 域(连续)→z 域(离散)的映射关系,这就是双线性变换的核心公式:


普通双线性变换的致命缺陷:频率畸变
双线性变换的精度、稳定性都远超前向欧拉,但它有一个天生的问题:连续域和离散域的频率映射是非线性的,会导致频率畸变。
频率畸变的数学本质
连续域的频率用 角频率Ω表示(单位 rad/s,Ω=2πf,f是 Hz),对应 s 域的虚轴s=jΩ; 离散域的频率用 角频率ω表示,对应 z 域单位圆上的点
把s=jΩ和
代入双线性变换公式,化简后可以得到连续频率和离散频率的映射关系:

这个公式是理解频率畸变和预畸变的核心,我们拆解它的含义:
当Ω很小(也就是目标频率f远小于采样频率fs=1/Ts)时,tan(x)≈x,此时Ω≈ω,几乎没有畸变;
当Ω变大(目标频率接近采样频率的 1/5 以上)时,tan(x)会比x大很多,此时连续频率和离散频率出现严重的非线性偏差,也就是频率畸变。
比如:


结论:不用预畸变,连续域设计 1kHz,离散后实际只有 968Hz,比目标值偏低(因为双线性变换的压缩效应),这就是频率畸变。
所以怎么让离散后刚好得到 1kHz?
我们的目标是让最终的离散频率ω=6283rad/s(1kHz),现在反向代入公式,求需要用多大的连续域频率Ω设计,才能让压缩后的结果刚好是 1kHz:

这就是预畸变的本质:我们提前把连续域的设计频率,从 1kHz 放大到 1034Hz,让双线性变换的压缩效应,刚好把它压回我们想要的 1kHz。
应用场景
一阶低通滤波器

预畸变双线性变换后的离散差分方程

也就是说,如果希望离散域截止频率为1khz,那么通过这个1khz反推,得到反向畸变后的连续域截止频率,得到预畸变后的连续域截止频率后,带入正向畸变,就得到了所需要的离散域1khz截止频率
位置式 PID 控制器
连续域标准 PID 公式

预畸变双线性变换后的离散差分方程


比如在PMSM电流环的PI参数整定中:

微分项本身已经完全匹配双线性变换的全局频率映射,不存在额外的频率畸变,因此不需要对Kd单独做预畸变修正:

但是Kp,Ki的整定直接决定了最终的截止频率,所以通过对Kp,Ki进行预畸变,从而实现对PID算法的预畸变:
连续域 Kp、Ki 与系统带宽的绑定关系(PMSM为例子):
PMSM 电流环按典型 I 型系统设计时,为了实现最优阻尼比ξ=0.707,会令控制器零点抵消被控对象的极点,即:

又因为PI 控制器 + 电机被控对象的开环传递函数,为控制器与被控对象的乘积::

将公式 (5) 代入公式 (4),开环传递函数可以化简为最简形式:

系统的闭环传递函数为:

这是一个典型的一阶惯性系统,闭环带宽(截止频率)等于系统的转折频率,即:

结合公式 (5) 的零点极点对消条件,我们可以直接得到Kp、Ki 与目标带宽的一一对应公式:

什么情况下可以忽略这个畸变?
采样频率远大于目标带宽:采样频率fs ≥ 100× 目标带宽fc,比如 10kHz 采样,目标带宽 50Hz,此时tan(x)≈x,畸变 < 1%,几乎无影响;
单环控制,无多环级联:不需要严格的带宽配比,仅单环控制,对动态性能要求不高;
对稳定性、鲁棒性要求低:比如简单的风机、水泵控制,不需要精准的动态性能。
PID算法通过双线性变化,频率发生了畸变,会出现什么问题?
闭环带宽直接决定了系统的响应速度:带宽越高,阶跃响应的上升时间越短,跟随指令的速度越快。频率畸变导致实际带宽低于设计值,系统的响应速度会直接变慢。
系统响应速度变慢,动态性能不达标;多环级联的带宽配比被打破,系统易震荡甚至失稳;抗干扰能力大幅下降;仿真与实际运行效果严重脱节等