SVPWM算法原理及详解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qlexcel/article/details/74787619

1.概述

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

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

2.SVPWM基本原理

        要得到一个恒定大小的旋转磁场,可以先来得到一个恒定大小的旋转电压矢量。如下图:

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

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

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

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

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

        可见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扇区单独取出来,然后用和它相邻的两个电压空间矢量来表示它:

    得到以 U4、U6、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 所示。

    因此就可以利用 U4、U6、U7 及 U0 的顺序和时间长短的搭配来表示出Uref了。

    以第Ⅰ扇区为例,其所产生的三相波调制波形在一个载波周期时间Ts内如图 2-11 所示,图中电压向量出现的先后顺序为 U0、U4、U6、U7、U6、U4、U0,各电压向量的三相波形则与表 2-2 中的开关表示符号相对应。再下一个 载波周期Ts ,Uref 的角度增加一个γ,利用式(2-33)可以重新计算新的 T0、T4、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',则有比例关系:

 

 

 

展开阅读全文

没有更多推荐了,返回首页