浅析永磁同步电机(PMSM)的FOC闭环控制

发布者:SparklingStar22最新更新时间:2024-07-30 来源: elecfans关键字:永磁同步电机  PMSM  FOC  闭环控制 手机看文章 扫描二维码
随时随地手机看文章

在学习FOC控制前,我对于FOC控制完全不懂,只知道中文叫做磁场定向控制,因公司产品开发需要用到对永磁同步电机(PMSM)进行精确的位置控制,才开始从网上了解什么是FOC,有哪些数学公式,控制的过程是怎么样的,但由于公司没有人知道这一块的知识,所以只能一个人慢慢找资料学习,网上有不少关于FOC的资料,不过讲的都不全面,而且有的还会存在错误,但是不懂的时候也无法分辨对错,所以走了不少弯路。所以将个人的学习心得记录于此,与大家分享,由于需要对电机进行位置控制,所以使用了14位分辨率的磁编码器。


FOC主要是通过对电机电流的控制实现对电机转矩(电流)、速度、位置的控制。通常是电流作为最内环,速度是中间环,位置作为最外环。


下图是电流环(最内环)的控制框图:

图片

图一:电流环

在图一中,Iq_Ref是q轴(交轴)电流设定值,Id_Ref是d轴(直轴)电流设定值,关于交轴直轴不再介绍,大家自行百度。

Ia, Ib, Ic分别是A相、B相、C相的采样电流,是可以直接通过AD采样得到的,通常直接采样其中两相,利用公式Ia+Ib+Ic=0计算得到第三相,电角度θ可以通过实时读取磁编码器的值计算得到。

在得到三相电流和电角度后,即可以进行电流环的执行了:三相电流Ia, Ib, Ic经过Clark变换得到Iα, Iβ;然后经过Park变换得到Iq, Id;然后分别与他们的设定值Iq_Ref, Id_Ref计算误差值;然后分别将q轴电流误差值代入q轴电流PI环计算得到Vq,将d轴电流误差值代入d轴电流PI环计算得到Vd;然后对Vq, Vd进行反Park变换得到Vα, Vβ;然后经过SVPWM算法得到Va, Vb, Vc,最后输入到电机三相上。这样就完成了一次电流环的控制。

当对PMSM进行速度控制时,需要在电流环外面加一个速度环,控制框图如下:

图片

图二:速度电流双环

在图二中,Speed_Ref是速度设定值,ω是电机的转速反馈,可以通过电机编码器计算得到。

将计算得到的电机速度ω与速度设定值Speed_Ref进行误差值计算,代入速度PI环,计算的结果作为电流环的输入;比较图二和图一的电流环部分可以发现,图二中d轴电流被设定为零(Id_Ref=0),因为d轴电流对于驱动电机的转动不会产生输出力,所以通常情况下都会将d轴电流设定为零(但不是总是设定为0的);当Id_Ref=0时,Iq_Ref就等于了速度环的输出;再结合上面的电流环,就实现了速度电流的双闭环控制。

当对PMSM进行位置控制时,需要在速度电流环外面加一个位置环,控制框图如下:

图片

图三:位置速度电流三环

在图三中,Position_Ref是位置设定值,Position(θ)是电机的当前位置,可以通过电机编码器得知,位置控制可以分为电角度位置控制和机械角度位置控制。

将得到的当前位置Position(θ)和位置设定值Position_Ref计算误差值代入P环,输出作为速度环的输入Speed_Ref,在结合上面的速度电流环实现位置速度电流三闭环控制。

在实际使用中,由于磁编码器无法直接返回电机转速ω,需要计算一定时间内的磁编码值变化量来表示电机的转速ω(M法测速),假设1ms的角度变化量为δ个,则ω=δ/1ms=δ,(单位:个/ms),当电机转速比较快的时候,这样的方式是可以的;但是在位置控制的时候,电机的速度会很慢,1分钟的转速可能只有1、2转,用M法测速会存在非常大的误差,增大单位时间可以适当降低误差,但随之而来整个系统的延迟也会增大。

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

