FOC(Field-Oriented Control,磁场定向控制)是一种电机控制策略,又称矢量控制,是通过控制变频器输出电压的幅值和频率控制三相直流无刷电机的一种变频驱动控制方法。
FOC 的实质是运用坐标变换将三相静止坐标系下的电机相电流转换到相对于转子磁极轴线静止的旋转坐标系上,通过控制旋转坐标系下的矢量大小和方向达到控制电机目的。
无刷电机
直流有刷电机指的是电机工作的时候,线圈和转换器一起旋转,磁钢和碳刷不转,通过电机转动换向器和电刷来完成线圈电流方向的交替变化。
而直流无刷电机使用电子换向器取代了机械的电刷和机械的换向器装置,保留了直流电机线性机械性优秀、起动转矩大、调速范围宽、控制电路简单等优点,所以当直流无刷电机一经出现就以很快的速度发展和普及。
无刷直流电机的三相绕组之间一般呈三角形连接或 Y 型连接,其控制电路常采用桥式电路,通过 Y 型连接和桥式电路的组合,可以实现对无刷直流电机的转速和转向进行精确控制,以满足各种应用需求。
下图是电机绕组按照 Y 型连接,通过控制不同MOS管的通断组合, 电机线圈电流大小和方向就能够被改变。

当打开Q1管和Q4管时,电流的方向由A相流向B相,再流出到负极。根据右手螺旋定则,在这一过程中,电机的定子A相线圈会产生对内的N级磁场,同时B相线圈会产生对内的S级磁场。
由于同性相斥和异性相吸的原理,这将导致定子线圈吸引转子上的磁铁并引起转动。
随后,当打开Q5管和Q4管时,电流的方向发生变化,使得电机的定子C相线圈产生对内的N级磁场,同时B相线圈产生对内的S级磁场。
根据右手螺旋定则,转子磁极会发生进一步的旋转。通过交替地开关不同的MOS管,可以实现电机磁极的交替运动,从而驱动电机的转动。
以下为动图展示了内转子无刷电机的旋转过程【来自matlab电机控制视频】

这就是无刷电机旋转运动的基本原理。通过精确控制MOS管的通断状态,可以实现电机转速和转向的精确控制。
这种无刷电机的设计结构和控制方法,使其在诸多应用中得到广泛应用。
而MOS管的开关规律是需要用到单片机程序进行控制的,因此这就引出了FOC控制算法,FOC控制是一种通过对电机运动模型进行抽象化和简化的控制方法。
它基于电机的数学模型,通过测量电流、转速和位置等参数来计算最优的MOS管开关和通断状态,以实现对电机的精确控制。
FOC控制使得各个MOS管的开关和通断过程变得有规律可循,从而确保电机的稳定运行和高效性能。
在满足假设:

FOC控制
磁场定向控制(FOC)也叫做矢量控制,它的基本思想是选取电机的某个旋转磁场轴作为设定的同步旋转坐标轴。
在无刷直流电机中,可以选择转子磁场、气隙磁场和定子磁场三种旋转磁场轴。一般来说,选择转子磁场作为FOC控制的同步旋转轴。
FOC的基本做法是通过坐标变换,将正弦波定子电流分解成与磁场平行的磁场分量电流和与磁场垂直的转矩分量电流,分别称为直轴电流和交轴电流,并对这两种电流进行控制。
这种分解让磁通电流分量和转矩电流分量完全解耦,类似于方波驱动控制,从而实现了稳定和高性能的控制。
FOC 控制主要由 Clark 变换、Park 变换、Park 逆变换、PID 控制、SVPWM控制五个模块组成。


坐标变换
无刷直流电机的方程比较复杂,为了方便处理,一般采用坐标变换理论对其进行相应的处理。
处理的方式基本上就是,利用坐标变化将电机转子变量和定子变量变换到一个旋转的坐标系当中,该坐标系就是实现 FOC 算法必须选取的磁场定向轴,它的旋转速度为w。
克拉克变换(Clark):
Clark变换是将三相定子坐标系变换到两相静止坐标系中的过程:

