1. SVPWM 基础回顾:空间矢量调制原理、扇区判断与作用时间计算、七段式与五段式 SVPWM 对比

各位工程师朋友,咱们这门课叫《SVPWM 导致速度震荡的排查》,但一上来就讲排查,那是不现实的。你得先搞清楚 SVPWM 到底是怎么工作的,才能知道它哪里会出问题。

我见过不少同事,代码调了好几天,速度就是抖,最后发现是扇区判断写错了。嗯,这种坑,咱们先填上。

1.1 空间矢量调制原理

SVPWM 的全称是 Space Vector Pulse Width Modulation,中文叫空间矢量脉宽调制。说白了,它不是像 SPWM 那样单纯调正弦波,而是从电机定子磁链的角度去控制电压。

你想想看,电机要转得顺,定子磁链得是个圆。SVPWM 就是通过六个功率管开关,合成一个旋转的电压矢量,让磁链轨迹尽量逼近圆形。

核心思想:用 8 个基本电压矢量(6 个非零矢量 + 2 个零矢量)去合成任意方向、任意大小的目标电压矢量。

这 8 个矢量在 α-β 坐标系里画出来,就是一个正六边形,分成 6 个扇区。每个扇区 60 度。

SVPWM 基本电压矢量与扇区划分 扇区 I 扇区 II 扇区 III 扇区 IV 扇区 V 扇区 VI U₁(100) U₂(110) U₃(010) U₄(011) U₅(001) U₆(101) U₀(000)/U₇(111) Uref

1.2 扇区判断与作用时间计算

有了目标电压矢量 Uref,第一步就是判断它在哪个扇区。怎么判断?看 Uα 和 Uβ 的符号和比例关系。

我习惯用下面这个公式,简单粗暴:

// 扇区判断辅助变量
B1 = Uβ
B2 = √3 * Uα - Uβ
B3 = -√3 * Uα - Uβ

// 扇区号计算
N = 4*sign(B3) + 2*sign(B2) + sign(B1)

// 查表得到扇区号
switch(N) {
    case 1: sector = II; break;
    case 2: sector = VI; break;
    case 3: sector = I;  break;
    case 4: sector = IV; break;
    case 5: sector = III; break;
    case 6: sector = V;  break;
}

我的经验:扇区判断最容易出错的地方是符号函数 sign() 的实现。记得处理零值,否则在扇区边界附近会出现跳变,导致速度抖动。

扇区确定后,就该算两个相邻矢量的作用时间了。以扇区 I 为例:

参数 公式 说明
X √3 * Uβ * Ts / Udc 中间变量
Y (3/2 * Uα + √3/2 * Uβ) * Ts / Udc 中间变量
Z (-3/2 * Uα + √3/2 * Uβ) * Ts / Udc 中间变量
T1 Z(扇区 I) 第一个矢量作用时间
T2 Y(扇区 I) 第二个矢量作用时间
T0 Ts - T1 - T2 零矢量作用时间

注意:如果 T1 + T2 > Ts,说明发生了过调制。这时候需要等比例缩小 T1 和 T2,否则电流波形会畸变,电机噪音变大,速度也会震荡。

1.3 七段式与五段式 SVPWM 对比

作用时间算完了,怎么安排开关顺序?这里有两种主流方式:七段式和五段式。

七段式,顾名思义,一个 PWM 周期里开关状态切换 7 次。它的特点是:每次切换只改变一相开关状态,谐波小,但开关损耗大。

五段式呢?一个周期只切换 5 次。它把某个零矢量去掉,或者把某个非零矢量合并,开关损耗能降低 1/3 左右,但谐波会大一些。

我给大家列个对比表:

对比项 七段式 SVPWM 五段式 SVPWM
开关次数/周期 7 次 5 次
开关损耗 较高 降低约 33%
谐波含量 较低(THD 小) 较高(THD 大)
电流纹波 小 大
零矢量分配 U₀ 和 U₇ 各占一半 只用一个零矢量
适用场景 对电流质量要求高的场合 对效率要求高、散热受限的场合

七段式的开关序列长这样(以扇区 I 为例):

// 七段式:U₀(000) → U₁(100) → U₂(110) → U₇(111) → U₂(110) → U₁(100) → U₀(000)
// 时间分配:T0/4 | T1/2 | T2/2 | T0/2 | T2/2 | T1/2 | T0/4

五段式呢?我直接去掉 U₇,只用 U₀ 做零矢量:

// 五段式:U₀(000) → U₁(100) → U₂(110) → U₂(110) → U₁(100) → U₀(000)
// 时间分配:T0/2 | T1/2 | T2 | T2 | T1/2 | T0/2

选型建议:如果你做的是伺服驱动器,对速度平稳性要求高,我建议用七段式。如果你做的是风机、水泵这类对成本敏感、散热条件差的设备,五段式更合适。

我曾经在一个项目中,为了省成本用了五段式,结果电机在低速时速度波动明显。后来换成七段式,问题就解决了。嗯,这就是个典型的「SVPWM 导致速度震荡」案例,后面我们会详细讲。

好了,这一章的基础知识就到这里。记住:扇区判断别写错,作用时间别溢出,七段五段选对型。后面咱们就开始排查实战了。