图片

图四:位置电流双环

在图四中,只使用了位置电流双环实现位置控制。

在位置控制中,会涉及到电机的启动加速和刹车减速,所以只有P环肯定是不够的,还需要加入I和D实现PID环进行控制;如果对于位置控制的精度要求不高,允许存在1、2度的误差的话,可以只使用P和D实现PD环控制即可。

以上简单介绍了电机控制中的过程,不难发现,主要包括了PID控制器和FOC控制算法。PID控制器是自动控制中最常用的一种控制算法,应用非常广泛,网上关于PID的资料也非常多,下面详细讲解FOC控制算法。

从上面的控制框图中可以看出,FOC主要包含了电流采样、坐标变换(Clark, Park, 反Park)、SVPWM。

前面讲过,三相电流Ia, Ib, Ic是可以通过采样和公式Ia+Ib+Ic=0得到的,并三相电流的相位差是120°,如下图:

图片

图五:三相电流

图五中Ia, Ib, Ic分别是三相电流。

然后经过Clark变换得到Iα, Iβ,如下图:

图片

图六:Clark变换

Clark变换是将静止的三相a, b, c变换成静止的两相α, β,由于不知道如何在编辑器中输入矩阵,所以选择在word中写好截图过来,公式如下:

图片

图六 1

于是可以推导出:

图片

图六 2

将Ia+Ib+Ic=0代入上面的公式,可以得到:

图片

图六 3

我们需要关心的是Iα和Iβ,所以Clark变化最后的公式就是:

Iα = Ia ;

Iβ = (Ia + 2*Ib) /√3 ;

然后经过Park变换得到Iq, Id,他们是相互垂直的并且同时跟随着磁场方向在旋转,如下图:

图片

图七:Park变换

如图七所示,Park变换是将静止的α,β电流变换成旋转的q轴和d轴电流,θ是旋转的角度,也称为电角度。

以电角度θ为夹角,分别对Iα,Iβ进行矢量分解,计算投影到q轴和d轴上的电流分量,可以得到以下公式:

Iq = Iβcosθ - Iαsinθ

Id = Iαcosθ + Iβsinθ

在计算得到Iq,Id之后,需要分别跟他们的设定值计算误差,然后分别做PI控制,得到Vq,Vd。

然后对Vq,Vd进行反Park变换,如下图:

图片

图八:反Park变换

在图八中,将Vq,Vd反向变换成Vα,Vβ,变换方式与Park变换类似,以电角度θ为夹角,分别对Vq,Vd进行矢量分解,计算投影到α轴和β轴上的电压分量,可以得到如下公式:

Vα = Vdcosθ - Vqsinθ;

Vβ = Vqcosθ + Vdsinθ;

在得到Vα和Vβ之后,需要通过SVPWM算法计算Va,Vb,Vc,关于SVPWM算法,网上有篇文章讲解的非常好,叫做《SVPWM的原理及法则推导和控制算法详解》,详细的内容可以去看这篇文章,下面就根据这篇文章做一些总结性的讲解。

SVPWM的全称是空间矢量脉宽调制(Space Vector Pulse Width Modulation),是由三相功率逆变器的六个功率开关元件组成的特定开关模式产生的脉宽调制波,能够使输出电流波形尽可能接近于理想的正弦波形。理论基础是平均值等效原理,即在一个开关周期内通过对基本电压矢量加 以组合,使其平均值与给定电压矢量相等。

假设直流母线电压为Udc,三相相电压分别为UA,UB,UC,且相互之间的相位差为120°;假设Um为相电压有效值,f为电源频率,则有:

图片

图八 1

则三相电压空间矢量相加的合成空间矢量U(t)就可以表示为:

图片

图八 2

U(t)是一个旋转的空间矢量,幅值不变,为相电压峰值,且以角频率ω=2πf按逆时针方向均匀旋转,而空间矢量U(t)在三相坐标轴(a,b,c)上的投影就是对称的三相正弦量。

