1、FOC简介
FOC(field-oriented control)为磁场定向控制,又称为矢量控制(vectorcontrol),是目前无刷直流电机(BLDC)和永磁同步电机(PMSM)高效控制的最佳选择。FOC 可以精确地控制磁场大小与方向,使得电机转矩平稳、噪声小、效率高,并且具有高速的动态响应。目前已在很多应用上逐步替代传统的控制方式,在运动控制行业中备受瞩目。
电流可以产生磁场,并且磁场大小与电流大小成正比,因此为了使定子构造最合适的旋转磁场,需要精确控制线电流。想要磁场旋转就需要线电流做着正弦变化,而 3 组线圈绕组的角度差,就使得三相电流需要时刻做相位差为 120 度的正弦变化,这时可使定子构造最合适的旋转磁场,显然简单的 6 步换向无法控制三相电流做正弦变化,转矩在一定程度上会有跳变,这样无法输出稳定转矩,因此需要 FOC 来保持转子的扭矩时刻连续稳定可调。下面总结六步换向和 FOC 控制方式的对比表,如下表所示。
2、FOC框图
上图是以电流闭环控制为例,也就是让电机始终保持一个恒定力矩(力矩与电流成正比)。最左边的 Iq_Ref 和 Id_Ref 两个变量经过 PID 控制器进行反馈调节,其中涉及到几个变换模块,包括:Clarke 变换、Park 变换以及反 Park 变换,最后是 SVPWM模块作用到三相逆变器进而控制电机旋转。
FOC 的整个控制框图:
① 对电机三相电流进行采样得到:ia、ib、ic;
② 将 ia、ib、ic 经过 clarke 变换得到 iα、iβ;
③ 将 iα、iβ 经过 park 变换得到 iq、id;
④ 计算 iq、id 和其设定值 iq_Ref、id_Ref 的误差;
⑤ 将上述误差输入到两个 PID(只用到 PI)控制器,得到输出的控制电压Vq、Vd;
⑥ 将 Vq、Vd 进行反 park 变换得到 Vα、Vβ;
⑦ 将 Vα、Vβ 输入 SVPWM 模块进行调制,合成电压空间矢量,输出该时刻三个半桥的开关状态进而控制电机旋转;
⑧ 循环上述步骤。
3、FOC坐标变换(FOC控制的核心)
假设我们将一个 PMSM 电机手动让其匀速旋转,此时使用示波器观察它的三相输出电压(反电动势),我们会发现示波器上会得到三组正弦波,并且三组正弦波之间两两相位差为 120°。
所以反过来我们在三相无刷电机的三相线圈上输入上述三相正弦电压,那么就可以驱动无刷电机平稳高效地旋转了。而这正是 FOC 驱动无刷电机的基本手段,但是从控制的角度来看,我们根本就不想跟三个正弦波打交道,因为对于非线性的信号进行准确控制就要使用复杂的高阶控制器,这对于建模成本、处理器算力、控制实时性等都是非常不利的,那么有没有什么方法可以将被控制量线性化呢?答案是当然有的,只需要应用一些数学技巧。
3.1CLARKE变换
三相电路计算困难,将三相等效成二相,变换原则是电流产生的磁场相等。
根据基尔霍夫定律(KCL)可得,流入节点的电流之和等于流出节点的电流之和。Ia+ib+ic=0;
将ia、ib、ic分解为iα和iβ
假设变换前三相定子绕组匝数为N3,变换后的两相定子绕组匝数为N2,根据磁动量守恒可得:
提取iα和iβ可以得到
遵循恒幅值不变原理可得:N3/N2=2/3
带入N3/N2可得
归纳为
化简为
经过 Clarke 变换后就变成了直角坐标系了,变换前后的波形如下图。
可以看到变换后还是正弦波,虽然少了一个需要控制的变量,但是新的变量还是非线性的(正弦),控制它依旧难度很大。此时就需要使用PARK进行变换来得到两个线性的变量。
3.2PARK变换
Park变换可以将电机从两相静止坐标系变换到随转子转动的坐标系(dq轴)。
d轴方向与转子内磁场方向重合,称为直轴;q轴方向与转子内磁场方向垂直,称为交轴。
将iα和iβ分解为id和iq。
将 α—β 坐标系变换到 d-q 坐标系,即 Park 变换;依据坐标变换,Park 变换矩阵为:
变换公式后为
3.3反PARK变换
在将 Park 变换后的结果在经过 PID 控制器,PI 运算后的输出结果在进行反 Park 变换,反 Park 变换矩阵为:
变换公式后为
4、FOC的目的
通过将转子磁链进行了解耦,分解为转子旋转的径向和切向这两个方向的变量:Iq 以及 Id。
1、Iq 是我们需要的。代表了期望的力矩输出;
2、Id 是我们不需要的。我们希望尽可能把它控制为 0;
5、FOC中PID双环和三环的使用
电流环、速度环、位置环都会经历完成了FOC流程,并在PID控制模块进行偏差计算,对前一个系统(外环)的输出进行偏差的计算,计算结果作为后一个系统(内环)的输入。
位置环、速度环、电流环(由外环到内环排序)
Position_Ref 是位置设定值,Position 是位置反馈,Speed_Ref 是速度设定值,w 是电机转速。
将位置环的输出,作为速度环的输入;将速度环的输出,作为电流环的输入,就可以实现位置+速度+电流三闭环控制了。
速度环、电流环(由外环到内环排序)
Speed_Ref 是速度设定值,w 是电机转速。
将速度环的输出,作为电流环的输入,就可以实现速度+电流双闭环控制了。