预畸变双线性变换

先搞懂核心前提:我们做离散化的终极目标

把我们在连续域(仿真 / 理论设计)里做好的滤波器、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算法通过双线性变化,频率发生了畸变,会出现什么问题?

闭环带宽直接决定了系统的响应速度:带宽越高,阶跃响应的上升时间越短,跟随指令的速度越快。频率畸变导致实际带宽低于设计值,系统的响应速度会直接变慢。

系统响应速度变慢,动态性能不达标;多环级联的带宽配比被打破,系统易震荡甚至失稳;抗干扰能力大幅下降;仿真与实际运行效果严重脱节等

相关推荐
.徐十三.11 小时前
一篇文章看到最短路径——Dijkstra算法
算法
开发笔记-阿牛11 小时前
解析一款有意思的产品||CK6159A语音芯片设计的儿童专注力训练机-舒尔特玩具
stm32·单片机·嵌入式硬件·音频
科学实验家12 小时前
二叉树的几道题
算法
残影飞雪13 小时前
ESP32-C5下载烧录固件失败报错的原因
单片机·嵌入式硬件
abcy07121313 小时前
flink state实例
大数据·算法·flink
qizayaoshuap13 小时前
# [特殊字符] 密码生成器 — 鸿蒙ArkTS安全算法与密码强度评估系统
java·算法·安全·华为·harmonyos
良木林13 小时前
滑动窗口 - LeetCode hot 100
javascript·算法·leetcode·双指针·滑动窗口
2401_8414956413 小时前
【数据结构】B*树
数据结构·c++·b树·算法·删除·插入·三分分裂
搞全栈小苏13 小时前
SIMetrix_simplis8.4安装教程——附安装包
stm32·单片机·嵌入式硬件·电力电子
QXWZ_IA14 小时前
**电力登高作业高空失保实时监管:千寻智能安全带高挂低用监测方案**
人工智能·科技·算法·能源·智能硬件