4. SVPWM扇区判断与作用时间计算

好,咱们进入SVPWM最核心的计算环节。扇区判断、作用时间、过调制处理——这三个东西串起来,就是SVPWM的骨架。我个人习惯把这部分叫作“坐标到时间的翻译”。你想想看,给定一个电压矢量,你得先知道它在哪个扇区,然后算出两个相邻基本矢量各作用多久,最后还得保证时间不超一个开关周期。每一步都有坑,咱们一个一个来拆。

4.1 扇区判断算法

为什么要先判断扇区?因为SVPWM的六个基本矢量把空间分成了六个60°的扇区。你给一个目标电压矢量,它落在哪个扇区,就用哪两个相邻的基本矢量去合成。说白了,扇区判断就是给矢量“定位”。

判断方法有很多种。最直接的是用角度,但角度计算涉及反正切,在MCU里跑起来太慢。工程上常用的是三值逻辑判断法——只用Uα、Uβ的符号和大小关系,全是加减和比较,没有三角函数。

具体做法是这样的:定义三个中间变量:

B1 = Uβ
B2 = √3 * Uα - Uβ
B3 = -√3 * Uα - Uβ

然后看这三个变量的正负。每个变量取0或1(正为1,负为0),组合成一个三位二进制数。查表就能得到扇区号。我当年第一次在DSP上实现这个算法时,发现一个很隐蔽的问题——当Uα或Uβ接近零时,浮点比较会抖动。后来我加了一个小阈值做滞回处理,才彻底解决。

扇区与B1、B2、B3的对应关系如下:

扇区 B1 (Uβ) B2 (√3Uα - Uβ) B3 (-√3Uα - Uβ)
I (0°~60°) + + -
II (60°~120°) + - -
III (120°~180°) + - +
IV (180°~240°) - - +
V (240°~300°) - + +
VI (300°~360°) - + -
我的小技巧: 实际代码里,我习惯把B1、B2、B3的符号位打包成一个3bit数,然后用switch-case查表。比if-else嵌套快得多,而且代码可读性也好。

4.2 基本矢量作用时间计算

扇区判断完了,接下来算时间。每个扇区里,目标矢量由两个相邻的基本矢量合成。以扇区I为例,基本矢量是U1(100)和U2(110)。作用时间T1和T2由伏秒平衡方程导出:

T1 = (√3 * Ts / Udc) * (√3/2 * Uα - 1/2 * Uβ)
T2 = (√3 * Ts / Udc) * Uβ

其他扇区的时间公式,本质上是对Uα、Uβ做坐标旋转后再套用这个形式。我建议你直接记住一个通用公式——用三个中间变量X、Y、Z来统一表达:

X = (√3 * Ts / Udc) * Uβ
Y = (√3 * Ts / Udc) * (√3/2 * Uα + 1/2 * Uβ)
Z = (√3 * Ts / Udc) * (-√3/2 * Uα + 1/2 * Uβ)

然后根据扇区查表:

扇区 T1 T2
I Z Y
II Y -X
III -Z X
IV -X Z
V X -Y
VI -Y -Z

嗯,这里要注意:T1和T2算出来可能是负的。如果出现负值,说明扇区判断错了,或者电压矢量已经超出了线性调制范围。这时候就要进入过调制处理。

我曾经踩过的坑: 有一次在电机低速重载工况下,T1+T2算出来超过了Ts。我没做限幅,直接用了原始值,结果电流波形出现严重畸变,电机嗡嗡响。后来才意识到——时间超了必须做归一化处理,否则逆变器输出会乱套。

4.3 过调制处理

过调制,说白了就是目标电压矢量太长了,超出了六边形的内切圆。这时候T1+T2 > Ts,没法直接输出。怎么办?两种策略:

  • 最小幅值误差法: 保持矢量方向不变,把幅值缩到六边形边界上。这是最常用的方法,谐波小,实现简单。
  • 最小相位误差法: 保持幅值不变,调整相位。这种方法在过调制深度较大时有用,但实现复杂,我一般不用。

工程上最常用的是比例缩小法。当T1+T2 > Ts时,做如下处理:

T1_adj = T1 * Ts / (T1 + T2)
T2_adj = T2 * Ts / (T1 + T2)
T0 = Ts - T1_adj - T2_adj

这样T1_adj和T2_adj的总和刚好等于Ts,零矢量时间T0也自然出来了。我个人的经验是:过调制深度不要超过1.1倍,再往上谐波会急剧增加,电机噪声和损耗都受不了。

下面这张图总结了整个扇区判断、时间计算和过调制处理的流程:

SVPWM 扇区判断与时间计算流程 输入 Uα, Uβ 计算 B1, B2, B3 查表得扇区号 N 计算 X, Y, Z 查表得 T1, T2 T1+T2 ≤ Ts? 是 直接输出 T1, T2 否 过调制:比例缩小 输出 T1, T2, T0

核心要点回顾:

  • 扇区判断用三值逻辑,避免三角函数,适合MCU实时计算
  • 作用时间用X、Y、Z统一表达,查表即可,代码简洁
  • 过调制时做比例缩小,保证T1+T2=Ts,方向不变
  • 实际工程中,记得加滞回和限幅,防止边界抖动

好了,扇区判断和时间计算这部分就讲到这里。你把这些公式和流程理清楚,SVPWM的骨架就有了。下一块内容——死区补偿,才是真正考验工程经验的地方。咱们到时候细聊。