4、SVPWM:空间矢量调制原理、扇区判断、矢量作用时间计算、七段式SVPWM、五段式SVPWM

好,咱们今天聊聊 SVPWM。说实话,这是 FOC 里最“硬核”的一块,也是我当年啃得最久的部分。你想想看,前面我们算出了 Vd、Vq,又反 Park 变换得到了 Vα、Vβ,但逆变器怎么把这些电压值真正“打”出来?靠的就是 SVPWM。

说白了,SVPWM 不是单纯为了生成正弦波,而是为了让电机定子产生一个旋转的圆形磁场。这个思路跟传统的 SPWM 完全不一样。我个人习惯把 SVPWM 理解为“用有限的开关状态,去拼凑出任意方向和大小的电压矢量”。

核心思想: 逆变器只有 8 种开关状态(6 个有效矢量 + 2 个零矢量),我们要用这 8 个“积木”搭出任意角度的电压矢量,并且让磁链轨迹尽量接近圆形。

4.1 空间矢量调制原理

先看逆变器。三相桥臂,每个桥臂上下管互补导通。我们用 (Sa, Sb, Sc) 表示开关状态,1 代表上管导通,0 代表下管导通。这样一共有 8 种组合:000、001、010、011、100、101、110、111。

把这 8 种状态映射到复平面,就得到 6 个有效矢量(U1 ~ U6)和 2 个零矢量(U0、U7)。6 个有效矢量把平面分成 6 个扇区,每个扇区 60°。

我刚开始学的时候,总觉得这 6 个矢量是“跳变”的,怎么能合成连续旋转的矢量呢?后来才明白——靠的是“时间平均”。在一个 PWM 周期内,用相邻的两个有效矢量和零矢量,按时间比例组合,就能等效出任意方向的电压矢量。

我的经验: 理解 SVPWM 的关键,是接受“离散拼凑”这个思路。不要想着一步到位,而是想“这个周期内,我让电机跑多少角度”。

SVPWM 空间矢量与扇区划分 扇区 I 扇区 II 扇区 III 扇区 IV 扇区 V 扇区 VI U1 (100) U2 (110) U3 (010) U4 (011) U5 (001) U6 (101) Uref 6 个有效矢量将平面分为 6 个扇区,Uref 由相邻两个矢量合成

4.2 扇区判断

拿到 Vα 和 Vβ 之后,第一件事就是判断目标矢量落在哪个扇区。怎么判断?我见过有人用角度查表法,但更常用的是三值逻辑判断法。

定义三个中间变量:

B1 = Vβ
B2 = (√3/2) * Vα - (1/2) * Vβ
B3 = -(√3/2) * Vα - (1/2) * Vβ

然后根据这三个值的符号,查表得到扇区号:

B1 符号 B2 符号 B3 符号 扇区
+--I
++-II
-+-III
-++IV
--+V
+-+VI

避坑指南: 我曾经在扇区判断上栽过跟头——边界情况没处理好,导致矢量在扇区边界来回跳变,电流波形出现毛刺。后来加了 0.5° 的滞环才解决。嗯,这里要注意,边界判断一定要留余量。

4.3 矢量作用时间计算

确定扇区后,就要算两个相邻矢量的作用时间 T1 和 T2,以及零矢量时间 T0。公式推导我就不展开了,直接给结论。

先定义三个通用变量:

X = (√3 * Tpwm / Vdc) * Vβ
Y = (√3 * Tpwm / Vdc) * ( (√3/2) * Vα + (1/2) * Vβ )
Z = (√3 * Tpwm / Vdc) * ( -(√3/2) * Vα + (1/2) * Vβ )

然后根据扇区查表:

扇区T1T2
I-ZX
IIZY
IIIX-Y
IV-XZ
V-Y-Z
VIY-X

算完之后,还要做饱和处理。如果 T1 + T2 > Tpwm,说明过调制了,需要等比例缩小:

T1_sat = T1 * Tpwm / (T1 + T2)
T2_sat = T2 * Tpwm / (T1 + T2)
T0 = 0

否则:

T0 = Tpwm - T1 - T2

注意: 过调制处理不好,会导致输出电压波形畸变,电机噪音变大。我建议在调试时把过调制标志位打印出来,看看是不是频繁触发。

4.4 七段式 SVPWM

时间算好了,怎么安排开关顺序?七段式是最常用的方式。它的原则是:每次只切换一个桥臂,减少开关损耗和 EMI。

以扇区 I 为例,矢量顺序是:U0(000) → U1(100) → U2(110) → U7(111) → U2(110) → U1(100) → U0(000)。你看,对称的,中间是 U7,两边对称。

七段式的优点是谐波小,电流纹波小。缺点是开关次数多,损耗稍大。

具体到三相占空比的计算,以扇区 I 为例:

Ta = (Tpwm - T1 - T2) / 4
Tb = Ta + T1 / 2
Tc = Tb + T2 / 2

然后根据扇区,把 Ta、Tb、Tc 分配给 A、B、C 三相。不同扇区的分配表如下:

扇区A 相B 相C 相
ITaTbTc
IITbTaTc
IIITcTaTb
IVTcTbTa
VTbTcTa
VITaTcTb

个人习惯: 我一般把这段查表逻辑写成数组,用扇区号索引,代码干净,不容易出错。

4.5 五段式 SVPWM

五段式跟七段式的区别在于:它只用一个零矢量(要么 U0,要么 U7),而不是两个都用。这样每个 PWM 周期内只有 5 段,开关次数减少 1/3。

还是以扇区 I 为例,五段式的顺序可以是:U0(000) → U1(100) → U2(110) → U1(100) → U0(000),或者 U7(111) → U2(110) → U1(100) → U2(110) → U7(111)。

五段式的优点是开关损耗小,适合高频应用。缺点是谐波含量比七段式大,电流纹波也大一些。

怎么选?我个人的经验是:

  • 追求电流质量、低噪音: 用七段式
  • 追求效率、高频开关: 用五段式
  • 中间状态: 可以动态切换,比如低速用七段式,高速用五段式

我曾经踩过的坑: 有一次为了省那点开关损耗,全程用五段式,结果电机在低速运行时噪音大得离谱。后来改成低速七段、高速五段,问题才解决。所以,别一刀切,要根据工况来。

4.6 两种调制方式的对比

对比项七段式 SVPWM五段式 SVPWM
每周期开关次数7 次5 次
开关损耗较高较低(减少约 1/3)
谐波含量低较高
电流纹波小大
适用场景低速、高精度、低噪音高速、高效率、高频
实现复杂度稍复杂稍简单

好了,SVPWM 的核心内容就这些。你想想看,从扇区判断到时间计算,再到波形生成,每一步都有它的物理意义。搞懂了这些,FOC 的“最后一公里”就算打通了。