下面讨论一下电压空间矢量:

图片

图九:三相逆变电路

图九是一个三相逆变电路,每一相在同一时刻只有一个桥会导通,定义这样一个开关函数Sx(x=a、b、c):

上桥臂导通时,Sx=1;下桥臂导通时,Sx=0。举个例子:假设a相上桥导通,b和c相下桥导通,那么三相的结果就是a=1,b=0,c=0,组合的结果就是U4(100)。

在同一时刻,如果不同相的上下桥同时存在导通的桥,那么就会有相电流产生,属于非零矢量;如果同一时刻,三相的上桥同时导通或者三相的下桥同时导通,此时并不会有相电流产生,属于零矢量。所以总共存在6个非零矢量:U1(001)、U2(010)、U3(011)、U4(100)、U5(101)、U6(110);以及两个零矢量:U0(000)、U7(111)。电压矢量的坐标如下图所示:

图片

图十:电压空间矢量图

在图十中,显示了8个电压空间矢量U0U7,以及六个扇区ⅠⅥ。

假如Sx(x=a,b,c)=(100),则此时Ua=⅔Udc,Ub=-⅓Udc,Uc=-⅓Udc,同理可以得到其他各种组合下的空间电压矢量,如下表:

图片

图十一:电压空间矢量表

结合图十和图十一可知,非零矢量的幅值相同,均为⅔Udc,相邻的矢量间隔60°,而两个零矢量幅值为0,位于中心。在每一个扇区,选择相邻两个电压矢量以及零矢量,按照伏秒平衡原则来合成每个扇区内的任意电压矢量,即:

图片

图十一 1

或者等效成下式:

图片

图十一 2

其中,Uref为期望电压矢量,T为周期,Tx、Ty、T0分别对应两个非零矢量Ux、Uy和零矢量U0在一个周期T内的作用时间,其中U0包括U0和U7两个零矢量。由于最终要得到的是作用在三相半桥上的占空比,也就是三个定时器通道的捕获比较寄存器的值,所以我们只要能计算出Tx、Ty、T0的值,就可以知道三个捕获比较寄存器值。

先来看一下当Uref在第Ⅰ个扇区时的情况,见下图:

图片

图十二:电压空间矢量位于第Ⅰ扇区

如图十二所示,Uref位于U4和U6之间,由正弦定理可得:

图片

图十二 1

得到以U4、U6、U7及U0合成的Uref的时间后,接下来就是如何产生实际的脉宽调制波形。在SVPWM调制方案中,零矢量的选择是最具灵活性的适当选择零矢量,可最大限度的减少开关次数,尽可能避免在负载电流较大的时刻的开关动作,最大限度的减少开关损耗。因此,我们以减少开关次数为目标,将基本矢量作用顺序的分配原则选定为:在每次开关状态转换时,只改变其中一相的开关状态,并且对零矢量在时间上进行了平均分配,以使产生的PWM对称,从而有效的降低PWM的谐波分量。可以发现当U4(100)切换至U0(000)时,只需改变A相上下一对切换开关,若由U4(100)切换至U7(111)则需要改变B、C相上下两对切换开关,增加了一杯的切换损失。因此要改变电压矢量U4(100)、U2(010)、U1(001)的大小,需配合零电压矢量U0(000),而要改变U6(110)、U3(011)、U5(101),需要配合零电压矢量U7(111)。这样通过在不同扇区内安排不同的开关切换顺序,就可以获得对称的输出波形,其他各扇区的开关切换顺序下表:

图片

图十二 2

同样以第Ⅰ扇区为例,电压矢量的先后顺序为U0、U4、U6、U7、U7、U6、U4、U0,将其画成a,b,c三相的PWM波形的话就如图十三所示:

图片

图十三:第1扇区三相PWM波形

一般我们在控制PMSM的时候都会将PWM波形设定为中央对齐模式,所以在图十三中,对称中心的两边各个电压矢量所占的时间都是该电压矢量在整个周期中所占时间的一半。

要先实现SVPWM的实时调制,我们首先要知道Uref所在的扇区位置,然后才能利用所在扇区的相邻电压矢量和适当的零矢量来合成电压矢量。由图十二可以知道,电压矢量Uref与α轴的夹角θ决定了Uref所在的扇区,所以我们只要判断θ角的大小即可知道Uref所在的扇区。

由 tanθ=Uβ/Uα,可知 θ=arctan(Uβ/Uα),当Uref位于第Ⅰ扇区时,θ满足0<θ<60°,此时,Uα>0,Uβ>0,tanθ满足 00,Uβ>0,√3Uα>Uβ。

同理可以得出Uref位于其他扇区时的等价条件,如下:

Uref位于第Ⅱ扇区时的充要条件是:Uβ>0,√3|Uα|

Uref位于第Ⅲ扇区时的充要条件是:Uα<0,Uβ>0,-√3Uα>Uβ;

Uref位于第Ⅳ扇区时的充要条件是:Uα<0,Uβ<0,√3Uα

Uref位于第Ⅴ扇区时的充要条件是:Uβ<0,√3|Uα|<-Uβ;

Uref位于第Ⅵ扇区时的充要条件是:Uα>0,Uβ<0,√3Uα>-Uβ;

进一步分析以上的条件就可以看出,电压矢量Uref所在的扇区完全由Uβ,√3Uα-Uβ,-√3Uα-Uβ三式决定,

因此令:

图片

图十三 1

再定义,若U1>0,则A=1,否则A=0;若U2>0,则B=1,否则B=0;若U3>0,则C=1,否则C=0。

再令N=4C+2B+A,则可以通过下标计算Uref所在的扇区。

图片

图十三 2

接下来就要来计算合成Uref的相邻电压矢量的作用时间以及零矢量的作用时间。

假设Uref位于第Ⅰ扇区时(参照图十二),用到的电压矢量是U4和U6,所以就需要计算T4和T6,以及零电压矢量的T0和T7。计算过程如下:

Uα*Ts = |U4|*T4 + |U6|T6cos(π/3);

Uβ*Ts = |U4|T40 + |U6|T6cos(π/6);

前面说过,|U4|=|U6|=⅔Udc,所以有:

UαTs = ⅔UdcT4 + ⅓Udc*T6; ①

UβTs = (UdcT6) / √3; ②

解①,②组成的方程组,得:

T4 = (√3/Udc) * Ts * (√3Uα/2 - Uβ/2) = (√3/Udc) * Ts * U2;

T6 = (√3/Udc) * Ts * Uβ = (√3/Udc) * Ts * U1;

又因为Ts=T0+T4+T6+T7,并且T0和T7的给定是灵活的,可以令T0=T7,那么就有:

T0 = T7 = (Ts - T4 - T6) / 2;

这样就计算出了Uref位于第Ⅰ扇区时各电压矢量的时间了。同理可以计算出位于其他扇区时的各电压矢量时间:

Uref位于第Ⅱ扇区时:

T2 = (-√3/Udc) * Ts * (√3Uα/2 - Uβ/2) = -(√3/Udc) * Ts * U2;

T6 = (-√3/Udc) * Ts * (-√3Uα/2 - Uβ/2) = -(√3/Udc) * Ts * U3;

T0 = T7 = (Ts - T2 - T6) / 2;

Uref位于第Ⅲ扇区时:

T2 = (√3/Udc) * Ts * Uβ = (√3/Udc) * Ts * U1;

T3 = (√3/Udc) * Ts * (-√3Uα/2 - Uβ/2) = (√3/Udc) * Ts * U3;

T0 = T7 = (Ts - T2 - T3) / 2;

Uref位于第Ⅳ扇区时:

T1 =(-√3/Udc) * Ts * Uβ = -(√3/Udc) * Ts * U1;

T3 = (-√3/Udc) * Ts * (√3Uα/2 - Uβ/2) = -(√3/Udc) * Ts * U2;

T0 = T7 = (Ts - T1 - T3) / 2;

Uref位于第Ⅴ扇区时:

T1 = (√3/Udc) * Ts * (-√3Uα/2 - Uβ/2) = (√3/Udc) * Ts * U3;

T5 = (√3/Udc) * Ts * (√3Uα/2 - Uβ/2) = (√3/Udc) * Ts * U2;

T0 = T7 = (Ts - T1 - T5) / 2;

Uref位于第Ⅵ扇区时:

T4 = (-√3/Udc) * Ts * (-√3Uα/2 - Uβ/2) = -(√3/Udc) * Ts * U3;

T5 = (-√3/Udc) * Ts * Uβ = -(√3/Udc) * Ts * U1;

T0 = T7 = (Ts - T4 - T5) / 2;

这样就完成了Uref位于6个扇区时的各电压矢量时间的计算,其中√3/Udc是SVPWM调制模式下的最大不失真电压幅值,在计算定时器各通道的捕获比较寄存器值时可以将√3/Udc直接去掉;Ts是PWM一个完整周期的时间,也就是定时器的计数周期。

在图十三中,整个PWM周期中,最先发生的是T0,接下来依次是T4,T6,T7,其中T4,T6是两个非零矢量,且T4先于T6发生,所以我们可以令先发生的非零矢量时间为Tx,后发生的非零矢量时间为Ty,并且T0=T7,那么就可以得出加载到三个捕获比较寄存器上的时间分别是:

T1 = (Ts - Tx - Ty) / 4;

T2 = T1 + Tx/2;

T3 = T2 + Ty/2;

只要根据Uref实际所在的扇区,确定Tx和Ty实际所对应的电压矢量,就可以计算出T1,T2,T3的值;然后再根据Uref所在的扇区画出类似图十三的三相PWM波形,就可以确定T1,T2,T3分别对应到三相A,B,C的哪一个通道,再赋值给对应通道的捕获比较寄存器,就完成了SVPWM算法。


关键字:永磁同步电机  PMSM  FOC  闭环控制 引用地址:浅析永磁同步电机(PMSM)的FOC闭环控制

上一篇:无感FOC方案原理机器控制难点分析
下一篇:罗克韦尔PLC通讯身份认证的漏洞分析

推荐阅读最新更新时间:2024-11-12 15:29

基于AVR的实验加载闭环控制系统
  分离式液压千斤顶在生产建设、科学实验等各类工程结构加载工作中具有广泛的用途。   该设备一般由电动高压油泵+压(拉)千斤顶组成,本文论及的加载系统规格如表1所示。   油泵电机直接带动泵轴旋转,柱塞作往复运动,进油阀/排油阀工作,液压油通过高压油管进入千斤顶。用户可通过泵站上的手柄,人工转动泵内卸荷阀处于不同位置,实现系统的加载/卸载、推力/拉力及加载速率和稳压作业。   在对力和位移数值或稳压时间等精度要求较高的科研实验加载场合,显然这种仅靠手工操作的方式难以胜任。给该设备增设电脑测控系统就成为一项与时俱进的技术革新,也是提高此类设备性价比的最佳方案。   1 下位机   由ATmega128构成下位机控制核心
[单片机]
基于AVR的实验加载<font color='red'>闭环控制</font>系统
【STM32电机矢量控制】记录6——FOC运行流程
坐标变换理论: 坐标变换理论可以降低马达方程的复杂性,利用坐标变换把定子及转子变量变换到一个旋转坐标系中,该坐标系的转速为角速度ω。 假设fax, fbx, fcx 为三相瞬时变量,位于相移120度的a,b,c坐标上,fqx, fdx, f0x 为其变换变量,位于正交坐标d,q上: 则,变换方程为: 3个变换方程用于矢量控制: Clarke: ω=0, θ(0)=0 - θ=0; Park: ω=ωr, θ(0)=θr(0) - θ=θr; 反Park: ω=-ωr , θ(0)= θr(0) - θ=-θr 所以有: Clarke将定子电流转变为静止直角参考坐标(称αβ坐标); 然后,Park将电流
[单片机]
【STM32电机矢量控制】记录6——<font color='red'>FOC</font>运行流程
基于HIL+RCP的永磁同步电机矢量控制实验
今天给大家分享的是 基于HIL+RCP的永磁同步电机矢量控制实验。 01首先,打开Desksim软件,载入模型文件。切换到User Interface界面,拖入一个控件,对应到电机的负载输入。我们拖入chart,就可以选择观测电机的电流,转速,角度和电磁转矩信号。设置netbox仿真器的ip地址,就可以启动运行这个仿真程序。 02接着,打开desksim软件和控制测的程序。在desksim软件中载入永磁同步电机对应的控制程序,我们需要编译这个程序cpu部分的算法。 03编译完成后,切换到User Interface界面,拖入一个控件,对应到算法的转速给定值。设置默认值300;再拖入一个控件,对应到算法的使能信号,选择观
[嵌入式]
基于DSP的永磁同步电机全速范围转子定位
永磁同步电机的控制策略,例如矢量控制,需要精确的全速范围内的转子位置进行解耦变换。而其中转子初始位置最为重要,初始位置的误差会影响其后转子位置的计算,从而导致永磁同步电机解耦变换错误,导致无法对电机进行正确控制。针对传统的磁定位法,可能由于电机静止时转子位置位于定位盲区,普通的直流转矩不能使转子旋转到预定位置,使用改进的磁定位法,通过二次直流转矩定位,精确定位转子初始位置。针对传统的M/T算法存在检测时间、误差大的问题,使用改进的M/T算法,缩短了计算时间和提高了计算精度。 1 改进磁定位法原理 磁定位法原理是通过给逆变器发出直流触发脉冲信号,例如图1脉冲信号为(100)输出给电机定子绕组静止的电流矢量。 其产生的
[嵌入式]
永磁同步电机(PMSM)的FOC闭环控制详解
在学习FOC控制前,我对于FOC控制完全不懂,只知道中文叫做磁场定向控制,因公司产品开发需要用到对永磁同步电机(PMSM)进行精确的位置控制,才开始从网上了解什么是FOC,有哪些数学公式,控制的过程是怎么样的,但由于公司没有人知道这一块的知识,所以只能一个人慢慢找资料学习,网上有不少关于FOC的资料,不过讲的都不全面,而且有的还会存在错误,但是不懂的时候也无法分辨对错,所以走了不少弯路。所以将个人的学习心得记录于此,与大家分享,由于需要对电机进行位置控制,所以使用了14位分辨率的磁编码器。 FOC主要是通过对电机电流的控制实现对电机转矩(电流)、速度、位置的控制。通常是电流作为最内环,速度是中间环,位置作为最外环。 下图是
[嵌入式]
<font color='red'>永磁同步电机</font>(<font color='red'>PMSM</font>)的<font color='red'>FOC</font><font color='red'>闭环控制</font>详解
伺服电机和步进电机的问题解答
电动伺服系统的一般结构为三个闭环控制,即电流环、速度环和位置环。一般情况下,对于交流伺服驱动器,可通过对其内部功能参数进行人工设定而实现位置控制、速度控制、转矩控制等多种功能。那么关于伺服电机有哪些需要知道的呢? 1如何正确选择伺服电机和步进电机? 答:主要视具体应用情况而定,简单地说要确定:负载的性质(如水平还是垂直负载等),转矩、惯量、转速、精度、加减速等要求,上位控制要求(如对端口界面和通讯方面的要求),主要控制方式是位置、转矩还是速度方式。供电电源是直流还是交流电源,或电池供电,电压范围。据此以确定电机和配用驱动器或控制器的型号。 2选择步进电机还是伺服电机系统? 答:其实,选择什么样的电机应根据具体应用情况而定,
[嵌入式]
伺服电机和步进电机的问题解答
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved