3、基本矢量作用时间:T1/T2计算原理、七段式SVPWM时序、过调制处理

这一节,我们正式进入SVPWM的核心——时间计算。说白了,就是搞清楚每个扇区里,两个基本矢量各待多久,零矢量又该插在哪。搞懂了这些,你写出来的PWM波才能让电机转得又稳又顺。

3.1 T1/T2的计算原理

先回忆一下,我们在第2章把参考电压矢量 Uref 分解到了某个扇区的两个相邻基本矢量上。现在要做的,就是算出这两个矢量的作用时间 T1 和 T2。

我个人习惯用「伏秒平衡」来理解这件事。在一个PWM周期 Ts 内,让基本矢量Ux作用T1时间,Uy作用T2时间,零矢量作用T0时间,它们产生的合成效果,应该和Uref一直作用Ts时间完全一样。公式长这样:

Uref * Ts = Ux * T1 + Uy * T2 + U0 * T0

把Uref往αβ轴上一投影,再结合基本矢量的幅值(2/3 * Udc),就能解出T1和T2。以第I扇区为例,Ux是U4(100),Uy是U6(110),算出来的结果是:

参数 表达式
T1 √3 * Ts * |Uref| / Udc * sin(π/3 - θ)
T2 √3 * Ts * |Uref| / Udc * sin(θ)
T0 Ts - T1 - T2

嗯,这里要注意,θ是Uref在当前扇区内的角度,范围是0到60度。实际工程里,我们不会直接算sin,太慢了。一般会先把Uα和Uβ算出来,然后用查表或者CORDIC算法搞定。

我的小技巧: 在定点DSP上跑的时候,我会把Udc和Ts都归一化,这样T1和T2的计算就变成了几个乘加操作,效率高很多。我曾经在一个项目里,因为没做归一化,导致PWM频率上不去,后来改了之后,载波频率直接翻了一倍。

3.2 七段式SVPWM时序

算出了T1、T2、T0,接下来就是怎么把它们排成PWM波形。最常见的,就是七段式SVPWM。为什么叫七段?因为一个周期里,开关状态要切换7次。

七段式的核心思想是:每次切换只改变一个桥臂的开关状态。这样能最大程度减小开关损耗和电压尖峰。你想想看,如果一次变两个桥臂,那电流纹波得多大?

还是以第I扇区为例,它的七段式时序是这样的:

U0(000) → U4(100) → U6(110) → U7(111) → U6(110) → U4(100) → U0(000)

你看,从U0到U4,只变了A相;从U4到U6,只变了B相;从U6到U7,只变了C相。反过来也一样。整个波形是对称的,这样谐波含量也低。

每个矢量的作用时间分配如下:

矢量 作用时间
U0(000) T0/4
U4(100) T1/2
U6(110) T2/2
U7(111) T0/2
U6(110) T2/2
U4(100) T1/2
U0(000) T0/4

其他扇区的时序,逻辑完全一样,只是换成了对应的基本矢量。我建议你把这个表背下来,或者写死在代码里,调试的时候会省很多事。

避坑指南: 我曾经在写代码时,把T0/4和T0/2搞反了,结果电机转起来嗡嗡响,电流波形全是毛刺。查了两天才发现是零矢量时间分配错了。所以,对称性是七段式的命根子,千万别搞错。

3.3 过调制处理

算出来的T1+T2,如果大于Ts,会发生什么?

说白了,就是Uref太大了,超出了基本矢量能合成的范围。这时候,我们就进入了过调制区。如果不处理,电机就会失控,电流会爆增。

过调制处理,本质上是一种「取舍」策略。我常用的方法有两种:

  1. 比例缩小法(最小幅值误差): 保持T1和T2的比例不变,把它们等比例缩小,直到T1+T2 = Ts。这样Uref的方向不变,但幅值被削了。适合对相位精度要求高的场合。
  2. 保持最大矢量法(最小相位误差): 优先保证T1和T2中较大的那个不变,只缩小较小的那个。这样能尽量保持幅值,但相位会偏。适合对电压利用率要求高的场合。

实际工程里,我90%的情况都用比例缩小法。代码实现很简单:

if (T1 + T2 > Ts) {
    float scale = Ts / (T1 + T2);
    T1 = T1 * scale;
    T2 = T2 * scale;
    T0 = 0;
}

你看,就这几行代码,就能保证系统不炸。但要注意,过调制时T0=0,意味着零矢量没了,开关频率会变,谐波也会变差。所以,过调制只能作为短时应急手段,不能长期运行。

警告: 过调制时,逆变器的输出电压会接近六阶梯波,谐波含量急剧增加。如果你的电机对谐波敏感(比如永磁同步电机),过调制时间一定要严格控制,否则可能引起电机过热甚至退磁。

好了,T1/T2的计算、七段式时序、过调制处理,这三块拼起来,就是SVPWM的完整骨架。下面这张图,帮你把整个流程串起来:

SVPWM 核心计算流程 Uα, Uβ, Udc, Ts 扇区判断 (N=1~6) 计算 T1, T2, T0 T1+T2 > Ts? 是 过调制处理 (比例缩小) 否 生成七段式PWM时序 输出比较值 (CMPA/B/C) 关键点 • 每个扇区公式不同 • 过调制是应急手段 • 七段式保证对称性

这张图把整个流程串起来了:从输入Uα、Uβ开始,先判断扇区,再算T1/T2,然后判断是否过调制,最后生成七段式时序。每一步都环环相扣,缺一不可。