在三相定子坐标系中,电机三相电流相位差 120°,即如图所示:

显然,针对α-β坐标系中的α轴

针对α-β坐标系中的β轴

写成矩阵的形式:



根据基尔霍夫电流定律:

最终得到:

克拉克逆变换:

最终得到:

帕克变换(Park):



对于映射到d轴上的α,β分量:

对于映射到q轴上的α,β分量:

写成矩阵形式:

帕克逆变换:

写成电压形式:

PI 控制器

SVPWM 技术
SVPWM(Space Vector Pulse Width Modulation) 算法已广泛应用于交流变频调速系统中,该算法以电机为研究对象,主要研究如何控制定子绕组的电压使电机获得圆形恒定磁场。
与其他控制方法相比,SVPWM 控制三相逆变器具有直流母线电压利用率高、在调节输出电压基波大小的同时降低输出电压谐波、并且可以降低逆变器状态转换过程中的开关动作频率。
采用SVPWM 矢量控制可以快速控制电机输出转矩和转速,使其具有更好的动态性能。
要实现一个恒定大小的旋转磁场,我们可以先获得一个恒定大小的旋转电压矢量。
通过使用相位互差120度的三个矢量,我们可以合成一个大小不变的旋转电压矢量。
实际上,电机的三个绕组本身就是相互相位差120度的,因此,通过按正弦变化的方式控制电压,我们可以得到这个合成电压矢量,从而实现恒定大小的旋转磁场。
图片来自【T.Davies 2002】




将八个电压矢量画到电压空间矢量图中,六个非零矢量放在坐标轴线上,两个零矢量放在坐标轴的中心处,并且基本矢量的幅值均为直流测电压的 2/3 倍:

电压空间矢量图是一种图形表示方法,用于合成和控制三相电压。
根据该图,我们可以知道非零电压矢量之间的夹角为60度,它们平均分布在整个平面上,将平面分为六个扇区。
对于任意一个扇区,我们可以利用该扇区边界上的两个非零矢量和相应的零矢量,按照一定的关系合成该扇区内的任何矢量。通过这种方法,我们可以合成任意矢量。


实现 SVPWM 调制需要先确定此时参考电压所处的扇区位置,然后才能根据平衡等效原理确定相邻电压矢量以及零矢量的作用时间。
扇区的确定:

引进三个决策变量 A、B、C,通过分析可以得出:

令N=4C+2B+A,则可以得到如表所示的 N与扇区的关系。
因此,对于任意一个给定的空间电压矢量,通过该表就可以确定其所处的扇区。

合成矢量作用时间:
以扇区 I 为例,空间电压矢量在αβ坐标上的合成方式如下图所示

可得到:

对时间变量进行求解,得到:

即为每个扇区内,合成电压所需要的作用时间,当需要合成的电压矢量位于不同的扇区时都存在相同的运算方式。
因此,令:





例如,当合成矢量位于第Ⅰ扇区时,采用表中的开关切换顺序可以得到一个调制周期中的三相波形,如上图所示。
到了下一个调制周期后,合成矢量的角度增加一份,利用式 33 和 34 可以算出新的矢量作用时间,得到新的三相 PWM 波形。
随着电压矢量的旋转角度逐步增加,合成矢量将会依次通过各个扇区。所以,SVPWM会在每个载波周期进行一次计算。
因此,要实现 SVPWM 波形的调制,首先要判断出当前矢量所处的扇区,然后根据该扇区的两个非零矢量和零矢量的关系,通过 SVPWM 算法得出各个矢量的作用时间,接着就能够确定出该扇区的开关切换时间,从而生成调制的三相 SVPWM 波形。
当合成矢量在空间转过一圈后,同时也就生成了一个周期的正弦电压波形。
下面动态展示工作流程(图中是以三角波为例,正弦波与之类似)
