本文主要是介绍直流无刷电机FOC控制原语,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
直流无刷电机FOC控制原语
文章目录
- 直流无刷电机FOC控制原语
- 1. 前言
- 2. FOC控制原理
- 2.1 磁的问题
- 2.2 电的问题
- 3. 如何获取 `I_feedback` ?
- 4. 如何调整 `I_feedback`?
- 5. 总结
1. 前言
在这之前,我写了三篇关于直流无刷电机 FOC 矢量控制的文章,从理论驱动原理到实际控制实现。三篇博客发布后,受到大家的广泛好评,我也受到大家很大的鼓舞,回顾之前的三篇文章以及结合各位粉丝的留言意见,我觉得对于FOC的分享还可以有所补充,故又抽时间整理了此篇博文,希望对有幸阅读到此篇文章的你有所帮助。
在之前的写的那几篇文章中我们通过数学以及物理推导,详细阐述了FOC的理论以及实现过程,基本原理简单但内容较为深入;而在此篇博文中,我将从另外一个角度,站在更上层的视角分享FOC的实现原理,我将此篇文章称之为《直流无刷电机FOC控制原语》,其目的是让更多人可以快速理解什么是FOC控制,FOC控制是如何实现的,读完此篇文章,你将如同拿到了一张沙漠里的地图,帮助你快速建立起FOC控制的一个完整概念,让你学习FOC过程中不再迷失方向!
2. FOC控制原理
2.1 磁的问题
关于直流无刷电机的FOC控制其实很简单,整个核心其实就是在下面这一张图里面:
FOC 矢量控制原理如上图所示,我们已采用转子采用永磁体的电机举例,其转子上的多对磁铁最终会产生一个特定的合成磁场,也就是我们上图中的转子磁场。
而实现FOC控制,其本质就是通过控制U V W三相的通电顺序,根据电生磁的物理特性,产生一个上图中的合成磁场,此合成磁场与转子磁场需要刚好呈90°角时才能使得磁力的做功最大。
但是电机不是一直不动的,电机一直在转动,也就是转子在转动,对应的转子磁场也就在转动,因此我们需要做的是,不断的调整我们的合成磁场的方向,以保证合成磁场一直与转子磁场呈90°,保证磁力做功最大。
但是在实际中,我们往往不能向控制通电一样很方便的直接控制磁场的以及直接检测磁场,但根据物理学基础,可以电生磁,也可以由磁生电。故我们可以将磁的问题转换到电上面去,通过控制电进而控制磁,从而最终实现我们的无刷电机矢量控制。
2.2 电的问题
我们将磁的问题转化成电的问题,如上图,乍一看看不懂,没关系这很正常,慢慢看完后面的内容你就懂了!
结合上述图,我们通过问答的方式帮助讲解几个关键的问题,如下:
- FOC矢量控制的本质?
- 控制电机内部的磁场,通过控制U V W通电产生一个合成磁场,通过磁力吸引转子磁铁转动。转子磁铁可以是永磁体;也可以电磁场,所谓电磁场也就是由线圈绕制,通过线圈通电产生。
- 磁场如何控制?又如何检测?
- 直接检测和控制磁场都是复杂且困难的,但我们可以通过别的方式实现;从上述描述可知,磁场是我们通过控制电产生的,同样反馈我们也可以通过检测电信号实现;故磁的问题可以通过转变为电的问题来实现。
- 最终控制磁场变成了控制电流,所以FOC矢量控制的本质又可以转变为:
- 根据反馈电流
I_feedback
修正我们的输出已控制反馈达到I_target
- 根据反馈电流
- 如何控制输出?
- 通过调节合成磁场的大小以及方向调整输出
- 如何调节合成磁场?
- 通过控制电机U V W三相通电,根据电生磁的基本物理特性,通过控制通电顺序及时间,每次通电都会产生一个磁力,我们可以将其用矢量表示,而通过矢量的合成(矢量相加)即可得到我们的最终需要的合成磁力
- 如何精准控制使得反馈
I_target
刚好等于或近似等于我们的目标I_feedback
?- 此处可使用适当的算法实现,最常用的也就是PID控制算法
自此,如何实现FOC矢量控制的问题就转变为了:如何获取 I_feedback
以及如何调整 I_feedback
3. 如何获取 I_feedback
?
获取 I_feedback 呢?其实这个很简单,也就是几个坐标系统转换的问题,怎么转化呢?其实就是高中力的分解与合成。
获取 I_feedback 主要分为以下几大步骤:
(此处对于电流采用方案不做过多讲解,本篇博文重点讲述实现原理)
-
通过电流检测IC或者电阻采样等方案,我们可以得到U V W三相的电流,此时的U V W三相电流位于
U-V-W 三相坐标系
;根据无刷电机特性,电机转动时的 Ia Ib Ic 将呈正弦变化
-
之后我们将 U V W三相电流通过
clark变换
,转化到α-β 直角坐标系
,将U V W三相在α-β 直角坐标系
上进行 “力的分解” 得到Iα
和Iβ
-
此时在
α-β 直角坐标系
中,Iα 和 Iβ 仍然呈线程正弦变化,呈现出正弦变化的数据不利于我们进行算法计算,我们需要想办法将其转化为“常数”,这样才有利于我们计算
-
电机转动时,Iα 和 Iβ 仍然呈线程正弦变化,且与角度有关,那如果我们将 Iα 和 Iβ 所在的
α-β 直角坐标系
和角度结合起来,将α-β 直角坐标系
跟着电机转子角度一起转动,那么在旋转的 α 和 β 轴上的分量会发生怎样的变化呢?因此我们将 Iα 和 Iβ 分解到旋转的q_d 旋转坐标系
上,这就是park变换
-
经过
park变化
之后,我们发现之前呈现的 Iα 和 Iβ 分解到q_d 旋转坐标系
中的 Iq 和 Id 之后,Iq 以及 Id 不再呈正弦变化,变为一个常数。 -
此外,由于
q_d 旋转坐标系
是跟着转子一起转动的,d轴方向将一直与转子磁场方向平行,而q轴方向将一直与合成磁场方向在平行! -
还记得我们前面说过:为了使磁力做功效率最大,我们需要尽可能的使得合成磁场方向与转子磁场方向垂直,因此我们只需要尽可能控制 Id 为0 使得效率最大,控制 Iq 大小进而控制磁力大小,进而控制电机转速即可!
整个完整过程如下:
上述变化中虽然没有提到 I_feedback
,但是其实一直都是围绕着 I_feedback
展开,经过 Park变化
之后的 Iq
和 Id
不就是 I_feedback
吗!( I_feedback是一个抽象概念,而Iq和Id是其实例罢了,我们可以将 Iq
和 Id
分别称之为 Iq_feedback
, Id_feedback
)
4. 如何调整 I_feedback
?
经过坐标变化之后拿到了 Iq 和 Id,也即获取了 I_feedback,那我们又是如何调节 I_feedback的呢?
我们先回顾一下我们前面讲到的 “如何调节合成磁场”(见2.2章节) :
- 通过控制电机U V W三相通电,根据电生磁的基本物理特性,通过控制通电顺序及时间,每次通电都会产生一个磁力,我们可以将其用矢量表示,而通过矢量的合成(矢量相加)即可得到我们的最终需要的合成磁力
因此,我们通过控制 U V W三相的通电顺序以及对应的通电时间,我们便可以控制合成磁力的大小及方向F_setting
在上图中,我们可以发现,F_setting
并不是直接等于 F_target
,这是因为电机在运转时通常会负载等情况,因此会存在一个阻力 f
,因此 F_target = F_setting + f
。
然后实际中,阻力 f
是不确定的,因此对于 F_setting
我们需要根据阻力 f
的变化来实时调整,此处我们引入 PID 控制算法对 F_setting 的输出进行控制以达到更好的效果,使得F_target始终保持恒定,此时电机呈现出来的现象即:电机以一个稳定的转矩在转动。
那么 F_setting
又如何实现呢?
F_setting
和 F_feedback
一样是一个抽象的概念,其实例对应的即 Uq 和 Ud
- Uq 位于
q_d 旋转坐标系
的 q 轴上,Ud 位于q_d 旋转坐标系
的 d 轴上 Uq
大小由Iq_feedback
以及Iq_target
经过 PID运算得到,Ud
大小由Id_feedback
以及Id_target
经过 PID运算得到- 其中
Iq_target
以及Id_target
对应的就是F_target
- 电机转动时,输出的力矩也即
Iq_target
经过PID计算之后,得到了在 q_d 旋转坐标系
上的 Uq 和 Ud 之后,如何作用与我们最终的 U V W通电顺序组合和时间呢?
将 Uq 和 Ud 转化到最终的 U V W通电顺序组合和时间需要经过两个步骤:反 Park 变化
以及 SVPWM生成
反 Park 变化
:同样还是“力的合成与分解”,将位于q_d 旋转坐标系
上的 Uq 和 Ud 分解到α-β 直角坐标系
2.其中 Utarget
即为我们最终需要输出的目标矢量
- 注意得到 Uα 和 Uβ 之后,并不是直接继续进行
反clark变化
噢,而是进行SVPWM
计算,所谓SVPWM,核心原理如下:-
根据 U V W三相的不同通电顺序组合(每种组合每项都会有电流流过,总共存在6种组合),得到6种不同方向的基础磁力矢量,六个不同方向的矢量将其划分为6个扇区。
-
根据 Uα 和 Uβ 的值的比例以及大小,可以推算出
Utarget
位于哪个扇区,从而可知Utarget
将由哪两个基础矢量合成,以及对应的矢量时间 -
而基础矢量我们是可以通过控制 U V W 的不同通电顺序得到的,故我们可以通过控制 U V W采用不同的通电组合、通过控制通电时间完成实现矢量
Utarget
的合成。
-
5. 总结
以上便是关于直流无刷电机矢量控制FOC控制算法的实现原理啦,我将其称之为直流无刷电机FOC控制原语,相信有了这份原语,大家对于FOC的原理会有清晰的了解,这也是我编写此专栏的意义。
欢迎大家有疑问在评论区留言讨论,当然本文中没有对底层细节的实现过程以及细节理论部分进行详细介绍,想深入了解并自己付诸实践的同学,可以阅读我之前编写的几篇文章:
-
专栏:电机控制专栏(点击跳转)
-
博文:直流无刷电机FOC控制算法 理论到实践 —— 理论(一)(点击跳转)
-
博文:直流无刷电机FOC控制算法 理论到实践 —— 理论(二)(点击跳转)
-
博文:直流无刷电机FOC控制算法 理论到实践 —— 实践(点击跳转)
-
博客主页:
爱出名的狗腿子(点击跳转)
😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃
创作不易,转载请注明出处!
关注、点赞+收藏,可快速查收博主有关分享!
😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃 😃
这篇关于直流无刷电机FOC控制原语的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!