MBD笔记:SVPWM技术(二)

三相电压源逆变器PWM技术

主要介绍三相电源逆变器PWM技术的基本原理和仿真建模:

1)2电平空间矢量调制(SVPWM)算法的工作原理、实现方法,给出采用Simulink模块、s函数方法搭建的仿真模型;
2)几种常用的正弦脉宽调制(SPWM)算法的工作原理,matlab建模方法.

逆变器是一个电力电子转换器,核心功能是把直流电(DC)变成交流电(AC),还能精准控制交流电的频率、幅值和相位,是电机驱动、光伏并网等场景的 “心脏” 部件.

三相电量的空间矢量表示

SVPWM控制策略:依据变流器空间电压(电流)矢量切换来控制变流器的一种新思路、策略,抛弃原来的SPWM算法,采用逆变器空间电压矢量的切换,以获得准圆形旋转磁场,在不高的开关频率条件下,使得交流电机获得较SPWM更好的控制性能.

SVPWM算法,是对应于交流电机中的 三相电压源逆变器功率器件的 一种特殊的 开关触发顺序和脉宽大小的组合,这种开关触发顺序和组合,将在定子线圈中产生三相互差120°电角度、失真较小的正弦波电流波形.

与直接SPWM相比,SVPWM优点:

1)SVPWM优化谐波程度较高,消除谐波效果要比SPWM好,实现容易,并且可以提高电压利用率;
2)SVPWM提高了电压源逆变器的直流电压利用率、电机的动态响应速度,同时减小了电机的转矩脉动等缺点;
3)SVPWM比较适合数字控制系统.

三相DC/AC逆变器、AC/DC变流器控制中,通常三相变量要分别描述. 如果能将三相3个标量用一个合成量表示,并保持信息完整性,则三相问题将简化为单相的问题.

假设三相3个标量\(x_a,x_b,x_c\),满足\(x_a+x_b+x_c=0\)(三相平衡系统的零序分量为零),那么可引入三相静止坐标系到复平面的变换公式

\[\tag{1} \mathbf{X}_{\mathrm{out}} = x_a + a x_b + a^2 x_c \]

其中,\(a = e^{j\frac{2}{3}\pi}, \quad a^2 = e^{-j\frac{2}{3}\pi}\)

注意:零序分量可参见MBD笔记:三相PMSM数学模型(一) 零序分量

式(1)将3个标量用一个复数\(\mathbf{X_{out}}\)表示,而它在复平面上是一个向量.

由欧拉公式:\(e^{j\theta} = \cos\theta + j\sin\theta\),可得:

\[\mathbf{X}_{\mathrm{out}} = \underbrace{\left(x_a - \frac{1}{2}x_b - \frac{1}{2}x_c\right)}_{\text{实部}} + j\underbrace{\frac{\sqrt{3}}{2}\left(x_b - x_c\right)}_{\text{虚部}}=Re \mathbf{X}_{\mathrm{out}}+Im\mathbf{X}_{\mathrm{out}} \]

所以,

\[\tag{2} Re\mathbf{X}_{\mathrm{out}}=x_a - \frac{1}{2}x_b - \frac{1}{2}x_c=x_a + x_b\cos\frac{2}{3}\pi + x_c\cos\left(-\frac{2}{3}\pi\right) \]

\[\tag{3} Im\mathbf{X}_{\mathrm{out}}=\frac{\sqrt{3}}{2}\left(x_b - x_c\right)=x_b\sin\frac{2}{3}\pi + x_c\sin\left(-\frac{2}{3}\pi\right) \]

3个标量(\(x_a,x_b,x_c\),位于3个互成120°角坐标轴上)到空间矢量($\mathbf{X}_{\mathrm{out}} $)的变换示意图:

img

(2)(3)联立\(x_a+x_b+x_c=0\)

\[\tag{4} \begin{bmatrix} \mathrm{Re}\,\mathbf{X}_{\mathrm{out}} \\ \mathrm{Im}\,\mathbf{X}_{\mathrm{out}} \\ 0 \end{bmatrix} = \begin{bmatrix} 1 & -\dfrac{1}{2} & -\dfrac{1}{2} \\[8pt] 0 & \dfrac{\sqrt{3}}{2} & -\dfrac{\sqrt{3}}{2} \\[8pt] \dfrac{1}{2} & \dfrac{1}{2} & \dfrac{1}{2} \end{bmatrix} \begin{bmatrix} x_a \\[6pt] x_b \\[6pt] x_c \end{bmatrix} \]

