以上课时候学过好几次这个内容,但是一直只理解了概念。这次动手实现一下。本文搭了一个SVPWM调制的matlab仿真模型,之后可能拿来做下逆变器和整流器的闭环控制。然后可能拓展一下三电平之类的。
理论部分
理论部分只提供下大致思路,具体还是看教材(例如《电力电子系统建模及控制》,虽然可能主要是从国外教材翻译过来的):
-
Clarke变换:3相交流信号,变换到αβ静止坐标系,成为在这个坐标系上的一个旋转矢量。
-
三相电压源(VSI)逆变器有三个半桥模块,每个半桥有2种开关状态,因此一共有8种矢量。其中,
000
和111
为零矢量,其他6个矢量,在进行Clarke变换后,变成在αβ静止坐标系上的6个静止矢量,矢量的长度为2/3*Vdc
。- 例如,当Q1、Q5、Q6开启时,根据电阻分压,可以看到输出电压为:
[
2
3
V
d
c
−
1
3
V
d
c
−
1
3
V
d
c
]
T
[\frac{2}{3}Vdc \quad -\frac{1}{3}Vdc \quad -\frac{1}{3}Vdc]^T
[32Vdc−31Vdc−31Vdc]T,经过Clarke变换后,电压为:
[
2
3
V
d
c
0
]
[\frac{2}{3}Vdc \quad 0]
[32Vdc0]。矢量的模为
2/3*Vdc
。
具体可以看这张表格,来自Space Vector PWM - SVPWM Technique | MATLAB Simulation - YouTube
- 例如,当Q1、Q5、Q6开启时,根据电阻分压,可以看到输出电压为:
[
2
3
V
d
c
−
1
3
V
d
c
−
1
3
V
d
c
]
T
[\frac{2}{3}Vdc \quad -\frac{1}{3}Vdc \quad -\frac{1}{3}Vdc]^T
[32Vdc−31Vdc−31Vdc]T,经过Clarke变换后,电压为:
[
2
3
V
d
c
0
]
[\frac{2}{3}Vdc \quad 0]
[32Vdc0]。矢量的模为
-
我们需要输出的三相电压,在Clarke变换后,成为了在αβ静止坐标系旋转的一个电压矢量。而逆变器可以获得6个不同方向的电压矢量+2个零矢量。因此,我们就可以根据矢量合成的原理,先判断电压矢量当前在哪个位置(
扇区sector
),然后用与它最近的两个电压矢量来合成它。这里面还用到了开关周期平均的思想,就是说,在一个开关周期内两个电压矢量+零矢量交替作用,最终输出的电压是是这些矢量按照开关周期平均后的结果。——以上为自己的理解,不一定十分准确,但是大致意思是这样。- 例如下图,选取的矢量为V1和V2,作用时间为T1和T2。
- 如果这个开关周期中,T1占了100%,那么合成电压矢量的方向肯定是与V1同向,也就是0°,长度与V1相等。
- 同理,如果T2占了100%,合成结果就会与T2同向,60°。
- 而下图中,比如V1作用40%的时间,V2作用30%,其他30%为零矢量,合成的电压矢量就介于V1和V2之间。
- 例如下图,选取的矢量为V1和V2,作用时间为T1和T2。
-
常用的开关模式如下图的7段式,波形比较对称,每个开关周期,每个开关都动作两次,同时使用两种零矢量。当然这里已经提出了很多不同的switching pattern,具体可以看相关文献。
-
最终,在SVPWM模块中,我们主要需要解决的问题是:
- 确定参考电压在哪个扇区。
- 计算各个矢量的作用时间。
- 生成最终的门极驱动信号。