资讯详情

FOC控制

FOC控制基础知识

  • 0. 前言
    • 0.1 什么是FOC
    • 0.2 FOC驱动器和无刷电调的区别
  • 从电机原理开始
    • 1.1 一些基础知识
    • 1.2 无刷直流电机原理
    • 1.3 关于BLDC和PMSM的区别
    • 1.4 实现驱动电路
    • 1.5 旋转三相电机波形
  • 2. FOC控制原理
    • 2.1 FOC算法的Pipeline
    • 2.2 Clark变换与Park变换
    • 2.3 PID控制
    • 2.4 空间电压矢量
    • 2.5 SVPWM技术
  • 3. 总结

0. 前言

0.1 什么是FOC

,磁场定向控制也称为直译(VC,Vector Control),是目前无刷直流电机(BLDC)与永磁同步电机(PMSM)最好的高效控制方法之一。FOC旨在准确控制磁场的大小和方向,使电机运动扭矩稳定,噪音低,效率高,动态响应高。

0.2 FOC驱动器和无刷电调的区别

在这里插入图片描述

  1. 由于控制原理的不同,无刷电调只能在高速下控制电机,在低速下难以控制;FOC无论转速如何,控制器都没有这样的限制。
  2. 由于上述原因,无感电调无法反馈转子位置,因此很难实现电机正反转的转向;FOC驱动器的换向性能极佳,最高速度下的正反转切换非常顺畅;另外FOC制动控制也可以以能量回收的形式进行。
  3. 普通电调只能控制电机转速,FOC三个闭环可以控制电流(扭矩)、速度和位置。
  4. FOC由于普通电调采用方波驱动,驱动器的噪音会比电调小很多,而且FOC是正弦波。

  1. 不同的电调驱动BLDC参数整定不需要,但是FOC需要。
  2. 实现电调算法更简单,操作量少,非常适合需要提高带宽的超高速电机。
  3. 电调的成本比FOC低很多。

从电机原理开始

1.1 一些基础知识

  1. 左手定则 用于判断磁场中导线的应力方向:伸开左手,使拇指垂直于其他四个手指,并在同一平面上,使磁线从手掌流入,四个手指指向电流方向,拇指指向安培力方向(即导体应力方向)。

  1. 右手定则 伸开右手,使拇指垂直于其他四个手指,并与手掌在同一平面上。将右手放入磁场中,使磁感应线垂直穿透手掌。拇指指向导体移动,其余四个指向感应电势的方向。也就是说,切割磁感应线的导体会产生反电势。事实上,通过反电势定位转子位置也是普通无感应电调的基本原理之一

  1. 右手螺旋定则(即安培定则) 用于判断电线圈的极性:用右手握住螺钉管,使四个手指弯曲到螺钉管的电流方向,拇指指的末端是螺钉管的N极。如果直线电流的磁场,拇指指向电流方向,另外四个手指弯曲指向磁感应线方向。

  1. PWM(脉冲宽度调制)

本质是利用面积等效原理来改变波形的有效值。例如,只有电灯如何实现两种状态?效果如何?只需要一半的时间,一半时间,只要交替执行这两个动作的频率足够高,在人眼(低通滤波器)看来就是是的。高电平占开关周期的比例称为。利用PWM离散开关量可用于模拟连续电压值。

1.2 无刷直流电机原理

调查下图中的情况,根据磁极异性相吸同性相斥的原理,中间永磁体在两侧电磁铁的作用下施加扭矩并旋转,这是电机驱动的基本原理:

对于简化的无刷电机来说,以例如,定子的三相绕组有方式和方式,而最常用的是这个模型的简单分析:

如上图所示,无刷电机三相的连接方式是。在这种情况下,如果我们是对的A、B如果极分别施加正电压和负电压,则可以通过右手螺旋定则判断线圈磁极的方向如下: 想想这个时候中间转子在哪个角度收到的最大扭矩。

没错就是和CO(O当中心点平行时,磁铁会受到影响A、B两个磁极一推一拉,直到旋转到和AB磁铁平行连接方向和AB当间磁力线方向一致时,受力矩为0且稳定,即上图右侧的状态。换句话说,。至于C暂时不起作用。

同样,我们的下一阶段也会被取代AC此时,转子倾向于转向下图右侧的角度:

然后BC相通电: 以此类推,每个通电状态下转子的角度为下图中的6个状态,每个状态相隔60度,6个过程完成完整旋转,共6次变相:

整个过程就像骑在驴子上挂胡萝卜。旋转磁场牵引永磁体不断旋转:

这也是最大的区别是,与刷电机的机械方向不同,无刷电机通过电子方向驱动转子不断旋转,电机的电压和KV值决定电机转速,电机转速决定换向频率。

至于什么时候怎么知道该换到哪个供电相?如何产生更平滑的换向电压?如何提高电源的利用效率?这些都是FOC探讨和解决控制方法中的问题。

1.3 关于BLDC和PMSM的区别

其实无刷电机可以分为无刷电机,结构相似,主要区别在于制造模式(线圈绕组模式)造成的一些特性差异(如反电势波形)。

从实上,从以上分析的无刷电机模型可以看出,由于转子在磁场中只有6个稳定状态,旋转过程实际上并不光滑,并且存在扭矩抖动(当无刷电机不通电时,你可以用手转动无刷电机,你会感觉到这种颗粒感)。因此,为了解决这个问题,有两个解决方案:硬件和软件的区别。

简单地说,BLDC由于反电动势接近梯形波,所以肯定是会有上面说的抖动问题的,但是转一圈抖6下太明显了,如果我增加电机槽、极对数(也就是磁铁对数),那以前是360度里面抖6下,现在变成120度里面抖6下,甚至更小,这样“颗粒感”不就变得更小了嘛?实际购买BLDC电机基本上是多极的(如下图所示)。原理与之前的分析相同。三相信号(图中的三条线)可以自行类比。BLDC也可结合抗齿槽算法FOC实现力矩补偿补偿。

另一方面,我们为什么要用它?这种不光滑的波来驱动电机?它不香吗?是的,这就是PMSM由于解决问题的方法,PMSM我们使用的反电动势被设计成正弦波的形状结合将方波转化为等效技术的技术SPWM正弦波或者SVPWM马鞍波,然后驱动电机,结果很好,控制果很理想。当然为了产生更好的波形、更好的旋转磁场,驱动器、控制算法就变得非常复杂,这

1.4 驱动电路实现

无刷电机的驱动电路主要使用三相逆变电路来实现,如下图:

所谓,即把变换为,或者简单点说就是一个可以产生不同电流流向的电路,通过前面的电机模型分析我们也可以看出,对于无刷电机的驱动是需要在不同时刻施加不同方向的电压(电流)的,因此需要逆变电路。

而逆变电路具体的实现则一般是采用来制作的。半桥电路的原型如下,其实很简单,就是两个MOS管组成的,中间引出一条输出线:

用3个半桥电路就可以组合成三相逆变电路,每个半桥引出的一根输出线跟无刷电机的一根相线相连,就完成了最基本的无刷驱动电路。

原理方面,MOS管可以看作电压控制的高速电子开关,在MOS管的栅极(上图中的High Drive和Low Drive)施加高电平或者低电平,就可以控制MOS源极和漏极的导通或者关闭。比如在下图中,我们打开第一组半桥的上桥臂、第二组和第三组半桥的下桥臂(其余的关闭),那么就可以让电流

于是通过控制三个半桥的不同开关状态,我们可以控制电流在电机中的不同流向了。

注意,在这个电路中,每个状态下电机的三相线圈都会有电流;
而在上一节的示例中我们同一时刻只会让两相线圈有电流,另一相不起作用。
那么这么修改的原因是啥呢?当然是:浪费可耻啊~
浪费一相不用那不就白白损失了一部分扭矩嘛?通过上图中的方式驱动原理也是和之前分析一致的,
但是可以产生更大的扭矩,所以当然是更好的选择啦。

接下来我们将半桥电路的状态做一个编码,首先限定一个半桥只有两种状态:

上桥开通下桥关断定义为状态 上桥关断下桥开通定义为状态

这样,三组半桥就一共有8种组合方式,编码分别为:,记住这点,后面会用上

可能有人会问,为什么一个半桥只能上桥臂和下桥臂有一个导通呢?都关闭或者都导通不行??
害,仔细想想就知道,上下都导通显然是不可能的,因为这就相当于把电源短路了啊...
那上下都断开呢?也不需要,因为这样就回到前面提到的,这时候电机有一相不起作用,浪了个费。
实际上半桥驱动电路的实现会比上面的分析要复杂一些,
比如需要考虑开关管的开关频率、开启和关断时间不对称、死区问题等等,
我后面设计的FOC驱动使用的是专用的半桥MOS栅极驱动IC来实现的。

1.5 旋转的三相电机波形

按照前面的无刷电机基本模型,假设我们拿到这样一个电机,示波器观察它的三相输出电压(也就是反电动势产生的电压),会看到什么波形呢?

其实很自然可以想到,我们会得到,而且三根曲线两两相位差为120°:

实际上三相发电机的发电原理就是这样的,输出的就是三相幅值为220V的交流电(线电压为380V,即 [公式] ​V)。

,所以假如反过来我们在三相无刷电机的三相线圈上输入上述三相正弦电压,那么就可以驱动无刷电机平稳高效地旋转了。

而这也是FOC驱动无刷电机的基本手段,

2. FOC控制原理

大家刚开始接触FOC查阅相关资料文献的时候,可能都会感觉有点晕:

2.1 FOC算法的Pipeline

我们先来看一下FOC控制的整个流程图景:

稍微解释一下,这幅图是以电流闭环控制为例的,也就是让电机始终产生一个恒定的力矩(也就是恒定的电流,因为力矩和电流成正比)。

可以看到控制器的输入是最左边的 Iq_ref ​和Id_ref,两个变量经过PID控制器进行反馈调节,其中还涉及到几个变换模块,有Park变换和Clark变换;最后通过前面提到的SVPWM模块作用到三相逆变器上进而控制电机;而PID控制器的反馈量,是对电机输出电流的采样值。

上面的过程不好理解没关系,先概括一下,FOC控制的整个过程是这样的:

下面我们来分别介绍每一步的具体操作以及意义。

2.2 Clark变换与Park变换

前面分析了,如果要平稳地驱动三相电机转动,我们就需要生成三个相位相差120度的正弦波,但是我们,只有电压最大值和0值两个状态啊,怎么去生成连续变化的正弦波呢?

对了,用前面提到的PWM技术就可以做到,所谓SPWM就是这么干的,如下图:

大家观察一下上图的波形,我们用上面坐标系中的正弦波和三角波的交点投影到下面的坐标轴,以此确定PWM的占空比变化规律,这样合成的PWM波,经过低通滤波器之后,其实就等效为了一个正弦波!所以SPWM就是在PWM的基础上用正弦波来调制合成的具有正弦波规律变化的方波。

,原因是SPWM要比后面要说的SVPWM的母线电压利用率要低15%。

因为要对于非线性的信号进行准确控制就要使用复杂的高阶控制器,这对于建模成本、处理器算力、控制实时性等都是不利的。简单地说就是,咱们控制器的反馈输入变量不是三个电流采样值嘛,你要我稳稳地跟踪三个正弦波太麻烦啦!

Clark变换

我们回到上面的第1步,也就是对电机的三个相电流进行采样,这一步会使用串联的采样电阻(Shunt)进行电流采样。


由于电机工作的电流一般很大,所以采样电阻的阻值非常小,甚至和导线的电阻接近了,因而实际的采样电路PCB设计的时候还有一些讲究,比如使用开尔文接法(Kelvin connections)。


但是我们实际电路设计时可以不使用三个采样器(实际有单采样电阻、双采样电阻和三采样电阻接法),只需要两个就够了。因为由,在任一时刻,流入节点的电流之和等于流出节点的电流之和,也就是说​

I a + I b + I c = 0 I_a+I_b+I_c=0 Ia​+Ib​+Ic​=0

只需要知道其中两个就可以计算出第三个了。

这三个电流基本上就是三个相位相差120度的正弦波,在把这些信号输入控制器反馈控制之前,我们先来做点数学游戏:

我们知道三相坐标系 ( I a , I b , I c ) (I_a, I_b, I_c) (Ia​,Ib​,Ic​)​如下:

而且很明显​ ( I a , I b , I c ) (I_a, I_b, I_c) (Ia​,Ib​,Ic​)这三个基向量是非正交的,学过线性代数的同学可能会想到,我们可以做一个很简单的基变换将其正交化为一个直角坐标系,我们把新的直角坐标系命名为 α , β \alpha, \beta α,β坐标系,变换公式如下:

其实就是个很简单的坐标轴投影计算,写成矩阵形式如下

于是我们就回到直角坐标系啦,是不是很开心,变换前后的波形如下:

可以看到变换后其实还是正弦波…只不过我们少了一个需要控制的变量了,现在只需要控制​ I α , I β I_\alpha,I_\beta Iα​,Iβ​这两个变量,让其满足上图的下面的波形变化规律就可以控制电机旋转 了,频率还是不变的。

  • 注意这里的​ I α , I β I_\alpha,I_\beta Iα​,Iβ​是我们虚拟出来的变量,所以在计算出一组​ I α , I β I_\alpha,I_\beta Iα​,Iβ​ 后,我们通过上述公式的反向变换公式变换回去再应用到电机的三相上。

就这?

当然不是,如果只是为了减小一个控制变量那这个操作显然有点多此一举。

有趣的是我们还可以接着变换:虽然​ I α , I β I_\alpha,I_\beta Iα​,Iβ​坐标系下少了一维变量,但是新的变量还是非线性的(正弦),有没有办法把它们线性化呢?有的,Park变换就是做这个工作的。

Park变换

这一步中我们接着将 I α − I β I_\alpha-I_\beta Iα​−Iβ​坐标系旋转 θ \theta θ度,其中 θ \theta θ是转子当前的角度,如下图:

变换公式如下:

也很简单,就是作用了一个旋转矩阵,写成矩阵形式:

也就是说,这个​ d − q d-q d−q坐标系是始终跟着转子旋转的!

这个操作是可行的,因为我们会通过编码器输入转子的实时旋转角度,所以这个角度​始终是一个已知数。经过这一步的变换,我们会发现,一个匀速旋转向量在这个坐标系下变成了一个定值!(显然的嘛,因为参考系相对于该向量静止了),这个坐标系下两个控制变量都被线性化了!

接下来如果我们以 I q , I d I_q,I_d Iq​,Id​这两个值作为反馈控制的对象,那么显然就可以使用一些线性控制器来进行控制了,比如(是的,尽管学术界有很多炫酷的高级控制方法, 但是工业界还是偏爱PID)。

至此我们已经理解完上面的前3步了。

2.3 PID控制

控制是啥这篇文章就不多讲解了,基础中的基础,也有大把文章做介绍的,不熟悉的可以自行搜索相关资料。

在FOC控制中主要用到三个PID环,从内环到外环依次是:

也就是说: -> 然后 -> 再通过

其中最内环的电流换控制框图如下:

可以看出来,这也就是前面提到的FOC控制9个步骤所描述的过程。实际只用到了PI控制,没有引入微分,因为如果推导一下电压和电流的传递函数会发现这其实就是一个一阶惯性环节(而且实际上我们可以通过零极点对消来简化掉PI参数,只需要控制一个参数即电流带宽即可)。

上图中的Speed & Position模块可以是编码器,或者霍尔传感器等能感应转子位置的传感器 。

特别说明一下其中的 I q , I d , I q r e f , I d r e f I_q,I_d,I_qref,I_dref Iq​,Id​,Iq​ref,Id​ref,前两者大家知道是通过Clark变换和Park变换得到的,而后两者是我们预期希望前两者达到的值,这个值具体代表了什么物理量呢?参考一下下图:

也就是说我们一通操作将转子磁链进行了解耦,分解为了转子旋转的径向和切向这两个方向的变量:

  • 其中 I q I_q Iq​是我们需要的,代表了期望的力矩输出
  • 而 I d I_d Id​ 是我们不需要的,我们希望尽可能把它控制为0

通过PID控制器使用上述输入(电流采样值、编码器位置)和输出(MOS管开关状态)完成对电机电流的闭环控制。

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

在上图中, S p e e d r e f Speed_{ref} Speedref​是速度设定值, w w w 是电机的转速反馈,可以通过电机编码器或者霍尔传感器等计算得到,依然是使用

将计算得到的电机速度 w w w 与速度设定值 S p e e d r e f Speed_{ref} Speedref​进行误差值计算,代入速度PI环,计算的结果作为电流环的输入,就实现了速度-电流的双闭环控制。

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

同理应该很简单可以理解,上图中位置控制PID只用了P项(也可以使用PI)。

在实际使用中,由于编码器无法直接返回电机转速 w w w,因此可以通过计算一定时间内的编码值变化量来表示电机的转速(也即用平均速度代表瞬时速度)。当电机转速比较高的时候,这样的方式是可以的;但是在位置控制模式的时候,电机的转速会很慢(因为是要求转子固定在某个位置嘛),这时候用平均测速法会存在非常大的误差(转子不动或者动地很慢,编码器就没有输出或者只输出1、2个脉冲)。

所以为了避免速度环节带来的误差,在做位置控制的时候可以只使用位置和电流组成的双环进行控制,不过此时需要对位置环做一定的变化,控制框图如下:

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

,但是还有一些细节我们没讲到,就是上面框图中的SVPWM模块。

细心的同学可会发现,在整个控制流程图里面有Park变换和对应的反Park变换 ,但是却没有Clark变换对应的反Clark变换 ,取而代之的是一个SVPWM模块。

下面会对SVPWM技术进行详细介绍。

2.4 空间电压矢量

什么是空间电压矢量?

空间电压矢量是我们在控制电机过程中虚拟出来的一个矢量,既然是矢量,自然是有大小和方向的,那么它的大小和方向是什么呢?

还是以前面那幅图中的状态为例,输入的状态:

此时等效电路如图: 因此电机中(相电压是每相相对于电机中间连接点的电压)可以表示为:

其实就是个最简单的分压电路,其中 U d c U_{dc} Udc​是母线电压,也就是电源电压。 如果我们规定指向中心的方向为正,反之为负,那么此时我们可以画出下图中的三个电压矢量 再结合前面章节的分析,转子永磁体会努力旋转到内部磁力线和外部磁场方向一致,。而这个矢量是会不断在空间中旋转的,它的幅值不变,为相电压峰值 U d c U_dc Ud​c,且以角速度 w = 2 π f w=2\pi f w=2πf ​匀速旋转。

我们后面将会看到,SVPWM算法的目的,就是使用三相桥的开关状态把在空间中旋转的​矢量表示出来,我们把这个矢量称为

用数学公式来表示的话就是:

为了研究各相上下桥臂不同开关组合时逆变器输出的空间电压矢量,我们定义开关函数 S x ( x ∈ a , b , c ) S_x(x\in a,b,c) Sx​(x∈a,b,c)为: 上桥臂导通下桥臂导通

和两个零矢量​:

可以看出零矢量状态下电机三相间电压都为0不产生转矩(不考虑反电动势)。

下面以其中一种开关组合为例分析,假设 S x = U 4 ( 100 ) S_x=U_4(100) Sx​=U4​(100),也即这张图中的状态: 如前文分析,此时的电压矢量为AO方向,大小为 U d c U_{dc} Udc​,我们把这个矢量画在坐标轴中如图:

  • 注意上图中的(100)矢量方向和AO方向是相反的(变成OA方向),这跟正方向的定义有关,这样的规定更直观一些。 同时可以注意到两个零矢量其实和原点重合了,因为这两个状态下电机中产生力矩的磁场为0(不考虑旋转过程中的反电动势产生的阻力力矩)。

同理,上图中还可以看出其余5个空间电压矢量,它们的端点组成了一个正六边形,同时把平面划分成了六个扇区(也就是图中的Ⅰ、Ⅱ、Ⅲ、Ⅳ、Ⅴ、Ⅵ)。

2.5 SVPWM技术

既然是“矢量控制”,当然是有办法的,答案就是:来合成每个扇区内的任意电压矢量,即: 离散化后等效为下式:

式子中的 U r e f U_{ref} Uref​是我们期望得到的电压矢量,T是一个PWM周期。 所以上面公式的含义就是:

是不是跟PWM的思想完全一样呢,这也是为什么这个方法被成为SVPWM(空间电压矢量脉宽调制)。

下面举一个栗子,假设我们要合成图中所示的 U r e f U_{ref} 标签: 交流电灯电阻会变化吗传感器没5伏正极p脉冲位移传感器901扭矩转速角度传感器200静态扭矩传感器15ao两线交流传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台