本质上,这就是一个克拉克变换(参见MBD笔记:三相PMSM数学模型(一) Clark变换

如果复数矢量 \(\mathbf{X}_{\mathrm{out}}\) 已知,则可以解出唯一解\(x_a,x_b,x_c\)

\[\tag{5} \begin{bmatrix} x_a \\[6pt] x_b \\[6pt] x_c \end{bmatrix} = \begin{bmatrix} 1 & 0 & 1 \\[8pt] -\dfrac{1}{2} & \dfrac{\sqrt{3}}{2} & 1 \\[8pt] -\dfrac{1}{2} & -\dfrac{\sqrt{3}}{2} & 1 \end{bmatrix} \begin{bmatrix} \mathrm{Re}\,\mathbf{X}_{\mathrm{out}} \\[6pt] \mathrm{Im}\,\mathbf{X}_{\mathrm{out}} \\[6pt] 0 \end{bmatrix} \]

假设三相对称正弦相电压瞬时值:

\[\tag{6} \begin{cases} u_a = U_m \cos\omega t \\[6pt] u_b = U_m \cos\left(\omega t - \dfrac{2}{3}\pi\right) \\[10pt] u_c = U_m \cos\left(\omega t + \dfrac{2}{3}\pi\right) \end{cases} \]

其中,\(U_m\) 相电压幅值,\(\omega = 2πf\) 相电压角频率;三相电压\(u_a,u_b,u_c\)对应的空间矢量电压:

\[\tag{7} \mathbf{U}_{\mathrm{out}} = u_a + a u_b + a^2 u_c \]

由(2)(3),可求出电压矢量\(\mathbf{U}_{\mathrm{out}}\)实部、虚部:

\[\tag{8} \begin{cases} \mathrm{Re}\,\mathbf{U}_{\mathrm{out}} = u_a + u_b\cos\dfrac{2}{3}\pi + u_c\cos\left(-\dfrac{2}{3}\pi\right) = \dfrac{3}{2}U_m\sin\omega t \\[12pt] \mathrm{Im}\,\mathbf{U}_{\mathrm{out}} = u_b\sin\dfrac{2}{3}\pi + u_c\sin\left(-\dfrac{2}{3}\pi\right) = -\dfrac{3}{2}U_m\cos\omega t \end{cases} \]

于是,由欧拉公式,可知:

\[\tag{9} \mathbf{U}_{\mathrm{out}}=Re\mathbf{U}_{\mathrm{out}}+jIm\mathbf{U}_{\mathrm{out}}= \dfrac{3}{2}U_m\sin\omega t - j\dfrac{3}{2}U_m\cos\omega t = \frac{3}{2}U_me^{j(\omega t - \frac{π}{2})} \]

因此,三相对称正弦相电压对应的空间电压矢量,其运动轨迹如下图所示:

img

\(\mathbf{U}_{\mathrm{out}}\)顶点运动轨迹是一个圆,且以角速度\(\omega\)逆时针旋转.

反过来,根据空间矢量变换的可逆性(本质是克拉克变换),如果\(\mathbf{U}_{\mathrm{out}}\)顶点运动轨迹是一个圆,那么原三相电压越趋近于三相对称正弦波. 三相对称正弦波电压供电,是理想供电方式,也是逆变器交流输出电压控制的追求目标.

这样,通过空间矢量变换,我们将逆变器的三相输出的3个标量的控制问题,转化为一个矢量的控制问题.

如下图,是一个典型的2电平三相电压源逆变器电路原理图:

img

定义开关量\(s_a,s_b,s_c,s_a',s_b',s_c'\)(值为0或1)表示6个功率开关器件的开关状态.

1)当\(s_a,s_b\space or \space s_c=1\)时,对应逆变器上桥臂开关器件导通,下桥臂开关关断(即\(s_a',s_b'\space or \space s_c=0\));

2)当\(s_a,s_b\space or \space s_c=0\)时,对应逆变器上桥臂开关器件关断,下桥臂开关导通(即\(s_a',s_b'\space or \space s_c=1\));

对于\(x=a,b,c\)三相开关,

\[s_x=\begin{cases} 1, & \text{上桥臂导通,下桥臂关断} \\[6pt] 0, & \text{上桥臂关断,下桥臂导通} \end{cases} \]

于是,相电压\(u_x=s_x\cdot U_{dc},x=a,b,c\)\(U_{dc}\)是直流母线电压)

所以,空间电压矢量

\[\mathbf{U}_{\mathrm{out}} = \frac{2}{3}(u_a+au_b+a^2u_c)=\frac{2}{3}\frac{3}{2}U_me^{j\omega t}=U_me^{j\omega t} \]

其中,\(a=e^{j\frac{2}{3}\omega t}, a^2=e^{-j\frac{2}{3}\omega t}(or \space e^{j\frac{4}{3}\omega t})\)

注:加入系数\(2/3\)对应等幅值Clark变换,为了确保变换前后幅值不变.

\(u_x=s_x\cdot U_{dc}\) 代入上式,

\[\tag{10} \begin{aligned} \mathbf{U}_{\mathrm{out}} &= \frac{2}{3}(u_a+au_b+a^2u_c) \\ &= \frac{2}{3}U_{dc}(s_a+as_b+a^2s_c) \\ &= \frac{2}{3}U_{dc}\left(s_a + s_b e^{j\frac{2}{3}\pi} + s_c e^{-j\frac{2}{3}\pi}\right) \end{aligned} \]

交流侧相电压\(V_{AN},V_{BN},V_{CN}与开关函数之间关系\)

\[\tag{11} \begin{cases} V_{AN} = \dfrac{U_{\mathrm{dc}}}{3}(2s_a - s_b - s_c) \\[12pt] V_{BN} = \dfrac{U_{\mathrm{dc}}}{3}(2s_b - s_a - s_c) \\[12pt] V_{CN} = \dfrac{U_{\mathrm{dc}}}{3}(2s_c - s_a - s_b) \end{cases} \]

下面,我们推导(11).

对于三相逆变器对中性点 N 的相电压,我们有以下假设:

  • 三相负载星形连接,中性点为 N
  • 三相平衡,即\(V_{AN}+V_{BN}+V_{CN}=0\)
  • 开关函数 \(s_x\in \{0,1\}\)

以直流负母线为参考,各相端点电压:

\[V_a=s_aU_{dc},V_b=s_bU_{dc},V_c=s_cU_{dc} \]

中性点电压:

\[V_{NO}=\frac{V_a+V_b+V_c}{3}=\frac{1}{3}U_{dc}(s_a+s_b+s_c) \]

对中性点的相电压:

\[V_{AN}=V_a-V_{NO}=s_aU_{dc}-\frac{1}{3}U_{dc}(s_a+s_b+s_c)=\frac{U_{dc}}{3}(2s_a-s_b-s_c) \]

同理,可得,

\[V_{BN} = \dfrac{U_{\mathrm{dc}}}{3}(2s_b - s_a - s_c)\\ V_{CN} = \dfrac{U_{\mathrm{dc}}}{3}(2s_c - s_a - s_b) \]

验证三相平衡:

\[V_{AN}+V_{BN}+V_{CN}=\dfrac{U_{\mathrm{dc}}}{3}[(2s_a - s_b - s_c)+(2s_b - s_a - s_c)+(2s_c - s_a - s_b)]=0 \]

将8中开关状态组合代入(11),可得相电压\(V_{AN},V_{BN},V_{CN}\),线电压\(V_{ab},V_{bc},V_{ca}\),及\(\mathbf{U}_{\mathrm{out}}\)关系,如下表:

开关组合与电压的关系表

\(S_a\) \(S_b\) \(S_c\) \(V_{AN}\) \(V_{BN}\) \(V_{CN}\) \(V_{ab}\) \(V_{bc}\) \(V_{ca}\) \(U_{\mathrm{out}}\)
0 0 0 \(0\) \(0\) \(0\) \(0\) \(0\) \(0\) \(0\)
1 0 0 \(\frac{2U_{\mathrm{dc}}}{3}\) \(-\frac{U_{\mathrm{dc}}}{3}\) \(-\frac{U_{\mathrm{dc}}}{3}\) \(U_{\mathrm{dc}}\) \(0\) \(-U_{\mathrm{dc}}\) \(\frac{2}{3}U_{\mathrm{dc}}\)
0 1 0 \(-\frac{U_{\mathrm{dc}}}{3}\) \(\frac{2U_{\mathrm{dc}}}{3}\) \(-\frac{U_{\mathrm{dc}}}{3}\) \(-U_{\mathrm{dc}}\) \(U_{\mathrm{dc}}\) \(0\) \(\frac{2}{3}U_{\mathrm{dc}}\mathrm{e}^{\mathrm{j}\frac{2\pi}{3}}\)
1 1 0 \(\frac{U_{\mathrm{dc}}}{3}\) \(\frac{U_{\mathrm{dc}}}{3}\) \(-\frac{2U_{\mathrm{dc}}}{3}\) \(0\) \(U_{\mathrm{dc}}\) \(-U_{\mathrm{dc}}\) \(\frac{2}{3}U_{\mathrm{dc}}\mathrm{e}^{\mathrm{j}\frac{\pi}{3}}\)
0 0 1 \(-\frac{U_{\mathrm{dc}}}{3}\) \(-\frac{U_{\mathrm{dc}}}{3}\) \(\frac{2U_{\mathrm{dc}}}{3}\) \(0\) \(-U_{\mathrm{dc}}\) \(U_{\mathrm{dc}}\) \(\frac{2}{3}U_{\mathrm{dc}}\mathrm{e}^{\mathrm{j}\frac{4\pi}{3}}\)
1 0 1 \(\frac{U_{\mathrm{dc}}}{3}\) \(-\frac{2U_{\mathrm{dc}}}{3}\) \(\frac{U_{\mathrm{dc}}}{3}\) \(U_{\mathrm{dc}}\) \(-U_{\mathrm{dc}}\) \(0\) \(\frac{2}{3}U_{\mathrm{dc}}\mathrm{e}^{\mathrm{j}\frac{5\pi}{3}}\)
0 1 1 \(-\frac{2U_{\mathrm{dc}}}{3}\) \(\frac{U_{\mathrm{dc}}}{3}\) \(\frac{U_{\mathrm{dc}}}{3}\) \(-U_{\mathrm{dc}}\) \(0\) \(U_{\mathrm{dc}}\) \(\frac{2}{3}U_{\mathrm{dc}}\mathrm{e}^{\mathrm{j}\pi}\)
1 1 1 \(0\) \(0\) \(0\) \(0\) \(0\) \(0\) \(0\)

可看出,8种开关组合的电压空间中,有6个非零矢量\(\mathbf{U}_1(001),\mathbf{U}_2(010),\mathbf{U}_3(011),\mathbf{U}_4(100),\mathbf{U}_5(101),\mathbf{U}_6(110)\),2个零矢量 \(\mathbf{U}_0(000), \mathbf{U}_7(111)\).

这8个矢量,称为基本空间电压矢量. 将其映射至如下图所示复平面中,可得如下所示电压空间矢量图. 它们将复平面分成了6个区,称为扇区.

img

SVPWM算法合成原理

SVPWM理论基础:在一个开关周期\(T_s\)内,通过对基本电压矢量加以组合,使其平均值与给定电压矢量相等 —— 平均值等效原理.

如上图,在某个时刻,电压空间矢量\(\mathbf{U}_{out}\)旋转到某个区域,可由组成该区域的2个相邻的非零矢量和零矢量,在时间上的不同组合得到.

以扇区I为例,空间矢量合成示意图:

img

根据平均值等效原理,

\[\tag{12} \begin{cases} T_s \mathbf{U}_{\mathrm{out}} = T_4 \mathbf{U}_4 + T_6 \mathbf{U}_6 + T_0 (\mathbf{U}_0 \text{ 或 } \mathbf{U}_7) \\[10pt] T_4 + T_6 + T_0 = T_s \end{cases} \]

\[\tag{14} \begin{cases} \mathbf{U}_1 = \dfrac{T_4}{T_s}\mathbf{U}_4 \\[12pt] \mathbf{U}_2 = \dfrac{T_6}{T_s}\mathbf{U}_6 \end{cases} \]

其中,\(T_4,T_6,T_0\) 分别表示\(\mathbf{U}_4,\mathbf{U}_6\)、零矢量\(\mathbf{U}_0(\mathbf{U}_7)\)的作用时间,\(\mathbf{U}_{1}, \mathbf{U}_{2}\) 是电压空间矢量 \(\mathbf{U}_{out}\) 沿 \(\mathbf{U}_4,\mathbf{U}_6\)方向的分量.

要合成所需电压空间矢量,因为基本空间电压矢量已知,所以只需要求其作用时间\(T_4,T_6,T_0\)即可. 在上图\(\mathbf{U}_{out}T_4T_6\)组成的三角形中,应用正弦定理:

\[\tag{15} \frac{|\mathbf{U}_{\mathrm{out}}|}{\sin\dfrac{2}{3}\pi} = \frac{|\mathbf{U}_1|}{\sin\left(\dfrac{\pi}{3}-\theta\right)} = \frac{|\mathbf{U}_2|}{\sin\theta} \]

