中国汽车工程师之家--聚集了汽车行业80%专业人士 

论坛口号:知无不言,言无不尽!QQ:542334618 

本站手机访问:直接在浏览器中输入本站域名即可 

  • 139查看
  • 0回复

[Simulink] MBD实战之电机控制 第04期:所“建”即所得的FOC控制

[复制链接]

该用户从未签到

发表于 2-3-2024 09:44:22 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


全文约5488字,你将看到以下内容:


    浅谈FOC算法的本质

    所“建”即所得——FOC算法实现

    下期预告


正如之前预告的,本期将介绍关于MBD实现FOC控制的一些细节。FOC控制算法模型我已上传至GitHub仓库,下载模型可以访问下面这个链接:


GitHub仓库:autoMBD电机控制项目
https://github.com/TkungAI/autoMBDMotorControl


也可以在对话框中回复关键词“MBD电机控制”,即可收到链接信息。

该FOC算法是在我自己构建的MBD电机控制框架基础上实现的,该框架的具体介绍可以参阅autoMBD公众号的上一期文章——《MBD实战之电机控制 第03期:基于MBD的电机控制框架》。

同样硬件平台依然是NXP的电机开发套件MCSPTE1AK144:

MBD实战之电机控制 第04期:所“建”即所得的FOC控制w1.jpg

电机开发套件MCSPTE1AK144 - From NXP

运行仓库中的FOC控制算法模型之前,需要对NXP的MBD硬件支持包进行修改,修改的方法在上一期(第03期...)中有详细的介绍,这里直接给出修改需要用到的代码:
#define FOCctrlBasedOnMBD_IN_Faults    ((uint8_T)1U)#define FOCctrlBasedOnMBD_IN_Initial   ((uint8_T)2U)#define FOCctrlBasedOnMBD_IN_NormalRun ((uint8_T)2U)#define FOCctrlBasedOnMBD_IN_Ready     ((uint8_T)3U)#define FOCctrlBasedOnMBD_IN_Run       ((uint8_T)4U)#define FOCctrlBasedOnMB_IN_Calibration ((uint8_T)1U)#define FOCctrlBased_IN_NO_ACTIVE_CHILD ((uint8_T)0U)#define FOCctrlBasedOnMBD_IN_AlignStage ((uint8_T)1U)#define FOCctrlBasedOnMBD_IN_OpenStage ((uint8_T)2U)#define FOCctrlBasedOnMBD_IN_RunStage  ((uint8_T)3U)#define FOCctrlBasedOnMBD_IN_TrackStage ((uint8_T)4U)#define FOCctrlBas_IN_NO_ACTIVE_CHILD_o ((uint8_T)0U)

此外,仓库中的BLDC六步换相控制模型也更新了速度闭环控制算法,不过这里不对其进行介绍,感兴趣的可以自行下载查看该模型。

1 浅谈FOC算法的本质

首先来讲一讲FOC算法的一些基础知识。

Tips:这部分内容供初学者参考,对FOC有充分了解的可以跳过这部分内容。

本着多一个公式就会少一个读者的原则,本文章也不会罗列各种数学公式,需要了解详细的数学原理和推导,还是阅读专业的书籍。依然推荐下面这两本书来学习FOC控制:



    R. Krishnan,《永磁无刷电机及其驱动技术》

    袁雷,《现代永磁同步电机控制原理及MATLAB仿真》



MBD实战之电机控制 第04期:所“建”即所得的FOC控制w2.jpg

现代永磁同步电机控制原理及MATLAB仿真 - From Internet

autoMBD公众号的资源库也收集了这些书籍的电子资源,在对话框中回复关键词“电机书籍”或者“资源”,可以收到资源库的分享链接。

进入正题,FOC的本质是什么?

FOC的全称是Filed-Oriented Control:Filed是“场”的意思,表示磁场;Oriented的意思是“定向、朝向”。简单地来说FOC就是通过控制磁场的方向和大小实现对电机的控制的。

下图给出了一个简化抽象后的无刷电机磁场示意图,由三个电磁铁(即定子的三相绕组)和一个永磁体组成。

MBD实战之电机控制 第04期:所“建”即所得的FOC控制w3.jpg

无刷电机的磁场和方向 - From autoMBD

我们都知道电磁铁可以产生磁场,通过控制输入三相电压的大小和方向,可以产生三个大小和方向各不相同的磁场。而这三个磁场会合成一个新的磁场,这个合成后的磁场和方向就是FOC想要控制的磁场和方向。

合成磁场有大小,也有方向,是一个矢量,所以FOC控制也被称为矢量控制。为了方便后文称合成后的磁场方向和大小称为受控矢量。

Tips:一但三相电压的大小和方向确定了,合成后的磁场大小和方向便确定了,所以三相电压矢量,与合成后的磁场矢量是等价的不同描述,受控矢量也可以指代三相电压矢量。

无刷电机的永磁体位于合成磁场的内部,其北极(N极)始终会与受控矢量对齐(稳态),或者朝着受控矢量运动(动态)。这就给了我们绝佳的控制转子位置或者速度的途径。

那么如何实现对受控矢量的控制呢?答案是坐标转换。

MBD实战之电机控制 第04期:所“建”即所得的FOC控制w4.jpg

无刷电机的坐标转换 - From autoMBD

如上图所示,假设受控矢量V指向任意一个方向,为了确定它的位置,建立一个直角坐标系dq。实际上这个dq坐标系的方向可以是任意的,并没有任何限制,只不过在实际应用中,常常将dq坐标系与永磁体的磁极绑定在一起。

我们知道无刷电机的三相定子绕组是对称分布的,三相绕组形成了位置固定不动的自然坐标系abc。为了建立dq坐标系和abc坐标系之间的联系,引入一个静止坐标系αβ。

Tips:αβ坐标系与定子固定连接,是静止不动的,αβ坐标系和abc坐标系是等价的,只不过从三轴坐标转换成了两轴直角坐标。

通过线代的知识我们知道,任何矢量都可以通过转换矩阵转换到不同的坐标系中。已知dq坐标系中的受控矢量V,总能找到合适的转换矩阵,将其转换到自然坐标系abc中或静止坐标系αβ中。

在FOC中,dq坐标系、αβ坐标系和abc坐标系之间相互转换的转换矩阵被称为Park变换(及其逆变换)和Clark变换(及其逆变换)。

于是,要控制合成磁场方向,只需要控制受控矢量的方向和大小就可以了。这便是FOC控制算法的本质。

为了更好的展示FOC算法的本质,我做了几个FOC控制算法的基础模型,位于仓库的FOC_basic文件夹内。该文件夹内有五个基础模型,由简到繁,由内到外,逐层展示了FOC是如何实现电机控制的。

1. FOC定向控制(FOC's Oriented Control)

定向控制是一种受控矢量固定不动的一种控制方式,即受控矢量的大小和方向固定不变,dq坐标系的位置也固定不变。这种情况下,永磁体(转子)始终会与受控矢量对齐,实际应用中常用这种方法对转子进行定位。

MBD实战之电机控制 第04期:所“建”即所得的FOC控制w5.jpg

FOC定向控制仿真模型 - From autoMBD

2. FOC电压控制(FOC's Voltage Control)电压控制是一种直接控制受控矢量的控制方法。将定向控制中的dq坐标系绑定在永磁体上(转子),即dq坐标系随着转子的转动一起转动,这种情况下,受控矢量与永磁体磁极始终存在着一个夹角φ。
因为永磁体磁极始终会朝着受控矢量的方向运动,于是永磁体(转子)便持续追着受控矢量跑,电机便连续转动起来。而夹角的大小决定了转速的快慢,夹角的正负决定了转子的正反转。

MBD实战之电机控制 第04期:所“建”即所得的FOC控制w6.jpg

FOC电压控制仿真模型 - From autoMBD

3. FOC电流控制(FOC's Current Control)

虽然电压控制已经能够使电机转动起来,但因为电压控制时电流过大、效率不高等原因,一般不会直接使用电压控制,而是添加电流控制器(内环控制器)间接控制电压矢量(受控矢量),使电流变化更加平稳。

MBD实战之电机控制 第04期:所“建”即所得的FOC控制w7.jpg

FOC电流控制仿真模型 - From autoMBD

Tips:对FOC电流控制的几点说明:① 电流控制器参数的设计使用的是典型二阶系统设计方法,具体计算过程可以参考FOC_basic文件夹内的m脚本;② 仿真模型中的解耦环节(Decouple)是为了消除dq轴上的电流交叉耦合项,让电机的数学模型更接近一阶线性系统。

4. FOC速度控制(FOC's Speed Control)
速度控制就是在电流控制的基础上,添加速度环控制器(外环控制器),速度环的输出为电流环的输入。

MBD实战之电机控制 第04期:所“建”即所得的FOC控制w8.jpg

FOC速度控制仿真模型 - From autoMBD

速度环(或者称为外环)的控制策略有很多,例如:



    恒转矩角控制

    弱磁控制

    最优转矩电流比控制(MTPA)

    ...


这些控制有着各自的优势和特点,但它们做的都是同一件事情,即通过各自的数学算法计算合适的电流环(内环)输入参数——id_req和iq_req。

Tips:① 最简单的恒转矩角控制,是id_req恒定等于0、iq_req由速度PI控制器输出的一种控制策略,因为其简单而最为常用;② 其他外环控制策略可以参阅R. Krishnan的《永磁无刷电机及其驱动技术》。

当然FOC还可以在速度环之外再添加位置环,这里就不再扩展下去。

行文至这里,FOC的理论方法基本上介绍完了。要想将上述的FOC理论方法应用于实际中,还有两项技术必不可少。



    空间矢量调制技术(SVPWM)


实际中无刷电机使用的是直流电源,而FOC算法计算得到的电压矢量是理想的、连续的电压值。如何在直流电系统中实现矢量电压控制,就需要用到SVPWM技术。

下图是一般情况下的直流电源、三相逆变器和无刷电机示意图。

MBD实战之电机控制 第04期:所“建”即所得的FOC控制w9.jpg

直流系统三相逆变器 - From autoMBD

以图中情况为例,当a相上桥连接、bc相下桥连接时,此时

[va, vb, vc] = [2DC/3, -DC/3, -DC/3]

也就是说此时可以得到一个固定大小和方向的电压矢量,如果再在此基础上对开关a_h、b_l和c_l输入占空比为x(大于0且小于1)的PWM信号,那么相当于电压矢量的方向不变,大小乘以x。这样就得到了一个幅值可变、方向不变的电压矢量。

推广到其他情况,三相逆变器一共有六种非零电压矢量形式,那么就有六个幅值可变、方向不变的电压矢量。如下图所示:

MBD实战之电机控制 第04期:所“建”即所得的FOC控制w10.jpg

电压矢量空间分布 - From autoMBD

这六个电压矢量将360°空间分为了六个区域,电压矢量相邻电压矢量可以通过等效原理合成新的电压矢量,例如[1,0,0]和[1,1,0]可以合成位于 I 区域的电压矢量。再结合占空比为x(大于0且小于1)的PWM信号,可以使得合成的电压矢量遍布整个 I 区域。

通过这种方式可以实现覆盖整个360°空间内任意位置的电压矢量,这就是SVPWM技术的基本原理。具体的计算过程可以参考袁雷的《现代永磁同步电机控制原理及MATLAB仿真》。

总之,SVPWM技术就是将连续的、理想的电压矢量,通过直流电源和三相逆变器实现的过程。

由于这个过程引入了脉宽调制技术,不可避免的带来了非线性干扰,与理论上连续的、理想的电压矢量有一定的区别。脉宽调制的频率越高,这种差异越小。

Tips:一般SVPWM的频率大于10kHz,可以忽略这种差异带来的影响。

FOC_basic文件夹内也给了一个带有SVPWM调制的仿真模型,供大家参考:

MBD实战之电机控制 第04期:所“建”即所得的FOC控制w11.jpg

带有SVPWM的FOC电流控制仿真模型 - From autoMBD



    位置观测技术


上文FOC基本原理的介绍中,要将dq坐标系与转子绑定在一起,就必须知道转子的实时位置。转子位置的精确性是影响FOC算法性能至关重要的因素,也是FOC算法的难点之一。

一般有两种方法:一是使用高精度编码器,二是通过无感位置观测器计算转子的位置。

有感和无感有各自的优缺点:高精度编码器控制效果好,但成本较高,体积较大,一般应用于伺服控制;而无感控制成本低,没有传感器失效问题,适合低成本场景,例如风机、泵等。

现在的无感控制算法已经非常成熟了,在实际产品中有着大量的应用。一些常见的无感算法,例如磁链观测算法、反电动势观测算法、高频注入算法,可以参考袁雷的《现代永磁同步电机控制原理及MATLAB仿真》或者其他书籍。

上述的FOC算法(坐标变换、电流控制、速度控制等),再结合SVPWM技术和位置观测技术,就可以实现完整的电机控制算法了。

2  所“建”即所得——FOC算法实现

在往期的文章中,我提到过MBD(Model-Based Design,基于模型的设计)能够拉近模型仿真和代码之间的距离。在理想情况下,所“建”即所得:建立仿真模型和编写的代码是完全统一的。

这样在建模仿真的时候就已经完成了代码的编写工作,最大化地提高开发效率。

如何在MBD开发过程中实现所“建”即所得,是我思考最多的、也是一直在思考的问题。对于一个工程项目来说,要能实现所“建”即所得,应当满足以下两点:


    软件框架可以通过建模的方式实现;

    核心的数学算法易于通过建模实现。


对于本项目中的FOC控制算法来说,这两点都是满足:


    基于MBD的电机控制框架已经实现,并在上一期中详细地介绍过了;

    对于FOC控制算法,不管是坐标变换、PI控制器,还是SVPWM技术,或者位置观测技术,都是非常易于通过建模来实现的。



电机控制软件框架和FOC核心算法模型如下图所示:

MBD实战之电机控制 第04期:所“建”即所得的FOC控制w12.jpg

电机控制软件框架 - From autoMBD

MBD实战之电机控制 第04期:所“建”即所得的FOC控制w13.jpg

FOC核心数学算法 - From autoMBD

关于电机控制框架模型的内容可以参阅上一期。

FOC算法模型的输入参数为AB两相的电流和期望的转速。算法模型中主要包括坐标变换(Clark及其逆变换、Park及其逆变换)、PI控制器(电流环、速度环)、SVPWM计算、无感位置观测器、开环位置计算模块。

除了上述模块,还有一个小的状态机,负责在不同阶段控制各个控制器和无感位置观测器的启动和关闭。一共有四个阶段:


    阶段一:对齐定位阶段,电流环控制器、速度环控制器、开环位置计算模块和无感位置观测器均关闭,电机对齐到初始零位置;

    阶段二:开环运行阶段,电流环控制器打开和开环位置计算模块打开,速度环控制器和无感位置观测器关闭,此阶段通过开环位置拖动电机运行到一定转速;

    阶段三:无感追踪阶段,电流环控制器、开环位置计算模块和无感位置观测器均打开,速度环控制器关闭,此时无感位置观测器开始追踪开环位置;

    阶段四:无感闭环运行阶段,电流环控制器、速度环控制器和无感位置观测器均打开,开环位置计算模块关闭,此时电机开始无感闭环运行,电机启动成功。



在实践中要尽量保证软件框架模型和数学算法模型之间的独立性,避免有依赖关系。这样的好处是软件框架和算法可以分开独立开发、分别测试、互不干扰。

本项目中的FOC控制算法也是遵循这一思想开展的建模。为了更好的将FOC控制算法独立出来,并且提高它的复用性,本项目中将FOC控制算法部分制作成了子系统模型。

MBD实战之电机控制 第04期:所“建”即所得的FOC控制w14.jpg

FOC控制模型 - From autoMBD

如上图所示,本项目中的FOC控制算法一共有四个仿真模型(前面四个)和一个子系统模型(最后一个)。

四个仿真模型可以实现MIL(Model In the Loop)测试、PIL(Processer In the Loop)测试,以及最后生成代码。子系统模型中包含的是FOC核心控制算法,四个仿真模型均复用该算法子系统模型。

利用Simulink的子系统模型,可以保证算法测试和代码生成的一致性,真正做到从模型到代码的协调统一,经过测试后的模型不需要额外的修改,可以直接生成代码。

Tips:创建子系统模型的方法是,在新建模型的页面选中“Blank Subsystem”;使用子系统模型需要用到“Subsystem Reference”模块。

读者可以实际运行这些模型,体会从模型仿真到代码生成的全过程。下面是本项目FOC控制算法运行时的一些截图:

MBD实战之电机控制 第04期:所“建”即所得的FOC控制w15.jpg

速度跟踪曲线 - From autoMBD

MBD实战之电机控制 第04期:所“建”即所得的FOC控制w16.jpg

电机启动过程 - From autoMBD

MBD实战之电机控制 第04期:所“建”即所得的FOC控制w17.jpg

SVPWM占空比曲线 - From autoMBD

MBD实战之电机控制 第04期:所“建”即所得的FOC控制w18.jpg

三相电流波形 - From autoMBD

MBD实战之电机控制 第04期:所“建”即所得的FOC控制w19.jpg

无感位置估计曲线 - From autoMBD

Tips:目前的FOC控制算法模型功能和性能并不是最优状态,还有很多优化和升级的空间,我也会持续对电机控制框架和FOC控制算法进行维护和更新。

本项目中,FOC控制算法的实现完全通过建模的方式实现,通过“软件框架模型+算法模型”的方式实现了全部的软件代码,基本满足了所“建”即所得。

但“软件框架模型+算法模型”的方式还是有诸多限制的。简单的来说,它不适合复杂逻辑、复杂架构的软件开发,不适合弱数学的算法开发。复杂的软件框架用手写代码的方式可能比建模更加高效,如果算法本身就没有明确的数学表达式,也就没有必要通过建模来实现。

对于更加复杂应用,例如汽车的路径规划算法、紧急避障算法等,采用算法集成的方式依然是MBD的主流。

简单的说,算法集成的方式就是放弃通过建模实现软件框架,只将MBD的工作放在算法模型部分。软件框架由IDE和专门的底层驱动配置软件实现,由MBD做好算法模型以及接口,然后将算法模型生成的代码集成到软件框架中去。

3 下期预告

下期的内容暂定为MBD算法集成的实战案例。其实这部分内容很少,没多少内容可讲,下一期也将是MBD电机控制实战系列的最后一期了。

快到年底了,我的工作也变得繁忙起来,所以更新可能不会很快,但希望大家继续关注我,在我的规划中还有很多干货满满的内容。

关注作者,和作者一起学习MBD,一起进步

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 1-5-2024 19:03 , Processed in 0.326247 second(s), 30 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.