4. T-Type三电平SVPWM算法实现
T-Type三电平逆变器每相输出可接P、O、N三种电平,三相组合后共有27个开关状态。若把每个状态映射到α-β平面,会得到19个不同位置的电压矢量:6个长矢量(幅值2Udc/3)、6个中矢量(幅值√3Udc/3)、6个短矢量(幅值Udc/3,每个位置对应P型与N型两个冗余状态)以及1个零矢量(含PPP、OOO、NNN三个冗余状态)。SVPWM的任务,就是在每个开关周期内用这些离散矢量去逼近任意参考矢量Vref,并保证中点电位可控、开关次数尽量少。
一、大扇区与小区间的判断
三电平空间矢量图可先按60°划分为6个大扇区(Sector I~VI),每个大扇区再细分为4个小三角形(A、B、C、D)。判断流程分两步:先由Vref的相角θ确定大扇区,再由幅值与相角共同确定小三角形。
设参考矢量在α-β平面的分量为Vα、Vβ,定义三个辅助量:
V_a = V_β
V_b = (√3·V_α − V_β) / 2
V_c = (−√3·V_α − V_β) / 2
令 A = (V_a > 0) ? 1 : 0,B = (V_b > 0) ? 1 : 0,C = (V_c > 0) ? 1 : 0,则大扇区号 N = A + 2B + 4C,再按 N 与扇区的对应表(N=3→I,1→II,5→III,4→IV,6→V,2→VI)得到大扇区。这一步与两电平SVPWM完全一致,计算量小,适合在中断中实时执行。
小三角形判断需要引入边界条件。以第I大扇区为例,三条关键边界为:
- 短矢量边界:Vβ = √3·Vα/3 附近,用于区分A区与B区;
- 中矢量边界:Vβ = −√3·Vα + √3·Udc/3,用于区分B区与D区;
- 长矢量边界:Vβ = √3·Udc/3,用于区分C区与D区。
实际工程中常用“先判大扇区、再旋转到第I扇区统一判断”的做法:把Vref旋转−(N−1)·60°后,所有小三角形判断都只需一套公式,避免为6个扇区各写一段代码。判断结果用变量region=1~4表示A~D,供后续查表使用。
二、矢量作用时间的计算
确定小三角形后,参考矢量由该三角形的三个顶点矢量合成。以第I大扇区A区为例,三个矢量为V0(零矢量)、V1(短矢量,如POO/OON)、V2(中矢量,如PON)。根据伏秒平衡:
T1 = Ts · (√3·|V_ref| / Udc) · sin(60° − θ')
T2 = Ts · (√3·|V_ref| / Udc) · sin(θ')
T0 = Ts − T1 − T2
其中θ'为旋转到第I扇区后的相角,Ts为开关周期。若T1+T2 > Ts,说明参考矢量已超出线性调制区,需按比例缩放T1、T2并令T0=0,进入过调制处理。B区、C区、D区的公式结构相同,只是所用顶点矢量不同,工程上通常把6个大扇区×4个小三角形共24组矢量与时间系数做成常量表,运行时只做乘加运算。
需要特别注意的是,短矢量存在P型与N型两个冗余状态,它们对中点电流的作用方向相反。例如POO使中点电流流出,OON使中点电流流入。因此T1时间内如何分配P型与N型,直接决定中点电位偏移方向。常用做法是引入中点电压反馈:当上电容电压偏高时,多分配使中点电流流入的状态;反之则多分配流出状态。
三、七段式与五段式序列设计
七段式序列在一个开关周期内对称排列,以第I扇区A区为例:
POO → PON → OON → OOO → OON → PON → POO
T1/2 T2/2 T0/4 T0/2 T0/4 T2/2 T1/2
其特点是:每相开关在一个周期内只动作一次,谐波性能好,中点电流在一个周期内自然抵消,但每个周期有6次开关动作。五段式则去掉两端的零矢量段,只保留中间零矢量:
POO → PON → OOO → PON → POO
T1/2 T2/2 T0/2 T2/2 T1/2
五段式每周期只有4次开关动作,开关损耗降低约1/3,但谐波含量略高,且中点电流的抵消效果变差。工程上常根据载波频率与负载电流大小折中:高频轻载时用五段式降低损耗,低频重载或对中点电位敏感时用七段式。
四、一个可执行的教学示例
设Udc=600V,开关频率fs=10kHz(Ts=100μs),参考矢量幅值|Vref|=200V,相角θ=20°。先判断大扇区:θ=20°落在第I扇区(0°~60°)。旋转后θ'=20°。代入A区公式:
T1 = 100μs × (√3×200/600) × sin(40°) ≈ 100 × 0.5774 × 0.6428 ≈ 37.1μs
T2 = 100μs × (√3×200/600) × sin(20°) ≈ 100 × 0.5774 × 0.3420 ≈ 19.7μs
T0 = 100 − 37.1 − 19.7 = 43.2μs
七段式各段时长为:T1/2=18.55μs,T2/2=9.85μs,T0/4=10.8μs,T0/2=21.6μs。将这些值写入比较寄存器,即可生成三相PWM。验证时可用示波器观察线电压波形:应为三电平阶梯波,台阶幅值为Udc/2=300V;同时用万用表或差分探头监测上下电容电压,若中点偏移超过5%Udc,说明冗余状态分配需要调整。
整个算法的实时性关键在于:扇区判断与查表必须在每个PWM中断内完成,通常要求在一个开关周期内计算完毕。若采用定点DSP,可把sin表、扇区表、矢量表全部放入ROM,中断中只做乘加与查表,单次计算时间可控制在2~3μs以内,满足10kHz以上开关频率的实时要求。