其中,\(\theta\) 合成矢量和主矢量的夹角.

可得,

\[|\mathbf{U}_1| = \frac{U_m \cdot \sin\left(\dfrac{\pi}{3}-\theta\right)}{\sin\dfrac{2\pi}{3}} = \frac{2U_m}{\sqrt{3}}\sin\left(\frac{\pi}{3}-\theta\right)\\ |\mathbf{U}_2| = \frac{U_m \cdot \sin\theta}{\sin\dfrac{2\pi}{3}} = \frac{2U_m}{\sqrt{3}}\sin\theta \]

又由合成空间矢量,

\[\begin{aligned} \mathbf{U}_4(100) &= \frac{2}{3}\left(V_{AN} + a \cdot V_{BN} + a^2 \cdot V_{CN}\right) = \frac{2}{3}\left(-U_{\mathrm{dc}}\right) = -\frac{2U_{\mathrm{dc}}}{3}\\ \mathbf{U}_6(110) &= \frac{2}{3}\left(V_{AN} + a \cdot V_{BN} + a^2 \cdot V_{CN}\right) = -\frac{2U_{\mathrm{dc}}}{3}a = -\frac{2U_{\mathrm{dc}}}{3}e^{j\frac{2}{3}\pi} = \frac{2U_{\mathrm{dc}}}{3}e^{-j\frac{1}{3}\pi} \end{aligned} \]

所以,

\[|\mathbf{U}_4(100)|=|\mathbf{U}_6(110)| = \frac{2}{3}U_{dc} \]

因为空间电压矢量的变换是Clark等幅值变换,所以\(|\mathbf{U}_{out}| = U_m\)

将(14), \(|\mathbf{U}_4(100)|=|\mathbf{U}_6(110)| = \frac{2}{3}U_{dc}, |\mathbf{U}_{out}| = U_m\)代入(15),得

\[\tag{16} \begin{cases} T_4 = \sqrt{3}\,\dfrac{U_m}{U_{\mathrm{dc}}}T_s\sin\left(\dfrac{\pi}{3}-\theta\right) \\[16pt] T_6 = \sqrt{3}\,\dfrac{U_m}{U_{\mathrm{dc}}}T_s\sin\theta \\[16pt] T_0 = T_7 = \dfrac{1}{2}\left(T_s - T_4 - T_6\right) \end{cases} \]

如果记\(T_x,T_y\)分别为先作用基础矢量时长,后作用基础矢量时长,零矢量作用时长\(T_{zero}\),那么,

\[\begin{cases} T_x = \sqrt{3}\,\dfrac{U_m}{U_{\mathrm{dc}}}T_s\sin\left(\dfrac{\pi}{3}-\theta\right) \\[16pt] T_y = \sqrt{3}\,\dfrac{U_m}{U_{\mathrm{dc}}}T_s\sin\theta \\[16pt] T_{zero} = T_0 + T_7 = T_s - T_x - T_y \end{cases} \]

定义SVPWM调制比为

\[\tag{17} M=\frac{\sqrt 3U_m}{U_{dc}} \]

在SVPWM调制中,要使得合成矢量在线线性区域内调制(过程满足线性叠加关系,即输出电压矢量与基本矢量成线性关系),要满足\(|\mathbf{U}_{out}| = U_m \le 2U_{dc}/3\),即\(M_{max}=\frac{\sqrt 3U_m}{U_{dc}}=\frac{2}{3}=1.1547\)

为什么要满足\(|\mathbf{U}_{out}| = U_m \le 2U_{dc}/3\)

因为6个非零矢量\(|\mathbf{U}_{1}|=|\mathbf{U}_{2}|=...=|\mathbf{U}_{6}|=\frac{2}{3}U_{dc}\),目标合成矢量\(|\mathbf{U}_{out}|\)是通过2个相邻非零矢量(基于时间)线性(插值)合成的,而时间不可能是负值,所以\(|\mathbf{U}_{out}|\)必须在电压空间矢量图六边形外接圆圆内.

基于软件模式合成

根据式(12)(16),

\[T_s \mathbf{U}_{\mathrm{out}} = T_x \mathbf{U}_x + T_y \mathbf{U}_y + T_{zero} (\mathbf{U}_0 \text{ 或 } \mathbf{U}_7) \]

现在已知\(T_s,\mathbf{U}_x,\mathbf{U}_x\),已求出\(T_x,T_y,T_{zero}\),如何产生实际的脉宽调制波形呢?

目前,SVPWM的合成有2种方式:
1)基于软件模式的合成,即七段式SVPWM算法;
2)基于硬件模式的合成,即五段式SVPWM算法.

七段式SVPWM,基本矢量作用顺序分配原则:每次开关状态转换时,只改变其中一相的开关状态,且对零矢量在时间上平均分配,以使得产生的PWM对称,从而降低PWM的谐波分量.

注意:\(T_s\) 就是PWM波形周期,大小取决于PWM波频率,如16KHz PWM波形,那么\(T_s=62.5us\)

根据\(\mathbf{U}_\mathrm{out}\)所在不同位置(区域),我们能得到一个开关切换顺序对照关系,如下表:

img
img

如扇区Ⅰ,在时间\(T_s\)内,电压向量出现先后顺序\(0\to 4\to 6\to 7\to 7\to 6\to 4\to 0\)\(\mathbf{U}_0,\mathbf{U}_4,\mathbf{U}_6,\mathbf{U}_7,\mathbf{U}_7,\mathbf{U}_6,\mathbf{U}_4,\mathbf{U}_0\)),三角波形及开关顺序见右边波形图即可.

基于硬件模式的合成

七段式SVPWM,PWM波形对称,谐波含量较小,但每个开关周期有6次开关切换. 为了减少开关次数,可以采用基于硬件模式的合成方式,即五段式SVPWM:每个扇区有一相开关器件的状态不变,使得每个开关周期只有3次开关切换,但会增大电流谐波含量.

\(\mathbf{U}_{\mathrm{out}}\) 所在的位置和开关切换顺序如下表:

img

img

SVPWM算法实现

要调制SVPWM信号,首先要知道参考电压矢量\(\mathbf{U}_{\mathrm{out}}\)所在扇区,然后用扇区所在相邻的基本电压矢量、零矢量来合成参考电压矢量.

参考电压矢量扇区判断

\(u_α,u_β\)表示参考电压矢量\(\mathbf{U}_{\mathrm{out}}\)在α、β轴的分量,定义\(U_{ref1},U_{ref2},U_{ref3}\) 3个变量:

\[\tag{18} \begin{cases} U_{\mathrm{ref1}} = u_\beta \\[10pt] U_{\mathrm{ref2}} = \dfrac{\sqrt{3}}{2}u_\alpha - \dfrac{1}{2}u_\beta \\[12pt] U_{\mathrm{ref3}} = -\dfrac{\sqrt{3}}{2}u_\alpha - \dfrac{1}{2}u_\beta \end{cases} \]

再定义3个三个布尔标志变量\(A,B,C\),分别表示目标矢量在三个方向上的投影正负,用于辅助判断\(\mathbf{U}_{\mathrm{out}}\)所在扇区. 这三个方向是 复平面上互差 60° 的三条分界线,分别对应 90° (Im 轴)、30° 和 150° 方向.

三个方向的具体定义:

变量 方向 角度 物理意义
\(U_{\mathrm{ref1}} = u_\beta\) Im 轴(虚轴) \(90°\) / \(-90°\) 上下半平面分界线
\(U_{\mathrm{ref2}} = \frac{\sqrt{3}}{2}u_\alpha - \frac{1}{2}u_\beta\) \(30°\) 方向 \(30°\) / \(210°\) 扇区 I/II 和 IV/V 的分界线
\(U_{\mathrm{ref3}} = -\frac{\sqrt{3}}{2}u_\alpha - \frac{1}{2}u_\beta\) \(150°\) 方向 \(150°\) / \(330°\) 扇区 II/III 和 V/VI 的分界线

有,
如果\(U_{ref1}>0\),则A=1,否则A=0;
如果\(U_{ref2}>0\),则B=1,否则B=0;
如果\(U_{ref3}>0\),则C=1,否则C=0;

\(N=4C+2B+A\)(形如\(N=0bCBA\)),则可得目标矢量与扇区的关系:

扇区 C B A N=4C+2B+A
0 1 1 3
0 0 1 1
1 0 1 5
1 0 0 4
1 1 0 6
0 1 0 2

如果\(\mathbf{U}_{\mathrm{out}}\)的角度(与主矢量,即α轴/\(\mathbf{U}_{\mathrm{4}}(100)\)夹角)确定,那么可根据下图划分扇区:

img

例如,\(\mathbf{U}_{\mathrm{out}}\)角度为\(π/2\)时,则位于扇区Ⅱ.

非零矢量、零矢量作用时间计算

img

由上图,可知,

\[\tag{19} \begin{cases} u_\alpha = \displaystyle\frac{T_4}{T_s}\left|\boldsymbol{U}_4\right| + \displaystyle\frac{T_6}{T_s}\left|\boldsymbol{U}_6\right|\cos\frac{\pi}{3}\\[6pt] u_\beta = \displaystyle\frac{T_6}{T_s}\left|\boldsymbol{U}_6\right|\sin\frac{\pi}{3} \end{cases} \]

可以解出:

\[\tag{20} \begin{cases} T_4 = \displaystyle\frac{\sqrt{3}\,T_s}{2U_\mathrm{dc}}\left(\sqrt{3}\,u_\alpha - u_\beta\right)\\[8pt] T_6 = \displaystyle\frac{\sqrt{3}\,T_s}{2U_\mathrm{dc}}\,u_\beta \end{cases} \]

同理,可得出其他扇区各矢量作用时间.

扇区 角度范围(与主矢量) 相邻矢量 Tx Ty
I \(0° \sim 60°\) \(\mathbf{U}_4\) (100), \(\mathbf{U}_6\) (110) \(T_4 = \frac{\sqrt{3}T_s}{U_{\mathrm{dc}}}\left(\frac{\sqrt{3}}{2}U_\alpha - \frac{1}{2}U_\beta\right)\) \(T_6 = \frac{\sqrt{3}T_s}{U_{\mathrm{dc}}}U_\beta\)
II \(60° \sim 120°\) \(\mathbf{U}_6\) (110), \(\mathbf{U}_2\) (010) \(T_6 = \frac{\sqrt{3}T_s}{U_{\mathrm{dc}}}\left(\frac{\sqrt{3}}{2}U_\alpha + \frac{1}{2}U_\beta\right)\) \(T_2 = \frac{\sqrt{3}T_s}{U_{\mathrm{dc}}}\left(-\frac{\sqrt{3}}{2}U_\alpha + \frac{1}{2}U_\beta\right)\)
III \(120° \sim 180°\) \(\mathbf{U}_2\) (010), \(\mathbf{U}_3\) (011) \(T_2 = \frac{\sqrt{3}T_s}{U_{\mathrm{dc}}}U_\beta\) \(T_3 = \frac{\sqrt{3}T_s}{U_{\mathrm{dc}}}\left(-\frac{\sqrt{3}}{2}U_\alpha + \frac{1}{2}U_\beta\right)\)
IV \(180° \sim 240°\) \(\mathbf{U}_3\) (011), \(\mathbf{U}_1\) (001) \(T_3 = \frac{\sqrt{3}T_s}{U_{\mathrm{dc}}}\left(-\frac{\sqrt{3}}{2}U_\alpha - \frac{1}{2}U_\beta\right)\) \(T_1 = \frac{\sqrt{3}T_s}{U_{\mathrm{dc}}}U_\beta\)
V \(240° \sim 300°\) \(\mathbf{U}_1\) (001), \(\mathbf{U}_5\) (101) \(T_1 = \frac{\sqrt{3}T_s}{U_{\mathrm{dc}}}\left(-\frac{\sqrt{3}}{2}U_\alpha + \frac{1}{2}U_\beta\right)\) \(T_5 = \frac{\sqrt{3}T_s}{U_{\mathrm{dc}}}\left(\frac{\sqrt{3}}{2}U_\alpha + \frac{1}{2}U_\beta\right)\)
VI \(300° \sim 360°\) \(\mathbf{U}_5\) (101), \(\mathbf{U}_4\) (100) \(T_5 = \frac{\sqrt{3}T_s}{U_{\mathrm{dc}}}\left(\frac{\sqrt{3}}{2}U_\alpha + \frac{1}{2}U_\beta\right)\) \(T_4 = \frac{\sqrt{3}T_s}{U_{\mathrm{dc}}}\left(-\frac{\sqrt{3}}{2}U_\alpha + \frac{1}{2}U_\beta\right)\)

