4. 三电平空间矢量调制(SVM)算法实现
三电平NPC变流器的空间矢量调制,核心任务是把参考电压矢量 Vref 在一个控制周期 Ts 内,用三个相邻的基本矢量按时间加权合成出来。与两电平SVM相比,三电平的矢量数量从8个增加到27个,扇区划分也从6个大扇区细化为6个大扇区×每个大扇区6个小三角形,共36个小区域。算法实现的关键就在于:先判断 Vref 落在哪个小三角形,再选三个顶点矢量,解出各自作用时间,最后排成七段式对称序列驱动12个开关管。
一、坐标系选择与扇区判断
工程上通常先把三相参考电压 Va、Vb、Vc 经Clarke变换到α-β平面。为便于扇区判断,常采用60°坐标系(g-h坐标系)或直接使用α-β坐标。这里以α-β平面为例说明判断逻辑。
三电平基本矢量按长度分为四类:零矢量(3个,位于原点)、小矢量(6对,长度 Vdc/3)、中矢量(6个,长度 √3·Vdc/3)、大矢量(6个,长度 2Vdc/3)。六个大矢量把平面分成6个60°大扇区,编号Ⅰ~Ⅵ,从0°开始逆时针排列。
大扇区判断可用参考角 θ = atan2(Vβ, Vα),归一化到 [0, 2π) 后,N = floor(θ / 60°) + 1 即得大扇区号。更实用的做法是直接用 Vα、Vβ 与三条边界线 Vβ=0、Vβ=√3Vα、Vβ=-√3Vα 的符号关系判断,避免三角函数运算,适合DSP定点实现。
进入大扇区后,还要判断落在哪个小三角形。以扇区Ⅰ(0°~60°)为例,内部被小矢量、中矢量、大矢量分割成6个小三角形,编号1~6。判断依据是两条辅助线:一条是小矢量端点连线,另一条是中矢量端点连线。常用判据为:
若 Vβ ≤ √3·Vα 且 Vβ ≤ -√3·(Vα - Vdc/3) → 小三角形1
若 Vβ ≥ √3·(Vα - Vdc/3) 且 Vβ ≤ √3·Vα → 小三角形2
...(其余按边界不等式依次判断)
实际代码中,把 Vα、Vβ 归一化到以 Vdc/3 为单位的标幺值后,判据变成简单的线性不等式比较,每个控制周期只需十几次加减和比较,实时性很好。
二、矢量合成与作用时间计算
确定小三角形后,取该三角形的三个顶点矢量 V1、V2、V3,根据伏秒平衡原理:
V1·T1 + V2·T2 + V3·T3 = Vref·Ts
T1 + T2 + T3 = Ts
以扇区Ⅰ小三角形2为例,三个顶点通常是小矢量 V1(如100/211)、中矢量 V2(210)、大矢量 V3(200)。把矢量写成α-β分量,得到两个方程加一个时间约束,共三个未知数,可直接解出:
T1 = Ts·(1 - 2m·sinθ)
T2 = Ts·(2m·sin(θ+60°) - 1)
T3 = Ts·(1 - 2m·sin(θ-60°))
其中 m = |Vref| / (Vdc/√3) 为调制比,θ 为参考矢量在当前大扇区内的相对角度。实际实现时,更通用的做法是直接用三个顶点矢量的α-β坐标构成2×2矩阵求逆,得到 T1、T2,再由 T3 = Ts - T1 - T2 补足。这样代码只需维护一张“小三角形编号→三个顶点矢量编号”的查找表,避免为每个小三角形单独推导公式。
需要注意:小矢量存在冗余开关状态(如100和211对应同一矢量),选择哪一个会影响中点电流方向。工程上常根据中点电压偏差 ΔVnp 的符号,动态选择对中点电压有修正作用的那一组小矢量,这就是三电平SVM的中点平衡控制。
三、七段式序列设计
得到三个作用时间后,需要把它们排成一个控制周期内的开关序列。七段式的核心思想是:以零矢量开头和结尾,中间对称安排各矢量,使每个开关周期内开关次数最少,且输出波形半周期对称,谐波性能好。
以扇区Ⅰ小三角形2为例,三个矢量为小矢量 V1、中矢量 V2、大矢量 V3,七段式序列为:
V0 → V1 → V2 → V3 → V2 → V1 → V0
T0/2 T1/2 T2/2 T3 T2/2 T1/2 T0/2
其中 T0 = Ts - T1 - T2 - T3 为零矢量总时间,平均分给首尾两段。这样每个周期内每相桥臂最多开关一次,开关损耗低。
实际DSP实现时,通常不直接生成七段序列,而是计算三个比较寄存器 CMPR1、CMPR2、CMPR3 的翻转时刻。以三角载波为基准,把各段时间的累加值写入比较寄存器,硬件自动产生对称PWM。具体做法是:先算 Ta = T0/4,Tb = Ta + T1/2,Tc = Tb + T2/2,再根据当前扇区和矢量分配关系,把这三个值映射到A、B、C三相的比较寄存器。映射关系由“小三角形编号→三相开关状态”表决定,这张表是三电平SVM实现中最容易出错的地方,建议用离线脚本生成后直接查表。
四、一个可参考的实现流程
下面给出一个适合DSP或FPGA实现的算法流程,参数以 Vdc=800V、Ts=100μs、f=50Hz 为例:
- 采样三相参考电压,Clarke变换得到
Vα、Vβ,并归一化到Vdc/3为基准的标幺值。 - 用
Vβ与±√3Vα的符号关系判断大扇区N(1~6)。 - 把
Vα、Vβ旋转到扇区Ⅰ的局部坐标,用三条边界不等式判断小三角形编号k(1~6)。 - 查表得到三个顶点矢量编号及其α-β坐标,解出
T1、T2、T3,并做饱和限幅:若T1+T2+T3 > Ts,按比例缩放。 - 根据中点电压偏差
ΔVnp选择小矢量的冗余状态。 - 计算
Ta、Tb、Tc,查“小三角形→三相比较寄存器”表,写入PWM模块。 - 每个控制周期重复上述过程,并监测中点电压,若持续偏大则调整小矢量选择策略。
判断算法是否正确,最直接的方法是观察线电压波形:三电平SVM应输出五电平线电压,且中点电压在半个工频周期内基本平衡。若中点电压持续单向偏移,通常是小矢量选择逻辑或作用时间分配有误;若线电压出现异常跳变,则多半是扇区判断或比较寄存器映射表出错。