4、速度环的离散化:从连续域到数字世界的跨越

做电机控制这些年,我越来越觉得——离散化是理论到工程的一道分水岭。你在课本上推导的PI参数再漂亮,到了单片机里跑起来,效果可能完全两样。为什么?因为连续域是理想世界,而离散域才是我们真实面对的数字战场。

今天我们就来聊聊,速度环从连续域到离散域的转换方法。我会结合自己踩过的坑,把双线性变换、前向欧拉、后向欧拉这些方法讲透。

核心观点:离散化不是简单的数学替换,它决定了你的控制器在真实采样周期下能否稳定工作。

4.1 为什么要离散化?

你想想看,我们的MCU是数字芯片,它只能处理离散的采样值。速度环的输入——编码器反馈,每隔Ts微秒才更新一次。输出——电流指令,也是每隔Ts微秒才刷新一次。这中间的时间间隔,就是采样周期。

连续域的传递函数是s域的函数,它假设信号是连续的、无限精度的。但现实是:

  • 采样有延迟
  • 计算有耗时
  • PWM更新有同步问题

所以,我们必须把连续域的PI控制器,转换成离散域的差分方程。这个过程,就叫离散化。

4.2 三种离散化方法对比

我个人习惯把离散化方法分成三类。它们本质上都是用不同的数值积分近似方式,把s域映射到z域。

方法 映射关系 特点 我的评价
前向欧拉 s = (z-1)/Ts 简单,但可能不稳定 新手容易踩坑
后向欧拉 s = (z-1)/(z·Ts) 稳定,但精度一般 工程中常用
双线性变换 s = (2/Ts)·(z-1)/(z+1) 精度高,频率畸变需补偿 我最推荐的方法

4.3 前向欧拉:简单但危险

前向欧拉是最直观的方法。它用当前时刻的导数近似下一时刻的值。公式很简单:

s = (z - 1) / Ts

代入连续PI控制器:

C(s) = Kp + Ki/s

得到:

C(z) = Kp + Ki · Ts / (z - 1)

写成差分方程:

u[k] = u[k-1] + Kp·(e[k] - e[k-1]) + Ki·Ts·e[k-1]

我曾经在这个方法上吃过亏。 有一次做高速主轴的速度环,采样周期设得比较大(500μs),前向欧拉直接导致系统在高增益下振荡。后来查资料才发现,前向欧拉会把s左半平面的稳定区域映射到z平面单位圆外——说白了,连续域稳定的系统,离散后可能不稳定。

4.4 后向欧拉:工程中的稳妥选择

后向欧拉比前向欧拉更稳定。它的映射关系是:

s = (z - 1) / (z · Ts)

代入PI控制器:

C(z) = Kp + Ki · Ts · z / (z - 1)

差分方程:

u[k] = u[k-1] + Kp·(e[k] - e[k-1]) + Ki·Ts·e[k]

注意看,积分项用的是当前误差e[k],而不是前向欧拉的e[k-1]。这个区别很关键——后向欧拉相当于用后向差分近似导数,数值稳定性更好。

我的建议: 如果你的采样周期比较小(比如50μs以下),后向欧拉和前向欧拉的差异不大。但采样周期一大,后向欧拉明显更靠谱。

4.5 双线性变换:精度之王

双线性变换(也叫Tustin变换)是我个人最推荐的方法。它用梯形积分近似连续积分,精度远超前两种。

s = (2/Ts) · (z-1)/(z+1)

代入PI控制器:

C(z) = Kp + Ki · (Ts/2) · (z+1)/(z-1)

整理后:

C(z) = (Kp + Ki·Ts/2) + ( -Kp + Ki·Ts/2 )·z⁻¹
        ─────────────────────────────────────
                    1 - z⁻¹

差分方程:

u[k] = u[k-1] + (Kp + Ki·Ts/2)·e[k] + (-Kp + Ki·Ts/2)·e[k-1]

关键点: 双线性变换保持了s域到z域的双线性映射关系,不会出现前向欧拉那种稳定性问题。唯一的代价是频率轴有畸变——高频段的频率响应会被压缩。但速度环的带宽通常远低于采样频率,这个畸变影响很小。

4.6 离散域PI控制器的标准实现

在实际工程中,我习惯用位置式PI还是增量式PI?这取决于应用场景。

位置式PI:

u[k] = Kp·e[k] + Ki·Ts·Σe[i]

特点:输出直接是控制量,积分项需要累加,容易积分饱和。

增量式PI:

Δu[k] = Kp·(e[k] - e[k-1]) + Ki·Ts·e[k]
u[k] = u[k-1] + Δu[k]

特点:输出是增量,不会积分饱和,但需要保存上一时刻的输出。

我个人偏好: 速度环我几乎只用增量式PI。为什么?因为速度环的输出是电流指令,如果积分饱和了,电流会一直往上冲,电机可能飞车。增量式天然抗饱和,省心很多。

4.7 采样时间对性能的影响

这是很多人容易忽略的问题。采样时间Ts不是随便选的,它直接影响控制器的性能。

我总结了几条经验:

  • Ts越小越好? 不一定。Ts太小,计算负担重,而且微分噪声会被放大。一般速度环的采样周期在50μs~1ms之间。
  • Ts与带宽的关系: 采样频率至少是速度环带宽的10倍以上。比如你的速度环带宽是100Hz,采样频率至少1kHz(Ts=1ms)。
  • Ts与离散化误差: 双线性变换的误差与Ts²成正比,前向欧拉的误差与Ts成正比。所以Ts越大,离散化误差越明显。
采样周期Ts 适用场景 注意事项
50μs ~ 100μs 高速伺服、主轴 MCU算力要求高
100μs ~ 500μs 通用伺服、机器人 最常用范围
500μs ~ 1ms 低速、大惯量系统 注意离散化误差

我曾经遇到一个案例: 某客户做AGV的轮毂电机速度环,采样周期设了2ms。用双线性变换离散化后,速度环带宽只能做到30Hz,再高就振荡。后来把采样周期降到500μs,带宽直接拉到150Hz。你看,采样时间的影响就是这么直接。

4.8 离散化方法的选择建议

嗯,这里我给出一个实用的选择流程:

  1. 如果Ts很小(<100μs): 三种方法差异不大,随便选。我习惯用后向欧拉,代码简单。
  2. 如果Ts中等(100μs~500μs): 推荐双线性变换,精度和稳定性兼顾。
  3. 如果Ts较大(>500μs): 必须用双线性变换,前向欧拉基本不可用。

一句话总结: 双线性变换是速度环离散化的首选方法。它稳定、精度高、实现也不复杂。除非你的采样周期非常小,否则别偷懒用前向欧拉。

4.9 本章知识体系

下面这张图展示了本章的核心逻辑:

速度环离散化知识体系 连续域PI控制器 前向欧拉 后向欧拉 双线性变换 离散域PI控制器 影响因素:采样周期Ts | 控制器带宽 | MCU算力 | 系统惯量 位置式PI实现 增量式PI实现(推荐) 输出:稳定的速度环控制效果

好了,这一章的内容就到这里。离散化是速度环从理论到工程的关键一步,选对方法、选好采样周期,你的速度环才能跑得稳、跑得快。


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