为了简化扇区判断计算量,我们提取公共因子\(K=\frac{\sqrt 3T_s}{U_{dc}}\)

定义:

\[\tag{21} \begin{cases} X = K \cdot U_\beta \\[8pt] Y = K \cdot \left(\frac{\sqrt{3}}{2}U_\alpha + \frac{1}{2}U_\beta\right) \\[8pt] Z = K \cdot \left(-\frac{\sqrt{3}}{2}U_\alpha + \frac{1}{2}U_\beta\right) \end{cases} \]

那么,各扇区\(T_x,T_y\)用X,Y,Z表示:

扇区 N编号 电角度范围 C B A Tx(先导通) Ty(后导通) 有效矢量 \((T_x, T_y)\)
I 3 \(0° \sim 60°\) 011 \(-Z\) \(X\) \((\mathbf{U}_4, \mathbf{U}_6)\)
II 1 \(60° \sim 120°\) 001 \(Z\) \(Y\) \((\mathbf{U}_6, \mathbf{U}_2)\)
III 5 \(120° \sim 180°\) 101 \(X\) \(-Y\) \((\mathbf{U}_2, \mathbf{U}_3)\)
IV 4 \(180° \sim 240°\) 100 \(-X\) \(Z\) \((\mathbf{U}_3, \mathbf{U}_1)\)
V 6 \(240° \sim 300°\) 110 \(-Y\) \(-Z\) \((\mathbf{U}_1, \mathbf{U}_5)\)
VI 2 \(300° \sim 360°\) 010 \(Y\) \(-X\) \((\mathbf{U}_5, \mathbf{U}_4)\)

零矢量作用时间:

\[T_{zero}=T_s-T_x-T_y,T_0=T_7=\frac{T_{zero}}{2} \]

其中,\(T_s\)是一个PWM开关周期,即PWM频率.

如果算出来\(T_x+T_y>T_s\),则需要进行过调制处理:

\[\tag{22} \begin{cases} T_x = \dfrac{T_x}{T_x + T_y}T_s \\[12pt] T_y = \dfrac{T_y}{T_x + T_y}T_s \end{cases} \]

扇区矢量切换点的确定

扇区矢量切换点,我更愿意称之为 PWM 周期内三相桥臂的开关切换时刻,这是一个时间概念,而非空间概念. 当然,我们并不会在程序上通过某种中断,来改变PWM状态,进而改变三相桥臂的开关状态,而是事先计算好中心对称PWM占空比(PWM频率固定,如16KHz,20KHz),在程序运行时,PWM自动切换状态.

先定义:

\[\tag{23} \begin{cases} T_a = \dfrac{T_s - T_x - T_y}{4}\\[6pt] T_b = T_a + \dfrac{T_x}{2}\\[6pt] T_c = T_b + \dfrac{T_y}{2} \end{cases} \]

其中,必然满足\(T_a<T_b<T_c\).

七段式SVPWM中,一个PWM周期\(T_s\)被分割成7段(7个状态):

\[T_a(000) \rightarrow \frac{T_x}{2} \rightarrow \frac{T_y}{2} \rightarrow T_a(111) \rightarrow \frac{T_y}{2} \rightarrow \frac{T_x}{2} \rightarrow T_a(000) \]

\(T_a,T_b,T_c\) 分别表示一个PWM周期内,

  • \(T_a\):前后零矢量000/111单段时长;
  • \(T_b=T_a+T_x/2\):第一个矢量结束的分界点;
  • \(T_c=T_b+T_y/2\):第二个矢量结束的分界点.

我们以扇区Ⅰ开关切换顺序、三相波形图为例,

img

注意:图中并没有画出首尾\(U_0(000)\),其作用时长应该与\(U_7(111)\)相同,即 \(T_0=T_7=\frac{1}{2}(T_s-T_x-T_y)\).

完整的七段开关状态时序:

\[\underbrace{U_0(000)}_{T_a} \rightarrow \frac{T_x}{2}(U_4) \rightarrow \frac{T_y}{2}(U_6) \rightarrow \underbrace{U_7(111)}_{2T_a} \rightarrow \frac{T_y}{2}(U_6) \rightarrow \frac{T_x}{2}(U_4) \rightarrow \underbrace{U_0(000)}_{T_a} \]

因为我们有三相,每相都是输出中心对称PWM波形,因此,我们只需要设置3个值\(T_{cm1},T_{cm2},T_{cm3}\),分别对应每一相开关切换时间点即可. 每个\(T_{cm1},T_{cm2},T_{cm3}\),都对应PWM模块的比较寄存器CCRx. 如此,每一相都在一个PWM周期内翻转2次.

例如,以MCU STM32F407的TIM1(输出三相中心对称互补PWM)为例,
1)对于A相,设当前时间t,有
\(t < T_{cm1}\)时,对应\(CNT < CCR1\),PWM输出低电平;
\(t > T_{cm1}\)时,对应\(CNT > CCR1\),PWM输出高电平;
也就是说,不过CNT增加到CCR1,还是减少到CCR1,都会产生1次PWM波形翻转.

2)对于B相、C相,同样地,\(T_{cm2},T_{cm3}\)会产生类似的PWM翻转效果.

于是,我们只需要根据状态切换点\(T_{cm1},T_{cm2},T_{cm3}\),换算出对应PWM比较寄存器的值,就能在一个PWM周期内,让每一相产生1次翻转效果,从而实现三相7段式SVPWM.

如何求\(T_{cm1},T_{cm2},T_{cm3}\)呢?

我们总结如下表:

开关状态时间切换点\(T_{cm1},T_{cm2},T_{cm3}\)

\(N\) 1 2 3 4 5 6
\(T_{\mathrm{cm1}}\) \(T_b\) \(T_a\) \(T_a\) \(T_c\) \(T_c\) \(T_b\)
\(T_{\mathrm{cm2}}\) \(T_a\) \(T_c\) \(T_b\) \(T_b\) \(T_a\) \(T_c\)
\(T_{\mathrm{cm3}}\) \(T_c\) \(T_b\) \(T_c\) \(T_a\) \(T_b\) \(T_a\)

计算出\(T_a,T_b,T_c\)后,我们根据扇区查表,就能得\(T_{cm1},T_{cm2},T_{cm3}\),进而得到每一相PWM占空比(比较寄存器).

SVPWM建模、仿真

基于Simulink仿真建模

建立七段式SVPWM仿真模块图,验证SVPWM.

参数设置:\(u_α=200cos 100πt, u_β=200sin100πt\),PWM开关周期\(T_{pwm}=0.0002s\),直流侧电压\(U_{dc}=700V\),仿真算法采用变步长ode23tb算法,最大仿真步长(Max Step Size)设置为0.000 01,仿真时长0.05(停止时间),其余变量保持初值不变.

  • SVPWM仿真模型

img

\(U_α, U_β\)配置:

img

扇区N的判断:

img

中间变量X、Y、Z的计算:

img

T1(Tx)、T2(Ty)的计算(参照公式(21)对应的表格):

img

Repeating Sequence(锯齿波生成器):

主要用于生成锯齿波,模拟PWM生成机制. 它相当于载波,而tcm1,2,3 相当于PWM内部比较寄存器CCR1,2,3,当tcm1,2,3 > 对应比较寄存器时,对应的相输出高电平;< 对应比较寄存器时,对应的相输出低电平.

锯齿波的配置,要根据生成的PWM波形特点来设置(中心对称、频率/周期Ts).

img

切换时间点\(T_{cm1}, T_{cm2}, T_{cm3}\)的计算:

img

  • 仿真结果

由于旋转时,扇区交替顺序:Ⅰ,Ⅱ,Ⅲ,Ⅳ,Ⅴ,Ⅵ,对应N值交替顺序:3,1,5,4,6,2. 这与仿真结果示波器N相同:

img

SVPWM得到的调制波(Tcm123)呈现马鞍形,有利于提高直流电压利用率,有效抑制谐波:

img

基于s函数的仿真建模

  • SVPWM仿真模型1

基于纯Simulink模型进行仿真建模的过程繁琐,不利于检查模型正确性,而有另一种方法:基于s函数仿真建模. 这种方法更加灵活,实现的效果与Simulink方法完全一致.

基于 s 函量立方法的仿真模型:

使用matlab function,由\(V_α, V_β, U_{dc}, T_s\) 计算得到\(T_{cm}123\). 后半部由Tcm123调制出SVWPM波形过程还是复用之前模型.

img

SVPWM s函数内容:

function [Tcm1, Tcm2, Tcm3, sector] = fcn(Valpha, Vbeta,Udc,Tpwm)
%初始化
sector = 0;
Tcm1 = 0;
Tcm2 = 0;
Tcm3 = 0;

% 参数描述
% 公式(18)
Vref1 = Vbeta;
Vref2 = (sqrt(3) * Valpha - Vbeta) / 2;
Vref3 = (-sqrt(3) * Valpha - Vbeta) / 2;

% 扇区计算
if (Vref1 > 0)
    sector = 1;
end
if (Vref2 > 0)
    sector = sector + 2;
end
if (Vref3 > 0)
    sector = sector + 4;
end

% XYZ计算
% 式(21)
X = sqrt(3) * Vbeta * Tpwm / Udc;
Y = Tpwm/Udc * (3/2 * Valpha + sqrt(3)/2*Vbeta);
Z = Tpwm/Udc * (-3/2 * Valpha + sqrt(3)/2*Vbeta);

% 占空比计算
switch(sector)
    case 1
        T1 = Z; T2 = Y;
    case 2
        T1 = Y; T2 = -X;
    case 3
        T1 = -Z; T2 = X;
    case 4
        T1 = -X; T2 = Z;
    case 5
        T1 = X; T2 = -Y;
    otherwise
        T1 = -Y; T2 = -Z;
end

% 过调制处理
if T1 + T2 > Tpwm
    T1 = T1/(T1+T2);
    T2 = T2/(T1+T2);
end

ta = (Tpwm - (T1 + T2)) / 4.0;
tb = ta + T1/2;
tc = tb + T2/2;

% 计算Tcm123
switch(sector)
    case 1
        Tcm1 = tb;
        Tcm2 = ta;
        Tcm3 = tc;
    case 2
        Tcm1 = ta;
        Tcm2 = tb;
        Tcm3 = tc;
    case 3
        Tcm1 = ta;
        Tcm2 = tb;
        Tcm3 = tc;
    case 4
        Tcm1 = tc;
        Tcm2 = tb;
        Tcm3 = ta;
    case 5
        Tcm1 = tc;
        Tcm2 = ta;
        Tcm3 = tb;
    case 6
        Tcm1 = tb;
        Tcm2 = tc;
        Tcm3 = ta;
end
end
  • 仿真结果

扇区计算结果:

img

切换时间点Tcm123计算结果:

img

Ua,Ub,Uc计算结果:

img

  • s函数仿真模型2

我们还可以用另一种基于s函数的方法,对整个模型进一步简化,能直接输出PWM波形(Ua,Ub,Uc):

img

注意:需要新建全局变量Vdc=700,在模型属性> 回调> InitFcn* 中初始化.

这里的Cartesian to Polar模块,将笛卡尔坐标转化为极坐标,即求出\((U_α, U_β)\)对应电压幅值、电角度\((U_m,θ)\).

由sa,sb,sc计算出Ua, Ub, Uc的模型(Fcn模块):

img

MATLAB Fcn内容:

主要作用是根据电压幅值、电角度、PWM采样周期,求出ta, tb(即文中tx, ty),进而求出sa, sb, sc(三相开关状态).

% u(1): 参考电压幅值
% u(2): 参考电压的角度
% u(3): PWM的采样周期
% ta相当于文中tx, tb相当于文中ty
function sf  = svpwm(u)
% 初始化
sa = 0;
sb = 0;
sc = 0;
ts = 0.0002;
vdc = u(4);
peak_phase_max = vdc / sqrt(3);
x = u(2);
y = u(3);
mag = (u(1)/peak_phase_max) * ts;

% 扇区Ⅰ
if (x > 0) && (x < pi/3)
    ta = mag * sin(pi/3 - x);
    tb = mag * sin(x);
    t0 = (ts - ta - tb);
    t1 = [t0/4 ta/2 tb/2 t0/2 tb/2 ta/2 t0/4];
    t1 = cumsum(t1); % 累加和数组
    v1 = [0 1 1 1 1 1 0];
    v2 = [0 0 1 1 1 0 0];
    v3 = [0 0 0 1 0 0 0];

    for j = 1:7
        if (y < t1(j))
            break
        end
    end

    sa = v1(j);
    sb = v2(j);
    sc = v3(j);
end

% 扇区Ⅱ
if (x >= pi/3) && (x < 2 * pi/3)
    adv = x - pi/3;
    tb = mag * sin(pi/3 - adv);
    ta = mag * sin(adv);
    t0 = (ts - ta - tb);
    t1 = [t0/4 ta/2 tb/2 t0/2 tb/2 ta/2 t0/4];
    t1 = cumsum(t1); % 累加和数组
    v1 = [0 0 1 1 1 0 0];
    v2 = [0 1 1 1 1 1 0];
    v3 = [0 0 0 1 0 0 0];

    for j = 1:7
        if (y < t1(j))
            break
        end
    end

    sa = v1(j);
    sb = v2(j);
    sc = v3(j);
end

% 扇区Ⅲ
if (x >= 2*pi/3) && (x < pi)
    adv = x - 2 * pi/3;
    ta = mag * sin(pi/3 - adv);
    tb = mag * sin(adv);
    t0 = (ts - ta - tb);
    t1 = [t0/4 ta/2 tb/2 t0/2 tb/2 ta/2 t0/4];
    t1 = cumsum(t1); % 累加和数组
    v1 = [0 0 0 1 0 0 0];
    v2 = [0 1 1 1 1 1 0];
    v3 = [0 0 1 1 1 0 0];

    for j = 1:7
        if (y<t1(j))
            break
        end
    end

    sa = v1(j);
    sb = v2(j);
    sc = v3(j);
end

% 扇区Ⅳ
if (x >= -pi) && (x < -2*pi/3)
    adv = x + pi;
    tb = mag * sin(pi/3 - adv);
    ta = mag * sin(adv);
    t0 = (ts - ta - tb);
    t1 = [t0/4 ta/2 tb/2 t0/2 tb/2 ta/2 t0/4];
    t1 = cumsum(t1); % 累加和数组
    v1 = [0 0 0 1 0 0 0];
    v2 = [0 0 1 1 1 0 0];
    v3 = [0 1 1 1 1 1 0];

    for j = 1:7
        if (y<t1(j))
            break
        end
    end

    sa = v1(j);
    sb = v2(j);
    sc = v3(j);
end

% 扇区Ⅴ
if (x >= -2*pi/3) && (x < -pi/3)
    adv = x + 2 * pi/3;
    ta = mag * sin(pi/3 - adv);
    tb = mag * sin(adv);
    t0 = (ts - ta - tb);
    t1 = [t0/4 ta/2 tb/2 t0/2 tb/2 ta/2 t0/4];
    t1 = cumsum(t1); % 累加和数组
    v1 = [0 0 1 1 1 0 0];
    v2 = [0 0 0 1 0 0 0];
    v3 = [0 1 1 1 1 1 0];

    for j = 1:7
        if (y<t1(j))
            break
        end
    end

    sa = v1(j);
    sb = v2(j);
    sc = v3(j);
end

% 扇区Ⅵ
if (x >= -pi/3) && (x < 0)
    adv = x + pi/3;
    tb = mag * sin(pi/3 - adv);
    ta = mag * sin(adv);
    t0 = (ts - ta - tb);
    t1 = [t0/4 ta/2 tb/2 t0/2 tb/2 ta/2 t0/4];
    t1 = cumsum(t1); % 累加和数组
    v1 = [0 1 1 1 1 1 0];
    v2 = [0 0 0 1 0 0 0];
    v3 = [0 0 1 1 1 0 0];

    for j = 1:7
        if (y<t1(j))
            break
        end
    end

    sa = v1(j);
    sb = v2(j);
    sc = v3(j);
end

sf = [sa,sb,sc];
end

参考

袁雷. 北京航天航空大学出版社. 现代永磁同步电机控制原理及MAIL_A_Q仿真

posted @ 2026-06-09 09:46  明明1109  阅读(8)  评论(0)    收藏  举报