4. 扇区边界的不连续性:为什么在扇区交界处电压矢量会跳变?

好,咱们接着聊。前面几章我们把 SVPWM 的基本原理、扇区判断、作用时间计算都捋了一遍。有朋友可能会问:「看起来挺顺的,代码跑起来应该没问题吧?」

嗯,如果你真这么想,那大概率要踩坑了。我当年第一次调 SVPWM 的时候,电机转起来倒是转了,但噪音大得吓人,电流波形上全是毛刺。当时我盯着示波器看了半天,心想:这算法不是号称「电压利用率高、谐波小」吗?怎么实际效果这么拉胯?

后来一查,问题出在扇区交界处。说白了,就是电压矢量在扇区切换的那一瞬间,发生了不连续的跳变。今天咱们就把这个「跳变」的来龙去脉彻底讲清楚。

4.1 理想很丰满:连续旋转的电压矢量

先回顾一下 SVPWM 的核心思想。我们希望逆变器输出一个在空间上连续旋转的电压矢量,这样电机磁场才能平滑转动。理想情况下,这个矢量的轨迹应该是一个圆,对吧?

但现实是,我们只有 8 个基本电压矢量(6 个非零矢量 + 2 个零矢量)。我们只能通过在一个开关周期内,用相邻的两个非零矢量和零矢量去「拼凑」出目标矢量。这就是所谓的「伏秒平衡」原理。

举个例子,假设目标矢量在扇区 I,我们就用 V1(100)和 V2(110)来合成。到了扇区 II,就用 V2(110)和 V3(010)。每个扇区内部,矢量的合成是连续的、平滑的。

问题就出在扇区与扇区的交界处。比如从扇区 I 切换到扇区 II 的那一瞬间,合成矢量用的「基矢量」突然变了。这种变化,就是跳变的根源。

4.2 跳变到底长什么样?

咱们用一张图来直观感受一下。下面这张 SVG 图展示了两个相邻扇区交界处的矢量切换过程。

扇区交界处电压矢量跳变示意图 扇区 I 扇区 II V1 (100) V2 (110) V3 (010) 理想圆形轨迹 扇区 I 合成矢量 扇区 II 合成矢量 跳变区 扇区 I 用 V1+V2 合成,扇区 II 用 V2+V3 合成。交界处基矢量突变,导致合成矢量方向/幅值不连续。

你看,在扇区 I 内部,合成矢量沿着绿色虚线圆走,很平滑。但到了扇区 I 和扇区 II 的边界,合成用的基矢量从「V1+V2」突然变成了「V2+V3」。V1 被丢掉,V3 被加进来。这一丢一加,合成矢量的方向和幅值就可能出现一个「台阶」——这就是跳变。

4.3 跳变的本质:基矢量的切换

为什么会跳变?咱们从数学上拆解一下。

在扇区 I,目标矢量 Vref 的表达式是:

Vref = (T1/Ts) * V1 + (T2/Ts) * V2

在扇区 II,表达式变成:

Vref = (T2'/Ts) * V2 + (T3'/Ts) * V3

注意看,V1 和 V3 不是同一个矢量。V1 是 (100),V3 是 (010)。它们在空间上差了 60 度。当你从扇区 I 走到扇区 II 的边界时,T1 逐渐减小到 0,T3' 从 0 开始逐渐增大。但问题是,T1 减到 0 的那一刻,V1 彻底消失;而 T3' 从 0 开始增加,V3 才刚出现。

这个「消失」和「出现」的过程,如果时序处理得不好,就会在 PWM 波形上产生一个「毛刺」或者「缺口」。反映到电机上,就是电流的畸变和转矩的脉动。

核心结论:扇区边界的不连续性,本质上是合成电压矢量的「基矢量集合」发生了突变。这种突变导致 PWM 占空比在边界处不连续,进而引起输出电压和电流的跳变。

4.4 跳变带来的实际影响

跳变不是理论上的小问题,它在实际工程中会带来很具体的麻烦。我列几个我踩过的坑:

  • 电流谐波增大:跳变相当于在电压波形上叠加了一个高频分量。这个分量会激发电机绕组的寄生参数,产生额外的谐波电流。电机温度升高,效率下降。
  • 转矩脉动:对于永磁同步电机,电压矢量的跳变会直接反映在电磁转矩上。低速运行时尤其明显,电机会出现「一顿一顿」的感觉。
  • 噪音问题:这个我印象最深。有一次做一款伺服驱动器,客户反馈电机在 30Hz 附近有尖锐的啸叫声。我排查了很久,最后发现就是扇区切换点的 PWM 占空比跳变导致的。那个频率刚好落在人耳敏感区,听起来特别刺耳。
  • 控制性能下降:在电流环带宽比较高的情况下,跳变引起的电流畸变会被控制器误认为是「扰动」,导致调节器输出异常,甚至引发震荡。

注意:扇区边界跳变在低速、轻载工况下尤其明显。因为此时调制比较低,零矢量作用时间长,非零矢量的切换效应被放大。我曾经在一个项目中,电机空载运行时电流波形非常漂亮,一带负载就出现毛刺,查了半天才发现是扇区切换的问题。

4.5 跳变发生的具体位置

跳变不是均匀分布在所有扇区边界的。它主要发生在以下两个位置:

扇区边界 切换的基矢量 跳变特征
扇区 I → 扇区 II V1(100) 切换为 V3(010) A 相和 B 相开关状态同时变化
扇区 II → 扇区 III V2(110) 切换为 V4(011) B 相和 C 相开关状态同时变化
扇区 III → 扇区 IV V3(010) 切换为 V5(001) A 相和 C 相开关状态同时变化
扇区 IV → 扇区 V V4(011) 切换为 V6(101) A 相和 B 相开关状态同时变化
扇区 V → 扇区 VI V5(001) 切换为 V1(100) B 相和 C 相开关状态同时变化
扇区 VI → 扇区 I V6(101) 切换为 V2(110) A 相和 C 相开关状态同时变化

你看,每次扇区切换,都涉及两相开关状态的同时变化。这意味着 PWM 比较器的两个通道在同一时刻翻转。如果硬件比较器的更新时刻没有对齐,或者死区补偿没做好,跳变会更严重。

4.6 一个典型的跳变波形

咱们用一段伪代码来模拟一下跳变发生时的 PWM 占空比变化。假设我们在扇区 I 和扇区 II 的边界附近:

// 扇区 I 内部(靠近边界)
T1 = 0.15 * Ts    // V1 作用时间
T2 = 0.60 * Ts    // V2 作用时间
T0 = 0.25 * Ts    // 零矢量作用时间

// 扇区 II 内部(刚过边界)
T2' = 0.60 * Ts   // V2 作用时间(连续)
T3' = 0.15 * Ts   // V3 作用时间(从 0 跳变到 0.15)
T0' = 0.25 * Ts   // 零矢量作用时间

注意看 T1 和 T3'。在边界处,T1 从 0.15 突降到 0,T3' 从 0 突增到 0.15。虽然 T1+T2 和 T2'+T3' 的总和没变(都是 0.75*Ts),但两个矢量的方向不同。V1 和 V3 差了 60 度,所以合成矢量的终点位置会有一个「跳跃」。

这个跳跃,就是跳变的直接表现。

4.7 解决思路预览

既然知道了问题在哪,那怎么解决?我简单说几个方向,后面几章会详细展开:

  • 方法一:过调制处理。在边界处对占空比进行限幅和滤波,让切换更平滑。但这种方法会损失一部分电压利用率。
  • 方法二:零矢量重新分配。调整零矢量(V0 和 V7)的分配比例,让扇区切换时开关状态的变化最小化。这是最常用的方法。
  • 方法三:占空比补偿。在检测到扇区切换时,主动对 PWM 占空比进行微调,补偿跳变带来的误差。
  • 方法四:硬件同步。确保三相 PWM 比较器的更新时刻严格同步,避免因硬件时序差异导致的额外跳变。

我的建议:对于大多数应用,方法二(零矢量重新分配)是最实用的。它不增加计算量,不损失电压利用率,而且效果非常明显。我后来做的项目,基本都用这个方法。具体怎么实现,咱们下一章细聊。

好了,这一章我们把扇区边界跳变的「是什么」和「为什么」讲清楚了。跳变不是算法本身的 bug,而是离散化合成带来的固有效应。理解了它的本质,后面咱们才能对症下药。