三相电压与空间矢量的概念
两电平三相电压源逆变器共有8种不同的开关状态,这些状态对应于8个电压空间矢量。其中,包括6个非零矢量 U1(001)、U2(010)、U3(011)、U4(100)、U5(101)、U6(110),以及2个零矢量 U0(000)和 U7(111)。非零矢量在空间上呈现六边形分布,决定了输出电压的方向和幅值,而零矢量则用于调制占空比,以平衡输出电压、减少谐波和改善电机控制性能。如下图所示。

SVPWM 算法的理论基础是平均值等效原理,使逆变器在一个开关周期 Ts内的平均输出电压等效于目标参考电压矢量 Uref。具体来说,Uref由其所在扇区的两个相邻非零矢量和零矢量的合成得到,通过适当分配各个矢量的作用时间,使合成电压的平均值在该周期内与 Uref保持一致。这一过程符合伏秒平衡原则,计算公式如下:
Uref * ts = t1*U1 + t2*U2 + t0*U0
ts = t1 + t2 + t0
式中,Uref为参考电压矢量;ts为采样周期;有效电压矢量U1、U2作用的时间分别为t1、t2;零矢量作用时间分别为 t0。
基于上述理论,将电压矢量归算到第一扇区,就可以计算每一个扇区矢量作用时间,公式如下:

式中,α*为参考矢量与本扇区主矢量的夹角,m为调制系数。
仿真搭建如下:

图1
输入端的1为角度信号,归算到了第一扇区进行计算,因此范围0-π/3(0-60°)。Uref为调制系数,ts为周期。输入端的模块如下:

图2
图2中,Repeating Sequence参数设置为Time values: [0 0.02];Output values: [0 360],表示频率为50Hz的角度。输出波形如下图所示:

图3
图3中,从上到下的波形对应着t1、t2和t0。
接下来进行扇区判断,判断参考电压矢量所在扇区,仿真搭建如下:

图4
输入端为角度信号,即图1中的Repeating Sequence。输出为参考电压矢量所在扇区。然后进行时间分配,生成马鞍波,用MATLAB Function实现,代码为:
function [Ta , Tb, Tc] = fcn( N, t1, t2 ,t0)
if N==1
Ta = t1 +t2 +t0/2 ;
Tb = t2 +t0/2;
Tc = t0/2;
elseif N == 2
Ta = t1 +t0/2;
Tb = t1 +t2 +t0/2;
Tc = t0/2;
elseif N==3
Ta = t0/2;
Tb = t1 +t2 +t0/2;
Tc = t2 +t0/2;
elseif N==4
Ta = t0/2;
Tb = t1 +t0/2;
Tc = t1 +t2 +t0/2;
elseif N==5
Ta = t2+t0/2;
Tb = t0 /2;
Tc = t1 +t2 +t0/2;
else
Ta = t1 +t2 +t0/2;
Tb = t0 /2;
Tc = t1 +t0/2;
end
代码中N为扇区判断,即图4的输出。Ta、Tb和Tc分别为A、B、C相的调制波。输出波形如下:

整体的仿真如下所示,Ta、Tb和Tc后乘以5000是为了标幺化,然后和载波进行比较,得到开关信号。整体仿真如下:

仿真波形结果如下图所示:

至此完成了SVPWM的仿真搭建。