SVPWM算法原理及详解

1.概述算法

        SVPWM是近年发展的一种比较新颖的控制方法,是由三相功率逆变器的六个功率开关元件组成的特定开关模式产生的脉宽调制波,可以使输出电流波形尽量接近于理想的正弦波形。空间电压矢量PWM与传统的正弦PWM不一样,它是从三相输出电压的总体效果出发,着眼于如何使电机得到理想圆形磁链轨迹。SVPWM技术与SPWM相比较,绕组电流波形的谐波成分小,使得电机转矩脉动下降,旋转磁场更逼近圆形,并且使直流母线电压的利用率有了很大提升,且更易于实现数字化。函数

        通俗化理解:把PMSM想象成两块同心的磁铁,两块磁铁是相吸的,所以当用手拨动外面的磁铁绕组圆心转动时,里面的磁铁也会跟着转动,这其实就是PMSM的本质了。PMSM的转子是永磁铁,定子是绕组,咱们用电路控制定子绕组产生旋转的磁场,里面的转子磁铁就会跟着转动,这个磁场的大小最好恒定,否则一下子大一下子小,转子受到的牵引力也就一下子大一下子小,影响运动性能。好了,如今咱们知道电机的本质是什么了。接下来,咱们须要一个算法来控制定子绕组的输出,使其产生一个恒定的旋转磁场,这个算法就是SVPWM。性能

2.SVPWM基本原理spa

        要获得一个恒定大小的旋转磁场,能够先来获得一个恒定大小的旋转电压矢量。以下图:.net

        从上图可知,咱们能够经过互差120度,大小随着时间按正弦规律变化的3个分矢量来合成一个大小不变旋转的总矢量。因而问题又变成了:如何获得大小随着时间按正弦规律变化的3个分矢量呢?咱们先回到电机上,其实这3个分矢量就对应了电机的3个绕组,3个绕组就是互差120度的,只要再控制绕组上的电压大小按照正弦规律变化,是否是就能够获得大小不变旋转的总矢量呢?看下面电机定子的坐标系图:3d

        若是让绕组上的电压大小按照正弦规律变化呢?直接通交流电,就是正弦的呀,可不能够呢?驱动器的控制电路以下:excel

        咱们只能控制6个管子的开关而已,看来直接通交流电是不行了。因而咱们只能控制PWM的占空比来等效正弦:blog

        上面的图是SPWM的,只须要懂意思就好了。其实就是占空比越大,电压越大;占空比越小,电压越小。让占空比呈正弦变化,电压值天然也就呈正弦变化了。get

        咱们用公式来表示一下:定义这三个电压空间矢量为UA(t)、UB(t)、UC(t),他们方向始终在各自的轴线上,而大小随时间按正弦规律变化,时间相位上互差120度。假设Um为相电压的有效值(相电压呈正弦变化),f为电源频率,则有:class

        可见U(t)是一个旋转的空间矢量,它的幅值不变,为相电压峰值的1.5倍(从上面的动态gif也能够看出来,总矢量的幅值是分矢量最大值的1.5倍),且以角频率ω= 2πf按逆时针方向匀速旋转的空间矢量。而SVPWM算法的目的就是使用三相桥的开关状态把在空间中旋转的U(t)矢量表示出来。

        咱们看到上面的式子多出来一个参数K,它值是个常数,根据不一样的需求选择不一样的变换,K能够取不一样的值。不一样的需求如:要求功率不变、要求电压电流幅值不变等。咱们这里为了使合成的空间矢量在静止的三相坐标轴上的投影和分矢量相等,取K值为2/3,这也是Park变换所采用的系数,因而上式变为了:

        因为逆变器三相桥臂共有6个开关管,为了研究各相上下桥臂不一样开关组合时逆变器输出的空间电压矢量,特定义开关函数Sx(x=abc) 为:

        (Sa、Sb、Sc)的所有可能组合共有八个,包括 6个非零矢量Ul(001)、U2(010)、U3(011)、U4(100)、U5(101)、U6(110)、和两个零矢量 U0(000)、U7(111),下面以其中一种开关组合为例分析,假设Sx(x=a、b、c)=(100),此时等效电路如图:

所以相电压能够表示为:(相电压是每相相对于电机中间链接点的电压)

同理可得,其余开关状态三相的相电压。另外线电压是两相之间的电压差,如Uab=Ua-Ub。

如前面所说,三相相电压矢量与合成矢量的关系以下:

当开关Sa=1时,UA(t)=Udc(A相相线经过上桥臂直通母线Udc);当开关Sb=1时,UB(t)=Udc;当开关Sc=1时,UC(t)=Udc。

当开关Sa=0时,UA(t)=0(A相相线经过下桥臂直通GND);当开关Sb=0时,UB(t)=0;当开关Sc=0时,UC(t)=0。

