FOC矢量控制

目录

  • 前言
  • 一、FOC简介
    • [1.1 FOC是什么](#1.1 FOC是什么)
    • [1.2 FOC框图介绍](#1.2 FOC框图介绍)
  • 二、FOC坐标变换
    • [2.1 电流采集](#2.1 电流采集)
    • [2.2 Clarke变换](#2.2 Clarke变换)
    • [2.3 Park变换](#2.3 Park变换)
  • 三、闭环控制
    • [3.1 电流环控制](#3.1 电流环控制)
    • [3.3 速度环控制](#3.3 速度环控制)
    • [3.4 位置环控制](#3.4 位置环控制)
  • 四、SVPWM原理
    • [4.1 空间矢量合成](#4.1 空间矢量合成)
    • [4.2 SVPWM法则](#4.2 SVPWM法则)
    • [4.3 MOS开关方式](#4.3 MOS开关方式)
    • [4.4 矢量作用时间](#4.4 矢量作用时间)

前言

本文主要介绍无刷直流电机BLDC的FOC矢量控制的原理


一、FOC简介

1.1 FOC是什么

FOC(field-oriented control)为磁场定向控制,又称为矢量控制(vectorcontrol),是目前无刷直流电机(BLDC)和永磁同步电机(PMSM)高效控制的最佳选择。FOC 可以精确地控制磁场大小与方向,使得电机转矩平稳、噪声小、效率高,并且具有高速的动态响应。目前已在很多应用上逐步替代传统的控制方式,在运动控制行业中备受瞩目。

我们都知道,电流可以产生磁场,并且磁场大小与电流大小成正比,因此为了使定子构造最合适的旋转磁场,需要精确控制线电流。想要磁场旋转就需要线电流做着正弦变化,而3 组线圈绕组的角度差,就使得三相电流需要时刻做相位差为 120 度的正弦变化,这时可使定子构造最合适的旋转磁场,显然简单的 6 步换向无法控制三相电流做正弦变化,转矩在一定程度上会有跳变,这样无法输出稳定转矩,因此需要 FOC 来保持转子的扭矩时刻连续稳定可调。下面总结六步换向和 FOC 控制方式的对比表,如表:

1.2 FOC框图介绍

上图是以电流闭环控制为例,也就是让电机始终保持一个恒定力矩(力矩与电流成正比)。从上图可以看到最左边的 Iq_Ref 和 Id_Ref 两个变量经过 PID 控制器进行反馈调节,其中涉及到几个变换模块,包括:Clarke 变换、Park 变换以及反 Park 变换,最后是 SVPWM 模块作用到三相逆变器进而控制电机旋转。相信大家对上面这些过程不是很理解,没关系,我们先来大致的概括下 FOC 的整个控制框图,后面会对整体框架进行拆分讲解。

① 对电机三相电流进行采样得到: i a i_a ia、 i b i_b ib、 i c i_c ic;

② 将 i a i_a ia、 i b i_b ib、 i c i_c ic经过Clarke变换 得到 i α i_α iα、 i β i_β iβ;

③ 将 i α i_α iα、 i β i_β iβ经过Park变换 得到 i q i_q iq、 i d i_d id;

④ 计算 i q i_q iq、 i d i_d id和其设定值 i q _ r e f i_{q\ref} iq_ref、 i d _ r e f i{d\_ref} id_ref的误差;

⑤ 将上述误差输入到两个PID (只用到 PI)控制器,得到输出的控制电压 V q V_q Vq、 V d V_d Vd;

⑥ 将 V q V_q Vq、 V d V_d Vd进行反Park变换 得到 V α V_α Vα、 V β V_β Vβ;

⑦ 将 V α V_α Vα、 V β V_β Vβ输入SVPWM 模块进行调制,合成电压空间矢量,输出该时刻三个半桥的开关状态进而控制电机旋转;

⑧ 循环上述步骤。

二、FOC坐标变换

坐标变换涉及到下图框选部分

FOC坐标系有以下

  • 定子坐标系(静止)

    • A-B-C坐标系(三相定子绕组、相差120度)
    • α-β坐标系(直角坐标系:α 轴与A轴重合、 β 轴超前α 轴90度)
  • 转子坐标系(旋转)

    • d-q坐标系(d轴-转子磁极的轴线、q轴超前d轴90度 )
  • 定向坐标系(旋转)

    • M-T坐标系( M轴固定在定向的磁链矢量上,T轴超前M轴90度 )

转子磁场定向控制------M-T坐标系与d-q坐标系重合

2.1 电流采集

由上面的介绍可以得知,我们是对电流分量进行变换,所以首先我们需要获取电流参数。电流采集环节如下图所示,具体采集方式见下

  1. 母线电阻电流采样

    通过直流母线侧一个电阻,实现一个周期内两相电流的测量,第三相电流由 I U + I V + I W = 0 I_U+I_V+I_W=0 IU+IV+IW=0得到。SVPWM开关VS直流母线电流如下图所示

  2. 相电流采样

    SVPWM单直流母线电阻采样,单电阻ADC采样

    信号用来硬件触发ADC

  3. 桥臂电流采样

    采用双/三电阻进行桥臂电流采样

  4. 电流采样方式选择

2.2 Clarke变换

获取到电流参数之后,我们就可以将其进行Clarke变换 。假设我们将一个PMSM电机手动让其匀速旋转,此时使用示波器观察它的三相输出电压(反电动势),我们会发现示波器上会得到三组正弦波,并且三组正弦波之间两两相位差为120°。电机运转时三相电流波形如下

所以反过来我们在三相无刷电机的三相线圈上输入上述三相正弦电压,那么就可以驱动无刷电机平稳高效地旋转了。而这正是FOC驱动无刷电机的基本手段,但是从控制的角度来看,我们根本就不想跟三个正弦波打交道,因为对于非线性的信号进行准确控制就要使用复杂的高阶控制器,这对于建模成本、处理器算力、控制实时性等都是非常不利的,那么有没有什么方法可以将被控制量线性化呢?答案是当然有的,只需要应用一些数学技巧。

当PMSM电机匀速运转时,将采集到相位相差120°的三相电流 I a I_a Ia、 I b I_b Ib、 I c I_c Ic 使用三相坐标系表示,如下图绿色线所示:

可以看出这是一个二维平面内的坐标系,我们可以利用一些数学小技巧,将三相坐标系变换成直角坐标系,我们把新的直角坐标系命名为 α − β α-β α−β坐标系(如图红色线所示),变换原则是电流产生的磁场相等。Clarck变换用于将三相静止坐标系变换到两相静止坐标系,变换前后在坐标系中产生的磁场等效。

假设变换前三相定子绕组匝数为 N 3 N_3 N3,变换后的两相定子绕组匝数为 N 2 N_2 N2,根据磁动量守恒可得:
N 2 [ i α i β ] = N 3 [ i A − i B cos ⁡ 60 ° − i C cos ⁡ 60 ° sin ⁡ 0 + i B sin ⁡ 60 ° − i C sin ⁡ 60 ° ] N_2\begin{bmatrix} i_α \\ i_β \end{bmatrix} = N_3\begin{bmatrix} i_A - i_B\cos 60° - i_C\cos 60° \\ \sin 0+i_B \sin 60° - i_C\sin 60° \end{bmatrix} N2[iαiβ]=N3[iA−iBcos60°−iCcos60°sin0+iBsin60°−iCsin60°]

提取 i α i_α iα和 i β i_β iβ可以得到:
[ i α i β ] = N 3 N 2 [ 1 − 1 2 − 1 2 0 3 2 − 3 2 ] [ i A i B i C ] \begin{bmatrix} i_α \\ i_β \end{bmatrix} = \frac{N_3}{N_2}\begin{bmatrix} 1 & -\frac 12 & -\frac 12 \\ 0 & \frac {\sqrt 3}2 & -\frac {\sqrt 3}2 \end{bmatrix} \begin{bmatrix} i_A \\ i_B \\ i_C \end{bmatrix} [iαiβ]=N2N3[10−2123 −21−23 ] iAiBiC

遵循恒幅值不变原理可得:
N 3 N 2 = 2 3 \frac{N_3}{N_2} = \frac 23 N2N3=32

所以:
[ i α i β ] = 2 3 [ 1 − 1 2 − 1 2 0 3 2 − 3 2 ] [ i A i B i C ] \begin{bmatrix} i_α \\ i_β \end{bmatrix} = \frac{2}{3}\begin{bmatrix} 1 & -\frac 12 & -\frac 12 \\ 0 & \frac {\sqrt 3}2 & -\frac {\sqrt 3}2 \end{bmatrix} \begin{bmatrix} i_A \\ i_B \\ i_C \end{bmatrix} [iαiβ]=32[10−2123 −21−23 ] iAiBiC

根据基尔霍夫定律(KCL),所以归纳:
{ i A + i B + i C = 0 i α = 2 3 i A − 1 3 i B − 1 3 i C i β = 0 + 1 3 i B − 1 3 i C \left\{ \begin{array}{c} i_A + i_B + i_C = 0 \\ i_α = \frac 2 3 i_A - \frac 13 i_B - \frac 13 i_C\\ i_β = 0 + \frac 1{\sqrt3} i_B - \frac 1{\sqrt3} i_C \end{array} \right. ⎩ ⎨ ⎧iA+iB+iC=0iα=32iA−31iB−31iCiβ=0+3 1iB−3 1iC

最后化简得:
i α = i A i β = i A + 2 i B 3 \begin{split} i_α &= i_A\\ i_β &= \frac {i_A + 2i_B}{\sqrt3} \end{split} iαiβ=iA=3 iA+2iB

经过Clarke变换后就变成了直角坐标系啦!变换前后的波形如图:

可以看到变换后还是正弦波,虽然少了一个需要控制的变量,但是新的变量还是非线性的(正弦),控制它依旧难度很大,那有没有办法把它们线性化呢,当然有的,接着就看下Park变换

2.3 Park变换

Park变换 可以将电机从两相静止坐标系变换到两相旋转坐标系( d − q d-q d−q坐标系),从而解耦出电机转矩分量和电机的励磁分量,这两个分量相互垂直、互不影响。反 Park变换即为Park的逆变换。首先我们来看下Park变换的原理,这里将Clarke变换后的 α − β α-β α−β坐标系旋转θ度,其中θ为转子旋转的角度,如下图:

图中d轴方向与转子内磁场方向重合,称为直轴;q轴方向与转子内磁场方向垂直,称为交轴。如图所示:

此时我们将 α − β α-β α−β坐标系变换到 d − q d-q d−q坐标系,即Park变换,变换公式如下:
{ i d = i α cos ⁡ θ + i β sin ⁡ θ i q = − i α sin ⁡ θ + i β cos ⁡ θ \left\{ \begin{array}{c} i_d = i_α \cos θ +i_β \sin θ \\ i_q = -i_α \sin θ +i_β \cos θ \end{array} \right. {id=iαcosθ+iβsinθiq=−iαsinθ+iβcosθ

依据坐标变换,Park变换矩阵形式为:
[ i d i q ] = [ cos ⁡ θ sin ⁡ θ − sin ⁡ θ cos ⁡ θ ] [ i α i β ] \begin{bmatrix} i_d \\ i_q \end{bmatrix} = \begin{bmatrix} \cos θ & \sin θ \\ -\sin θ & \cos θ \end{bmatrix} \begin{bmatrix} i_α \\ i_β \end{bmatrix} [idiq]=[cosθ−sinθsinθcosθ][iαiβ]

首先 α − β α-β α−β坐标系经过Park变换后,即为 d − q d-q d−q坐标系,该坐标系是始终跟着转子旋转的,旋转角度θ需通过编码器/霍尔传感器读取。经过这一步的变换,我们会发现,一个匀速旋转向量在这个坐标系下变成了一个定值!(因为参考系相对于该向量静止了),这个坐标系下两个控制变量都被线性化了!Park变换前后波形如图所示:

Park变换后的控制量为 I q I_q Iq、 I d I_d Id,很显然线性化后的控制量我们就可以使用PID来进行控制了;但是为什么我们还要进行反Park变换,将其又变换为 α − β α-β α−β坐标系呢?因为SVPWM算法的实现需要用到静止的 α − β α-β α−β坐标系,所以当我们完成了控制信号的PID运算后,还需进行反Park变换。由于反Park变换输入量为电压,变换公式如下:
{ U α = U d cos ⁡ θ − U q sin ⁡ θ U β = U d sin ⁡ θ + U q cos ⁡ θ \left\{ \begin{array}{c} U_α = U_d \cos θ - U_q \sin θ \\ U_β = U_d \sin θ + U_q \cos θ \end{array} \right. {Uα=Udcosθ−UqsinθUβ=Udsinθ+Uqcosθ

所以反Park变换矩阵为:
[ U α U β ] = [ cos ⁡ θ − sin ⁡ θ sin ⁡ θ cos ⁡ θ ] [ U d U q ] \begin{bmatrix} U_α \\ U_β \end{bmatrix} = \begin{bmatrix} \cos θ & -\sin θ \\ \sin θ & \cos θ \end{bmatrix} \begin{bmatrix} U_d \\ U_q \end{bmatrix} [UαUβ]=[cosθsinθ−sinθcosθ][UdUq]

三、闭环控制

经过前面的坐标变换,我们就可以对分量进行闭环控制,FOC采用的线性控制器就是PID算法 ,关于 PID 控制部分这里就不赘述了,大家可以查看以下链接:
https://blog.csdn.net/weixin_44567668/article/details/130075152

在FOC控制中主要用到三个PID环,从内环到外环依次是:电流环速度环位置环。也就是说:我们通过电流反馈来控制电机电流(扭矩) -> 然后通过控制扭矩来控制电机的转速 -> 再通过控制电机的转速控制电机位置。

3.1 电流环控制

首先我们了解一下FOC的目的,前面的一通操作我们将转子磁链进行了解耦,分解为转子旋转的径向和切向这两个方向的变量: I q I_q Iq以及 I d I_d Id,那这两个控制量到底代表什么含义呢?对于电机来说FOC的目的如图所示:

经过上述分析,我们得知:

  • Iq 是我们需要的。代表了期望的力矩输出;
  • Id 是我们不需要的。我们希望尽可能把它控制为 0;

再来看看内环电流环控制框图如下:

矢量控制算法分别控制 d − q d-q d−q轴电流,实际只用到了PI控制,没有引入微分,因为如果推导一下电压和电流的传递函数会发现这其实就是一个一阶惯性环节(而且实际上我们可以通过零极点对消来简化掉PI参数,只需要控制一个参数即电流带宽即可)

3.3 速度环控制

然后进入到下一层的速度环:

在上图中,Speed_Ref是速度设定值,ω是电机的转速反馈,可以通过电机编码器或者霍尔传感器等计算得到,依然是使用PI控制。将计算得到的电机速度ω与速度设定值Speed_Ref进行误差值计算,代入速度PI环,计算的结果作为电流环的输入,就实现了速度-电流的双闭环控制。

3.4 位置环控制

最外一层是位置环,也就是可以控制电机旋转到某个精确的角度并保持,控制框图如下:

同理应该很简单可以理解,上图中位置控制PID只用了P项(也可以使用PI)。在实际使用中,由于编码器无法直接返回电机转速 ,因此可以通过计算一定时间内的编码值变化量来表示电机的转速(也即用平均速度代表瞬时速度)。当电机转速比较高的时候,这样的方式是可以的;但是在位置控制模式的时候,电机的转速会很慢(因为是要求转子固定在某个位置嘛),这时候用平均测速法会存在非常大的误差(转子不动或者动地很慢,编码器就没有输出或者只输出1、2个脉冲)。所以为了避免速度环节带来的误差,在做位置控制的时候可以只使用位置和电流组成的双环进行控制,不过此时需要对位置环做一定的变化,控制框图如下:

由于去掉了速度环,这里的位置环我们使用完整的PID控制,即把微分项加上(因为位置的微分就是速度,这样可以减小位置控制的震荡加快收敛;积分项的作用是为了消除静态误差)

至此整个控制回路基本上捋清楚了,只差最后一个步骤就是"SVPWM",下面我们开始对 SVPWM 做一个详细的介绍

四、SVPWM原理

如上面的三相逆变系统,我们知道SPWM就是生成三个相位相差120°的正弦波,SPWM是从电源的角度出发,构造出旋转所需的正弦电压,这种方式比较适合用作逆变器,但是对于无刷或者永磁同步电机,调节过的电源实际在定子线圈中产生的电流并不一定是所需的结果。SPWM不依赖开关顺序,3 相独立调制,也就是所谓的开环,是没有反馈的。所以这种控制方式还是不能较为准确的控制定子电流。因此这种永磁无刷电机直接通三相交流电并不一定能很平稳的旋转起来,不然的话纯硬件就可以产生规则的电流,哪还需要微控制器做复杂运算。

SVPWM 是空间矢量脉宽调制(Space Vector Pulse Width Modulation)的简称,主要思想是以三相对称正弦波电压供电时三相对称电机定子理想磁链圆为参考标准,以三相逆变器不同开关模式作适当的切换,从而形成 PWM 波,以所形成的实际磁链矢量来追踪其准确磁链圆。SVPWM需要依靠MOS管的开关顺序和把控整体的 3 相开关时间来调制有效电流 ,以此模拟出正弦电流。SVPWM将逆变系统和异步电机看作一个整体来考虑,模型比较简单,也便于微处理器的实时控制。SVPWM的优点主要有:优化谐波程度比较高,消除谐波效果要比 SPWM 好,实现容易,可以提高电压利用率。比较适合数字化控制系统。

SVPWM的主要特点有

  • 在每个扇区虽有多次开关切换,但每次开关切换只涉及一个器件,所以开关损耗小。
  • 利用电压空间矢量直接生成三相 PWM 波,计算简单。
  • 逆变器输出线电压基波最大值为直流侧电压,比一般的 SPWM 逆变器输出电压高15%

4.1 空间矢量合成

设直流母线侧电压为 U d c U_{dc} Udc,MOS管3相调制输出电压分别为 U A U_{A} UA、 U B U_{B} UB、 U C U_{C} UC,其分别加在空间上互差 120°的三相静止坐标系上,设 U m U_m Um为相电压基波峰值, f f f为电源频率,如图所示:

{ U A ( t ) = U m cos ⁡ ( ω t ) U B ( t ) = U m cos ⁡ ( ω t − 120 ° ) U C ( t ) = U m cos ⁡ ( ω t + 120 ° ) \left\{ \begin{array}{c} U_A(t) = U_m \cos (ωt) \\ U_B(t) = U_m \cos (ωt-120°)\\ U_C(t) = U_m \cos (ωt+120°) \\ \end{array} \right. ⎩ ⎨ ⎧UA(t)=Umcos(ωt)UB(t)=Umcos(ωt−120°)UC(t)=Umcos(ωt+120°)

SVPWM是空间矢量脉宽调制,矢量就是有方向的向量,所以相电压可以由一个空间电压矢量或其它分量代替。我们先定义三个电压空间矢量 u a n u_{an} uan、 u b n u_{bn} ubn、 u c n u_{cn} ucn,方向分别在其轴线上,大小随时间按正弦规律变化,相位差120°,有
{ u a n ( t ) = U A ( t ) e j 0 u b n ( t ) = U B ( t ) e j 2 π / 3 u c n ( t ) = U C ( t ) e − j 2 π / 3 \left\{ \begin{array}{c} u_{an}(t) = U_A(t) e^{j0} \\ u_{bn}(t) = U_B(t) e^{j2π/3} \\ u_{cn}(t) = U_C(t) e^{-j2π/3} \end{array} \right. ⎩ ⎨ ⎧uan(t)=UA(t)ej0ubn(t)=UB(t)ej2π/3ucn(t)=UC(t)e−j2π/3

则合成矢量 u s u_s us有
u s ( t ) = u a n ( t ) + u b n ( t ) + u c n ( t ) = U A ( t ) + U B ( t ) e j 2 π / 3 + U C ( t ) e − j 2 π / 3 = U m 2 ( e j ω t + e − j ω t ) + U m 2 [ e j ( ω t − 2 π / 3 ) + e − j ( ω t − 2 π / 3 ) ] e j 2 π / 3 + U m 2 [ e j ( ω t + 2 π / 3 ) + e − j ( ω t + 2 π / 3 ) ] e − j 2 π / 3 = 3 2 U m e j ω t \begin{split} u_s(t) = &u_{an}(t) + u_{bn}(t) + u_{cn}(t)\\ = &U_A(t) + U_B(t) e^{j2π/3} + U_C(t) e^{-j2π/3} \\ = &\frac {U_m}{2}(e^{jωt}+e^{-jωt}) \\ &+\frac {U_m}{2}\left[e^{j(ωt - 2π/3)}+e^{-j(ωt-2π/3)}\right]e^{j2π/3}\\ &+\frac {U_m}{2}\left[e^{j(ωt + 2π/3)}+e^{-j(ωt+2π/3)}\right]e^{-j2π/3} \\ =&\frac 32 U_m e^{jωt} \end{split} us(t)====uan(t)+ubn(t)+ucn(t)UA(t)+UB(t)ej2π/3+UC(t)e−j2π/32Um(ejωt+e−jωt)+2Um[ej(ωt−2π/3)+e−j(ωt−2π/3)]ej2π/3+2Um[ej(ωt+2π/3)+e−j(ωt+2π/3)]e−j2π/323Umejωt

可见 u s ( t ) u_s(t) us(t)是一个旋转的空间矢量,它的幅值不变为相电压峰值的1.5倍,且以角频率 ω = 2 π f ω= 2πf ω=2πf按逆时针方向匀速旋转的空间矢量。

由于驱动器三相桥臂依靠6只MOS 管,而MOS管只有导通和非导通状态(PWM 信号输入),再加上同一相的MOS管不可以同时打开(会烧掉),因此三相开关全部组合有8种情况。这里定义一个开关函数 S x S_x Sx〈𝑥 = 𝑎、𝑏、𝑐〉,abc 分别代表三相绕组,全部组合如下所示:

关于相电压,以上图开关S(100)为例,此时等效电路如图所示:

根据串联分压定理,有如下,剩下的三相开关组合情况同理
U a N = 2 3 U d c U b N = U c N = − 1 3 U d c \begin{split} U_{aN} &= \frac 23 U_{dc}\\ U_{bN} & = U_{cN} = -\frac 13 U_{dc}\\ \end{split} UaNUbN=32Udc=UcN=−31Udc

上面我们发现虽然是三相系统,但是矢量却是二维的,那我们是否可以使用二维坐标来表示合成矢量呢?答案当然是可以的

假设合成矢量 U ˙ \.U U˙的模是固定的为 U m U_m Um,则有
U ˙ = U d + j U q \.U = U_d + jU_q U˙=Ud+jUq

其中 U d = U m cos ⁡ ω t U_d = U_m \cos ωt Ud=Umcosωt, U q = U m sin ⁡ ω t U_q = U_m \sin ωt Uq=Umsinωt,那么可以将 U A U_{A} UA、 U B U_{B} UB、 U C U_{C} UC变成
U A ( t ) = U m cos ⁡ ω t = U d U B ( t ) = U m cos ⁡ ( ω t − 120 ° ) = U d cos ⁡ 120 ° + U q sin ⁡ 120 ° = − 1 2 U d + 3 2 U q U C ( t ) = U m cos ⁡ ( ω t + 120 ° ) = U d cos ⁡ 120 ° − U q sin ⁡ 120 ° = − 1 2 U d − 3 2 U q \begin{split} U_{A}(t) & = U_m \cos ωt = U_d \\ U_{B}(t) & = U_m \cos (ωt-120°) \\ & = U_d \cos 120° + U_q \sin 120° \\ & = -\frac 12 U_d + \frac {\sqrt 3}{2} U_q \\ U_{C}(t)&= U_m \cos (ωt+120°) \\ & = U_d \cos 120° - U_q \sin 120° \\ & = -\frac 12 U_d - \frac {\sqrt 3}{2} U_q \end{split} UA(t)UB(t)UC(t)=Umcosωt=Ud=Umcos(ωt−120°)=Udcos120°+Uqsin120°=−21Ud+23 Uq=Umcos(ωt+120°)=Udcos120°−Uqsin120°=−21Ud−23 Uq

用矩阵形式表示有
[ U A ( t ) U B ( t ) U C ( t ) ] = [ 1 0 − 1 2 3 2 − 1 2 3 2 ] [ U d U q ] \begin{bmatrix} U_{A}(t) \\ U_{B}(t) \\ U_{C}(t) \end{bmatrix} = \begin{bmatrix} 1 & 0 \\ -\frac 12 & \frac {\sqrt 3}2 \\ -\frac 12 & \frac {\sqrt 3}2 \end{bmatrix} \begin{bmatrix} U_d \\ U_q \end{bmatrix} UA(t)UB(t)UC(t) = 1−21−21023 23 [UdUq]

反过来同样有
[ U d U q ] = [ 1 − 1 2 − 1 2 0 3 2 − 3 2 ] [ U A ( t ) U B ( t ) U C ( t ) ] \begin{bmatrix} U_d \\ U_q \end{bmatrix} = \begin{bmatrix} 1 & -\frac 12 & -\frac 12 \\ 0 & \frac {\sqrt 3}2 & -\frac {\sqrt 3}2 \end{bmatrix} \begin{bmatrix} U_{A}(t) \\ U_{B}(t) \\ U_{C}(t) \end{bmatrix} [UdUq]=[10−2123 −21−23 ] UA(t)UB(t)UC(t)

这就表明新电压空间矢量与三相交流相电压矢量之间可以相互转换。此时把 U d U_d Ud和 U q U_q Uq变成横纵坐标 α α α和 β β β,这里假设电压基值为 2 3 U d c \sqrt{\frac 23}U_{dc} 32 Udc,同样8个开关方式,见下表

状态 S a S_a Sa S b S_b Sb S c S_c Sc U α U_α Uα U β U_β Uβ
0态V0 0 0 0 0 0
1态V1 0 0 1 2 3 U d c \sqrt{\frac 23}U_{dc} 32 Udc 0
2态V2 0 1 0 1 6 U d c \sqrt{\frac 16}U_{dc} 61 Udc 1 2 U d c \sqrt{\frac 12}U_{dc} 21 Udc
3态V3 0 1 1 − 1 6 U d c -\sqrt{\frac 16}U_{dc} −61 Udc 1 2 U d c \sqrt{\frac 12}U_{dc} 21 Udc
4态V4 1 0 0 − 2 3 U d c -\sqrt{\frac 23}U_{dc} −32 Udc 0
5态V5 1 0 1 − 1 6 U d c -\sqrt{\frac 16}U_{dc} −61 Udc − 1 2 U d c -\sqrt{\frac 12}U_{dc} −21 Udc
6态V6 1 1 0 1 6 U d c \sqrt{\frac 16}U_{dc} 61 Udc − 1 2 U d c -\sqrt{\frac 12}U_{dc} −21 Udc
7态V7 1 1 1 0 0

可以合成6个非0矢量和2个0矢量,如下图所示

4.2 SVPWM法则

上面虽然合成矢量,但是这样模拟出的三相正弦交流相电压,其幅值和相位不可控。我们可以通过控制相邻两个矢量以及0矢量在60°扇区中的各自作用时间长短来实现两个非0矢量的等效幅值大小,达到其合成矢量的幅值和相位均可控目的,如下图所示

其中 V r e f V_{ref} Vref为期望电压矢量, T s T_s Ts为采样周期, T a T_a Ta、 T b T_b Tb分别对应两个非零电压矢量的作用时间,再加上零电压矢量 V 0 V_0 V0的作用时间 T 0 T_0 T0,那么有
∫ 0 T s V r e f   d t = ∫ 0 T a V 1   d t + ∫ T s T a + T b V 2   d t + ∫ T a + T b T s V 0   d t \int_0^{T_s} V_{ref} \,{\rm d}t = \int_0^{T_a} V_1 \,{\rm d}t + \int_{T_s}^{T_a+T_b} V_2 \,{\rm d}t + \int_{T_a+T_b}^{T_s} V_0 \,{\rm d}t ∫0TsVrefdt=∫0TaV1dt+∫TsTa+TbV2dt+∫Ta+TbTsV0dt

可以等效成下式
V r e f ∗ T s = V 1 ∗ T a + V 2 ∗ T b + V 0 ∗ T 0 V_{ref} * T_s = V_1 * T_a + V_2 * T_b + V_0 * T_0 Vref∗Ts=V1∗Ta+V2∗Tb+V0∗T0

其意义是,矢量 V r e f V_{ref} Vref在 T s T_s Ts时间内所产生的积分效果值和 V 1 V_1 V1、 V 2 V_2 V2、 V 0 V_0 V0分别在时间 T a T_a Ta、 T b T_b Tb、 T 0 T_0 T0内产生的积分效果相加总和值相同。由于 ∣ U 4 ∣ = ∣ U 6 ∣ = 2 3 U d c |U_4|=|U_6|=\frac 23 U_{dc} ∣U4∣=∣U6∣=32Udc,到各矢量的状态保持时间为:
T a = M T s sin ⁡ ( π 3 − θ ) T b = M T s sin ⁡ ( θ ) \begin{split} T_a &= M T_s \sin(\frac π 3 - θ) \\ T_b &= M T_s \sin(θ) \end{split} TaTb=MTssin(3π−θ)=MTssin(θ)

式中 M M M为SVPWM的调制系数(调制比 ), M = 3 ∣ V r e f ∣ / U d c M=\sqrt 3|V_{ref}|/U_{dc} M=3 ∣Vref∣/Udc,而零电压向量所分配的时间为:
T 7 = T 0 = ( T s − T a − T b ) 或 T 7 = T 0 = ( T s − T a − T b ) / 2 T_7 = T_0 = (T_s - T_a - T_b)\\ 或T_7 = T_0 = (T_s - T_a - T_b)/2 T7=T0=(Ts−Ta−Tb)或T7=T0=(Ts−Ta−Tb)/2

得到以 V 1 V_1 V1、 V 2 V_2 V2、 V 7 V_7 V7及 V 0 V_0 V0合成的 V r e f V_{ref} Vref的时间后,接下来就是如何产生实际的脉宽调制波形。在SVPWM调制方案中,零矢量的选择是最具灵活性的,适当选择零矢量,可最大限度地减少开关次数,尽可能避免在负载电流较大的时刻的开关动作,最大限度地减少开关损耗。

这样8中开关状态可将360度的电压空间分为 60 度一个扇区,共六个扇区,利用这六个基本非零矢量和两个零量,可以合成 360 度内的任何矢量。如图所示:

4.3 MOS开关方式

以减少开关次数为目标,基本矢量作用顺序原则为:在每次开关状态转换时只改变其中一个相的开关状态,并且平均分配零矢量,使 PWM对称、降低 PWM的谐波分量。常用方式有7段式5段式 SVPWM。

  1. 七段式SVPWM

七段式SVPWM,由3段零矢量4段相邻的两个非零矢量 组成。3段零矢量分别位于PWM的开始、中间和结尾。以第Ⅰ扇区为例,三相调制波形在时间段 T s T_s Ts时段中如下图所示

图中电压矢量出现先后顺序为 U 0 U_0 U0、 U 4 U_4 U4、 U 6 U_6 U6、 U 7 U_7 U7、 U 6 U_6 U6、 U 4 U_4 U4、 U 0 U_0 U0,各电压矢量的三相波形对应三相调制开关状态,零矢量过后 U r e f U_{ref} Uref角度增加 γ γ γ,然后重新计算 T 0 T_0 T0、 T a T_a Ta、 T b T_b Tb、 T 7 T_7 T7,每一次载波周期合成一个新的矢量,角度逐渐增大,直至超过60度,然后进入Ⅱ扇区,开关顺序切换如下

然后按照Ⅱ扇区开关切换顺序合成角度递增的新的矢量,直至超过 120°范围,进入下一个扇区,直至旋转 360,然后依次循环。最后效果如下

  1. 五段式SVPWM

五段式SVPWM,有两种方式:使用V0矢量 和使用V7矢量 ,为方便电流采样通常采用V0矢量方式

最后效果如下

  1. 两种方式对比

7段SVPWM、5段SVPWM端电压对比

7段SVPWM、5段SVPWM选择

比较内容 7段SVPWM 5段SVPWM
THD 较低,性能好 较高,性能差
开关损耗 较高 减少1/3
功率开关
调制波形 连续 不连续
母线电压利用率 一致

4.4 矢量作用时间

通过上述推导可知,要实现信号调制,首先要知道参考电压矢量所在扇区位置,然后利用扇区相邻两个非零矢量和零矢量来合成,然后以旋转矢量为目标,在每个扇区内通过不同的开关顺序合成矢量来跟随目标旋转矢量。

空间矢量调制第一步需要判断空间电压矢量所处的扇区,假设合成电压矢量在Ⅰ扇区,则 0 ° < θ < 60 ° 0°<θ<60° 0°<θ<60°,由 tan ⁡ ( θ ) = U β / U α \tan(θ)=U_β/U_α tan(θ)=Uβ/Uα,可知 θ = arctan ⁡ ( U β / U α ) θ = \arctan(U_β/U_α) θ=arctan(Uβ/Uα),所以
0 ° < arctan ⁡ ( U β / U α ) < 60 ° 0°<\arctan(U_β/U_α)<60° 0°<arctan(Uβ/Uα)<60°

且满足
0 < tan ⁡ θ < 3 0<\tan θ<\sqrt 3 0<tanθ<3

可求知,当合成电压矢量在Ⅰ扇区时的充要条件是:
U α > 0 , U β > 0 , U β / U α < 3 U_α>0,U_β>0,U_β/U_α<\sqrt 3 Uα>0,Uβ>0,Uβ/Uα<3

其他扇区同理,可得:

若进一步分析以上的条件,可以看出电压矢量 U r e f U_{ref} Uref所在扇区由三个式子决定
U 1 = U β U 2 = 3 2 U α − 1 2 U β U 3 = − 3 2 U α − 1 2 U β \begin{split} U_1 & = U_β \\ U_2 & = \frac {\sqrt 3}{2} U_α - \frac 12 U_β \\ U_3 & = -\frac {\sqrt 3}{2} U_α - \frac 12 U_β \end{split} U1U2U3=Uβ=23 Uα−21Uβ=−23 Uα−21Uβ

以第一扇区为例,假设6个非零矢量幅值一致,均为 2 3 U d c \frac 23 U_{dc} 32Udc,如下

则有
U r e f ∗ T s = U 4 ∗ T 4 + U 6 ∗ T 6 U_{ref} * T_s = U_4 * T_4 + U_6 * T_6 Uref∗Ts=U4∗T4+U6∗T6

令 U r e f U_{ref} Uref和 U 4 U_4 U4的夹角为 θ θ θ,由正弦定理可得
∣ U r e f ∣ cos ⁡ ( θ ) = T 4 T s ∣ U 4 ∣ + T 6 T s ∣ U 6 ∣ cos ⁡ ( π 3 ) = U α T s ∣ U r e f ∣ sin ⁡ ( θ ) = T 6 T s ∣ U 6 ∣ + sin ⁡ ( π 3 ) = U β T s \begin{split} |U_{ref}|\cos (θ) &= \frac {T_4}{T_s}|U_4|+ \frac {T_6}{T_s}|U_6|\cos (\frac π 3) = U_α T_s\\ |U_{ref}|\sin (θ) &= \frac {T_6}{T_s}|U_6|+ \sin (\frac π 3) = U_β T_s \end{split} ∣Uref∣cos(θ)∣Uref∣sin(θ)=TsT4∣U4∣+TsT6∣U6∣cos(3π)=UαTs=TsT6∣U6∣+sin(3π)=UβTs

整理得出
U α T s = 2 3 U d c ( T 4 + 1 2 T 6 ) U β T s = 2 3 U d c ( 3 2 T 6 ) \begin{split} U_α T_s &= \frac {2}{3}U_{dc}(T_4 + \frac 12 T_6)\\ U_β T_s &= \frac {2}{3}U_{dc}(\frac {\sqrt 3}2 T_6) \end{split} UαTsUβTs=32Udc(T4+21T6)=32Udc(23 T6)

求得
T 4 = 3 U α T s 2 U d c − 1 2 T 6 = 3 U α T s 2 U d c − 1 2 3 U β T s 2 U d c = 3 T s U d c ( 3 U α 2 − U β 2 ) = 3 T s U d c U 2 T 6 = 3 U β T s U d c = 3 T s U d c U 1 T 7 = T 0 = T s − T 4 − T 6 2 ( 7 p e r i o d s ) 或 T 7 = T s − T 4 − T 6 ( 5 p e r i o d s ) U 1 = U β U 2 = 3 2 U α − 1 2 U β \begin{split} T_4 = &\frac {3U_αT_s}{2U_{dc}} - \frac 12 T_6 = \frac {3U_αT_s}{2U_{dc}} - \frac 12 \frac {\sqrt 3U_βT_s}{2U_{dc}} \\ =&\frac {\sqrt 3 T_s} {U_{dc}}\left(\frac {\sqrt 3 U_α} {2} - \frac{U_β}{2}\right) = \frac {\sqrt 3T_s}{U_{dc}} U_2\\ T_6 = &\frac {\sqrt 3 U_β T_s} {U_{dc}} = \frac {\sqrt 3T_s}{U_{dc}} U_1\\ T_7 = &T_0 = \frac {T_s - T_4 - T_6}2 (7periods)或 \\ T_7 = &T_s - T_4 - T_6 (5periods) \\ U_1 = &U_β \\ U_2 = &\frac {\sqrt 3}{2} U_α - \frac 12 U_β \\ \end{split} T4==T6=T7=T7=U1=U2=2Udc3UαTs−21T6=2Udc3UαTs−212Udc3 UβTsUdc3 Ts(23 Uα−2Uβ)=Udc3 TsU2Udc3 UβTs=Udc3 TsU1T0=2Ts−T4−T6(7periods)或Ts−T4−T6(5periods)Uβ23 Uα−21Uβ

至此我们得到了每一时刻所需要的空间电压矢量以及它们持续的时间,同理可计算得其他扇区基本空间矢量的作用时间。在处理器中赋值给对应通道的捕获比较寄存器产生相应的三个 PWM 波形,控制 MOS 管的开关,进而产生我们期望的电压、电流、力矩。

当俩零电压矢量作用时间为 0 时,一个 PWM 周期内非零电压作用时间最长,合成空间电压矢量幅值最大,其最大值不会超过正六边形边界,否则就会过调,输出电压波形就会失真,SVPWM 调制模式下能够输出的最大不失真旋转电压矢量为正六边形的内切圆,赋值为 3 2 ∗ 2 3 U d c = 3 3 U d c \frac {\sqrt 3}{2}*\frac 23U_{dc}=\frac{\sqrt 3}{3}U_{dc} 23 ∗32Udc=33 Udc,相对SPWM最大为 1 2 U d c \frac 12 U_{dc} 21Udc,因此SVPWM方式电压利用率高出 3 3 / 1 2 − 1 = 15.47 % \frac{\sqrt 3}{3}/\frac 12 - 1= 15.47 \% 33 /21−1=15.47%

至此,FOC的全部环节已经结束

相关推荐
吐泡泡科技14 天前
MATLAB直流电机模型,直流电机控制
pid·电机控制·直流电机
烦恼归林20 天前
永磁同步电机谐波抑制算法(11)——基于矢量比例积分调节器(vector PI controller,VPI controller)的谐波抑制策略
matlab·电机·电机控制·永磁同步电机·simulink仿真
youcans_20 天前
【动手学电机驱动】STM32-FOC(10)使用旋钮调节电机转速
stm32·单片机·电机控制·foc·pmsm
youcans_21 天前
【动手学电机驱动】STM32-FOC(9)无感 FOC 电机转速调节
stm32·单片机·嵌入式硬件·电机控制·foc
youcans_1 个月前
【动手学电机驱动】STM32-FOC(8)MCSDK Profiler 电机参数辨识
stm32·单片机·嵌入式硬件·电机控制·foc
做一道光1 个月前
八、无刷电机电压电流温度采集
单片机·嵌入式硬件·电机控制
初心不忘产学研2 个月前
如何对物理系统进行数学建模?
算法·数学建模·电机控制·双惯量旋转系统·简化数学模型·数学建模方法·负载工艺建模
朴人3 个月前
【从零开始实现stm32无刷电机FOC】【实践】【7.2/7 完整代码编写】
stm32·单片机·嵌入式硬件·foc
mengjiexu_cn3 个月前
FOC电机驱动开发踩坑记录
c++·svpwm·foc·滑膜控制器