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 的关键,是接受“离散拼凑”这个思路。不要想着一步到位,而是想“这个周期内,我让电机跑多少角度”。
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β )
然后根据扇区查表:
| 扇区 | T1 | T2 |
|---|---|---|
| I | -Z | X |
| II | Z | Y |
| III | X | -Y |
| IV | -X | Z |
| V | -Y | -Z |
| VI | Y | -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 相 |
|---|---|---|---|
| I | Ta | Tb | Tc |
| II | Tb | Ta | Tc |
| III | Tc | Ta | Tb |
| IV | Tc | Tb | Ta |
| V | Tb | Tc | Ta |
| VI | Ta | Tc | Tb |
个人习惯: 我一般把这段查表逻辑写成数组,用扇区号索引,代码干净,不容易出错。
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 的“最后一公里”就算打通了。