这样,合成矢量的关系式就变成了桥臂的开关函数,所以上式能够写成:

能够看到Uout的模值不变,改变的只是相位。

开关状态与线电压、相电压、Uout列在一块儿:

把上面的8个电压空间矢量按照Uout的相位关系放在扇区图中:

上图中,6个非零矢量幅值相同,相邻的矢量间隔60度。两个零矢量幅值为零,位于中心。

 

    三相电压给定所合成的电压向量旋转角速度为ω=2πf(即磁场旋转角速度),则旋转一周所需的时间为T=1/ f;若开关管载波频率是 fs ,则频率比为 R=fs / f。这样将电压旋转平面等切割成R个小增量,亦即设定电压向量每次增量的角度是:γ=2π/ R。(注:这里就是把电压向量旋转一周,均分为R份,用来R边形来拟合圆形,同时这也表明了磁场旋转一圈,进行R次运算。所以载波频率越大,转速越小,电压旋转平面越接近圆形,反之,越接近多边形。固然载波频率过高的话,管子的开关损耗就比较大,通常取5K-10K)

    如今假设须要输出一个空间矢量Uref,假设它在第I扇区,咱们先把第I扇区单独取出来,而后用和它相邻的两个电压空间矢量来表示它:

    获得以 U四、U六、U7 及 U0 合成的 Uref 的时间后,接下来就是如何产生实际的脉宽调制波形。在 SVPWM 调制方案中,零矢量的选择是最具灵活性的,适当选择零矢量,可最大限度地减小开关次数,尽量避免在负载电流较大的时刻的开关动做,最大限度地减小开关损耗。所以,咱们以减小开关次数为目标,将基本矢量做用顺序的分配原则选定为:在每次开关状态转换时,只改变其中一相的开关状态。而且对零矢量在时间上进行了平均分配,以使产生的 PWM 对称,从而有效地下降 PWM 的谐波份量。能够发现当 U4(100)切换至 U0(000)时,只需改变 A 相上下一对切换开关,若由 U4(100)切换至 U7(111)则需改变 B、C 相上下两对切换开关,增长了一倍的切换损失。所以要改变电压向量 U4(100)、U2(010)、U1(001)的大小,需配合零电压向量 U0(000),而要改变 U6(110)、U3(011)、U5(100), 需配合零电压向量 U7(111)。这样经过在不一样区间内安排不一样的开关切换顺序, 就能够得到对称的输出波形,其它各扇区的开关切换顺序如表 2-2 所示。

    所以就能够利用 U四、U六、U7 及 U0 的顺序和时间长短的搭配来表示出Uref了。

    以第Ⅰ扇区为例,其所产生的三相波调制波形在一个载波周期时间Ts内如图 2-11 所示,图中电压向量出现的前后顺序为 U0、U四、U六、U七、U六、U四、U0,各电压向量的三相波形则与表 2-2 中的开关表示符号相对应。再下一个 载波周期Ts ,Uref 的角度增长一个γ,利用式(2-33)能够从新计算新的 T0、T四、T6 及 T7 值,获得新的相似图 2-11 的合成三相波形;这样每个载波周期 TS 就会合成一个新的矢量,随着 θ 的逐渐增大,Uref 将依序进入第Ⅰ、Ⅱ、Ⅲ、Ⅳ、Ⅴ、Ⅵ区。在电压向量旋转一周期后,就会产生 R 个合成矢量。

    所以SVPWM会在每一个载波周期进行一次计算。

    经过以上 SVPWM 的法则推导分析可知要实现 SVPWM 信号的实时调制, 首先须要知道参考电压矢量 Uref 所在的区间位置,而后利用所在扇区的相邻两电压矢量和适当的零矢量来合成参考电压矢量。
    控制系统须要输出的矢量电压信号 Uref,它以某一角频率 ω 在空间逆时针旋转,当旋转到矢量图的某个 60°扇区中时,系统计算该区间所需的基本电压空间矢量,并以此矢量所对应的状态去驱动功率开关元件动做。当控制矢量在空间旋转 360°后,逆变器就能输出一个周期的正弦波电压。

 

说完了SVPWM算法,咱们再来对接FOC算法,框图以下:

        上图中的第7部分就是SVPWM,其做为FOC最终的执行部分,接收FOC传来的Uα 和Uβ,而后经过上面的过程转换成开关管的控制信号,控制定子绕组产生旋转磁场。
