1 背景
本文采用永磁同步电机来介绍其控制方法,永磁同步电机的结构:转子为永磁体,定子为三相交流绕组。
一个典型的永磁同步电机的3相绕组在空间120°电角度布置,绕组里面分别通相位相差120°的三相交流电:
为什么需要通相位相差120°的三相交流电?为了产生一个幅值大小不变的圆形旋转磁动势。
l
针对上图:设计永磁同步电机,就必须要产生这样的磁动势,即通相位相差120°的幅值不变的三相交流电,就会产生一个幅值大小不变的圆形旋转磁动势,其大小正好为单相磁动势最大幅值的1.5倍,如下图所示。注意观察上图!从PhaseA,B,C三图可以看出,每相电流变化产生的旋转磁场强弱也在变化,但它们合成旋转磁场(右下图Resultant)强弱的不变,其转速与转子转速相同。也可以从空间矢量角度来看它们的变化(右下图Space vectors)。
从上图不难发现,如果调节三相交流电幅值,相应地,合成的旋转磁动势幅值也随之变化,当然其大小仍为单相磁动势最大幅值的1.5倍,见下图。
磁动势变化意味着什么呢?电机转矩的变化,这样我们需要找到三相交流电与电机转矩的关系。直接找它们两者的关系可能比较复杂,在控制实施有难度。那么是否有什么方法可以先做一些处理?注意三相交流电通定子线圈,定子线圈是静止的,但线圈产生的磁场是与转子永磁体产生的磁场相互作用,转子在转,线圈产生的磁场也在同步转。通过这些信息,是否能够找到一些提示?
2 Clark和Park变换
对于三相交流电,我们是否可以把它整成两相?就好比我们看一个三维的问题,我总是倾向于转化到二维去解决。三相交流电相互间相位相差120°,那我们是否可以构建一个坐标系α-β,使用它来表示三相交流电,如下所示:
也就是把Ia,Ib,Ic投影到该坐标系α-β,不难得到变换公式:
写成矩阵形式如下:
这就是Clark变换。在上述矩阵前通常会添加系数 2/3或 是sqrt(2/3),分别代表等幅值变换与等功率变换。通过Clark变换,使得原先的三相交流电转换成两相正弦电流。
注释:Clark变换前的三相交流电
注释:Clark变换后的两相正弦电流
若此时转子在转动,旋转的转子永磁体与坐标系α-β有何干系呢?相当于转子永磁体在坐标系α-β以转速ω转动。如果建立一个坐标系d-q,d轴和磁铁NS线完全重合,并且正方向是N极方向;而q轴,相切于NS线,正方向与转动方向一致。如下所示:
那么将坐标系α-β投射到这个坐标系d-q,由于转子相对定子以转速ω旋转,即两个坐标系存在一个旋转角度θ(θ=ωt),它们的关系如下所示:
其实从坐标系α-β到坐标系d-q的这个变换就是Park变换。将两相正弦波信号转化为两相的直流信号。
注释:Park变换后的两相直流电
上述的坐标系d-q为什么这样建立? 原因是通过Park变换到Id,Iq,此时d轴方向没有切割磁感线,所以电流Id并不会产生洛伦兹力;而q轴方向就能切割磁感线,从而电流Iq就能产生洛伦兹力。
以上结合Clark变换和Park变换,就可以将一个三相交流电转化为两相的直流电,如下所示:
3 SVPWM
3.1 SVPWM的输入
对于要如何获得目标的电磁转矩,这时只需需要合理地控制Id和Iq。因为根据永磁同步电机的转矩方程可知:
第1部分是由转子永磁体磁链和三相定子绕组磁链相互作用产生的;第2部分是由凸极效应造成磁阻变化而产生的反应转矩。可以看出,因为转子永磁体磁链恒定不变,要调节永磁同步电机的电磁转矩,只需要调节Id和Iq。由坐标系d-q的定义,Id没切割磁感线,Iq切割磁感线,即电磁转矩与Iq有关,控制Iq就行。
令Id=0,根据目标的电磁转矩就可以确定目标的Iq (Iq=T/pψm )。这样可以得到电机的总体FOC控制框架:
到此,关键是黑盒部分的处理,通常会使用SVPWM来处理,为什么要使用SVPWM? 请参考:如何深入理解SVPWM
SVPWM具体实现是什么功能呢?其实就是将Vα,Vβ转化为Va,Vb,Vc。下面揭开黑盒部分,如下所示:
由上图可知SVPWM的输入Vα,Vβ如何获取:
目标的Id,Iq(深蓝框):令目标的Id=0,根据电磁转矩可得到目标Iq;
实际的Id和Iq(绿色路径):通过传感器采集到Ia, Ib, Ic, 经过Clark变换到Iα,Iβ, 再经过Park变换到Id,Iq;
有了目标的和实际的Id,Iq,采用PI控制则可以得到目标的Vd,Vq;
Vd,Vq经反Park变换到Vα,Vβ。
3.2 SVPWM的输出
那SVPWM的输出呢?这里需要先了解下逆变器的电路原理,逆变器就是把直流电转换为交流电,采用3组半桥MOS电路来实现,如下所示:
每组半桥MOS电路由两个MOS管组成,上桥臂和下桥臂,中间引出一条输出线。通过控制上下桥臂的通断,就可以控制输出,如下所示:
注释:MOS管看成一个开关就行,其功能就是控制桥臂的通断
当上桥臂通,下桥臂断时,输出OUT接通电源;当上桥臂断,下桥臂通,输出OUT接地;当上、下桥臂都通,这个我们在SVPWM不使用。这样一根输出线与电机的一根相线相连,使用3组半桥MOS电路就完成了最基本的电机驱动电路。即通过逆变器的3组半桥MOS管电路上下桥臂的通断控制来实现直流电转化为三相交流电。
那控制MOS管的通断,如何就实现了直流电变三相交流电呢?这里需要使用到PWM,PWM定义如下:
就是以一定频率(即上图的周期T)不断改变PWM的占空比,比如上图第一周期T控制占空比20%,能到20V的平均电压,第2周期T控制占空比50%,能到50V的平均电压,以此类推,只要频率够快,就可以利用PWM控制MOS管的通断,从而产生近似正弦电流,如下所示:
通过上面的分析可知,通过SVPWM算法得到3组PWM,分别控制3组半桥MOS电路就行。这样我们就明确了SVPWM的输入和输出,接下来我们来了解SWPWM具体是什么
3.3 SVPWM是什么
SVPWM总体逻辑如下示意:
根据反Park变换得到Vα,Vβ,这两个矢量可以在坐标系α-β合成矢量Vref;
通过控制逆变器的3组半桥MOS电路可以构建6个基本电压矢量和2个零电压矢量;
用这8个电压矢量中的几个可以合成任意矢量,比如Vref,那意味着可以建立Vα,Vβ和几个电压矢量的关系;
8个电压矢量均与Va,Vb,Vc有关系的,这样就能够建立起Vα,Vβ与Va,Vb,Vc的关系。当然如上面SVPWM的输出所言,Vα,Vβ与Va,Vb,Vc的关系其实通过Vα,Vβ与施加给a, b, c三相电对应的半桥MOS电路的PWM来体现。
接下来就介绍下整个逻辑的实现过程,首先构建电压矢量。这里以下图所示的半桥MOS电路状态来分析,a组的上桥臂通,b, c组的下桥臂通,此时等效电路如下右上图。通过电路分析可得三相电压与电源电压的关系,考虑三相绕组在空间中的分布,将它们表示在一个六等分的圆内,如右下图,接着矢量合成,不难得到合成的电压矢量大小(Vdc)和方向(-->A)。
接着使用相同方法,分别对不同半桥MOS电路状态进行分析,可得另外的7个电压矢量,我们半桥MOS电路的a, b, c上桥臂全通或下桥臂全通构建的2个电压矢量称为零矢量,其他6组称为基本矢量。如下图所示:
同时为了方便快速记忆空间矢量对应的半桥MOS电路状态,我们采用下面的命名方式:1表示上桥臂通,下桥臂断;而0表示上桥臂断,下桥臂通;并且V的下标,由三组半桥MOS电路的状态(1/0)构建3位二进制数转化为十进制来表示,比如100表示a组的上桥臂通,下桥臂断,b,c组的上桥臂断,下桥臂通,二进制100转成十进制为4,即V的下标是4,即V4, 以此类推,如下所示:
我们把两个相邻基本电压矢量之间形成的空间称为扇区,因此有6个扇区。以上就构建好了电压矢量,接下来就可以利用它们作为基向量来合成任意矢量,那么如何用这些矢量来合成Vref?取决于Vref在哪个扇区。
当然不管Vref在哪个扇区,采用的方法都是选择该扇区相邻两个基本电压矢量以及零矢量,按照伏秒平衡原则来合成该扇区内的任意电压矢量,即:
注释:资料引用出处不统一,本文中V和U等价,均表示电压,文字均采用V来书写。
假设V确定了一个PWM周期T内,V4, V6, V0, V7 运行时间,但它们运行的顺序呢?,现在的关键是一个PWM周期T内,V4, V6, V0, V7分别要运行多长时间?
根据伏秒平衡原则有: Vref = (T4/T)V4+ (T6/T)V6+ (T-T4-T6/T)(V0&V7),如下所示:
将 Uref投影分解到 U4 和 U6 的方向,由正弦定理有:
由此我们可知:T4, T6, T0, T7 的值取决于Vref,Vdc和θ的值,其中Vdc和θ均可通过传感器实时获取,可看成是已知量,所以关键在Vref,而前面我们提到可以用Vref可以用Vα, Vβ来合成。这样通过Vref,就是可以建立T4, T6, T0, T7与Vα, Vβ关系,根据如下分析:
可得:
这样我们可以根据Vα, Vβ(SVPWM的输入)和 Vdc求得T4, T6, T0, T7。以上我们是以Vref在扇区I为例,为了在其他扇区中重复利用在上述结论并简化表达式,我们可以定义三个变量:
这样我们就可以得到每个扇区的时间,如下所示:
这样就确定了一个PWM周期T内,U4, U6, U0, U7 运行时间,但它们运行的顺序呢?理论上任何顺序都可以,但是实际中需要考虑更多限制,比如MOS管存在开关损耗,因此希望能尽量减少MOS管的开关次数,那么以这个为目的来设计其顺序,如下所示:
注意观察执行顺序的设计,每次只改变一组半桥MOS电路状态,而且从000开始,结束又回到000,也就是每个PWM周期结束又可以回到初始状态,丝毫不会影响下一个PWM周期的执行顺序。而且通过在合理的位置插入两个零矢量,对其在时间上进行了平均分配,这样产生的PWM对称,可以有效地降低PWM的谐波分量。采用相同的方法,不难得到6个扇区的开关时序,如下所示:
当然上述对于Vref的合成,需要先知道 Vref在哪个扇区,具体怎么判断? 不难联想到高中所学过的线性规划把V1V6, V3V4, V2V5看成三条直线,用α,β表示这三条直线方程,那么有:
直线V3V4: β = 0,
直线V2V5: β = -sqrt(3)*α,
直线V1V6: β = sqrt(3)*α
为了方便判断Vref在哪个扇区,由三条直线方程,令
X = β,
Y = sqrt(3)*α + β,
Z = sqrt(3)*α - β,
从而可以将Vref坐标(α,β)代入X, Y, Z,根据X,Y,Z值的正负情况就可以判断Vref的位置。以Vref在扇区1为例,不难发现,根据X, Z来判断,显然X需要大于0,Z也需要大于0,如下所示:
使用相同的方法,可以得到其他扇区的判断条件:
到此,基本介绍完了SVPWM,内容还是非常多,不过把握好整体逻辑,还是不难理解。如果你已经认真地看到此处,可跳到文章最后看看a, b, c 3组PWM执行是如何实现的。回顾SVPWM整个逻辑:
控制3组半桥MOS电路状态 --> 构建6个基本电压矢量和2个零矢量;
利用基本电压矢量和零矢量作为基矢量可合成任意矢量,且根据伏秒平衡原则可得到各基矢量的作用时间;
根据基矢量(V0~V7)--> Vref
将几个基矢量的作用时间合理排序,得到作用于a,b,c 3组半桥MOS电路的占空比(PWM)。
4 总结
上文就介绍完了FOC控制方法的关键知识,掌握好了这些知识,那么就能把握FOC控制方法的整体逻辑,读懂FOC控制方法的代码或者模型,最后借助下图在脑海串联这些知识。
5 彩蛋
基于SVPWM排序之后得到PWM波形,有个问题:从000到100,怎么判断执行切换?从图看是过了T0/2时间就执行,但是怎么知道的?其原理是怎样的?
接下来我们就要解释这个问题,首先定义三个时间变量Ta,Tb,Tc:
将这三个时间变量与一个三角波比较后算法就能精确的在指定的时间进行切换,但是这个三角波需要是一个等腰直角三角形,即高是底边的一半,高代表半个PWM周期,即Ts/2。自然地,底就是1个PWM周期,即Ts。
接下来结合下图理解下这三个时间变量与一个三角波比较实现切换的原理。
当三角波发生器开始产生,经过t=T0/2时间,即Ta,下一刻意味着t>Ta,那么在t=Ta时刻开始从000切换到100,即a组半桥MOS管从上桥臂断,下桥臂通切换到上桥臂通,下桥臂断。
随着时间t=Tb,下一刻意味着t>Tb,那么在t=Tb时刻开始从100切换到110,即b组半桥MOS管从上桥臂断,下桥臂通切换到上桥臂通,下桥臂断。
以此逻辑,在t=Tc时刻开始从110切换到111,即c组半桥MOS管从上桥臂断,下桥臂通切换到上桥臂通,下桥臂断。
最终经过t=Ts/2时间,三角波到达其顶点。
当三角波到达其顶点,接下来从顶点减小到0。不难理解,将会在t=Ts-Tc,从111切换到110;lt=Ts-Tb,从110切换到100;t=Ts-Ta,从100切换到100,所以通过整个过程的比较分析,就可明白三个时间变量与一个三角波比较实现切换的原理,如下所示:
本文到此结束,预告下篇文章将结合电机map介绍完整的电机控制方法。