1.合成矢量Uref 所处扇区N 的判断 

    空间矢量调制的第一步是判断由Uα 和Uβ所决定的空间电压矢量所处的扇区。
    假定合成的电压矢量落在第 I 扇区,可知其等价条件以下: 0<arctan(Uβ/ Uα) <60

    落在第 I 扇区的充分必要条件为:Uα  > 0 ,Uβ  > 0 且/Uα  <√3

    同理可获得合成的电压矢量落在其它扇区的等价条件,得出:

    Uref落在第Ⅱ扇区的充要条件为:Uβ>0 且/ Ua>√3

    Uref落在第Ⅲ扇区的充要条件为:Ua<0 ,> 0 且-/Ua  <√3

    Uref落在第Ⅳ扇区的充要条件为:Ua<0 ,Uβ  < 0 且/Ua  <√3

    Uref落在第Ⅴ扇区的充要条件为:<0 且 -Uβ/Ua>√3

    Uref落在第Ⅵ扇区的充要条件为:Ua>0 ,<0且-/Ua  <√3

    若进一步分析以上的条件,可看出参考电压矢量 Uref 所在的扇区彻底由Uβ、√3Ua-Uβ、-√3Ua-Uβ三式决定,所以令:

    再定义,若U1 > 0 ,则 A=1,不然 A=0; 

                  若U2 > 0 ,则B=1,不然 B=0;

                  若U3 > 0 ,则 C=1,不然 C=0。

    能够看出 A,B,C 之间共有八种组合,但由判断扇区的公式可知 A,B,C 不会同时为 1 或同时为 0,因此实际的组合是六种,A,B,C 组合取不一样的值对应着不一样的扇区,而且是一一对应的,所以彻底能够由 A,B,C 的组合判断所在的扇区。为区别六种状态,令 N=4*C+2*B+A,则能够经过下表计算参考电压矢量Uref所在的扇区。

 

    采用上述方法,只需通过简单的加减及逻辑运算便可肯定所在的扇区,对于提升系统的响应速度和进行仿真都是颇有意义的。如:已知Uref的Uβ>0,√3Ua-Uβ>0,-√3Ua-Uβ<0,即:A=1,B=1,C=0,N=3,因此扇区号为I。

2.基本矢量做用时间计算与三相 PWM 波形的合成 

    在传统 SVPWM 算法如式(2-34)中用到了空间角度及三角函数,使得直接计算基本电压矢量做用时间变得十分困难。实际上,只要充分利用 Uα 和 Uβ 就可使计算大为简化。


以 Uref 处在第Ⅰ扇区时进行分析,根据图 2-10 有:

Ud就是Udc,即母线电压。下式的最后把I扇区两边的电压矢量U4(100)和U6(110)的Uout式子带进来了,分别是2/3Udc和2/3Udc*cos(π/3):
 

        同理可求得Uref在其它扇区中各矢量的做用时间,结果如表2-4所示。表中两个非零矢量做用时间的比例系数为K =√3Ts/Udc 

 

        到这里,FOC与SVPWM的对接就变成了,先根据N=4*C+2*B+A判断合成矢量所在扇区,而后查表2-4得出两非零矢量的做用时间,最后得出三相开关管PWM波的占空比,查表让算法更高效。

 

C语言代码的分析在这儿:https://blog.csdn.net/qlexcel/article/details/95227991

 

    由公式(2-38)可知,

当两个零电压矢量做用时间为0时,一个PWM周期内非零电压矢量的做用时间最长,此时的合成空间电压矢量幅值最大,由下图2-12可知其幅值最大不会超过图中所示的正六边形边界。而当合成矢量落在该边界以外时,将发生过调制,逆变器输出电压波形将发生失真。在SVPWM调制模式下,逆变器可以输出的最大不失真圆形旋转电压矢量为图2-12所示虚线正六边形的内切圆,其幅值为: (√3/ 2)x(2Udc/ 3) =√3Udc/3 。即逆变器输出的不失真最大正弦相电压幅值为√3Udc /3 ,而若采用三相SPWM调制,逆变器能输出的不失真 最大正弦相电压幅值为Udc/2。显然SVPWM 调制模式下对直流侧电压利用率更高,它们的直流利用率之比为(√3Udc/ 3) /(Udc/ 2) =1.1547 ,即SVPWM算法比SPWM算法的直流电压利用率提升了15.47%。

 

         如图当合成电压矢量端点落在正六边形与外接圆之间时,已发生过调制,输出电压将发生失真,必须采起过调制处理,这里采用一种比例缩小算法。定义每一个扇区中先发生的矢量用为Tx,后发生的矢量为 Ty。当 Tx+TyTS时,矢量端点在正六边形以内,不发生过调制;当Tx+Ty>TS时,矢量端点超出正六边形,发生过调制。输出的波形会出现严重的失真,需采起如下措施:

    设将电压矢量端点轨迹端点拉回至正六边形内切圆内时两非零矢量做用时间分别为 Tx',Ty',则有比例关系:

使用上面的简单比例关系,把两个非零矢量做用时间矫正好。

taon、tbon、tcon的波形呈马鞍形,以下: