导读:前期文章介绍的是SVPWM调制,这是控制交流电机的通用基础部分。本章重点介绍基于控制对象的Control算法控制简析和数学模型、IDE开发环境的介绍及建模、搭建,你得知道“控”什么,应该怎么“控”?才能理解和探索电机控制的本质,才能达到电机控制的入门的条件。
(1)控制对象,电机的分类;
(2)控制电机的原理的理解;
(1)PMSM数学模型的整理;
(2)电机控制的实质理解;
(3)坐标变换的详细介绍;
(1)MATLAB;
(2)TI的DSP_CCS;
(3)ST的ARM_Keil;
(4) C语言;

正文如下:


图1.1 电机分类
直流电机基本上已经被交流电机取代,交流电机中研究和应用最多的是感应电机、永磁同步电机。如图(1.1)所示,最常接触的是交流电机,如永磁同步电机PMSM和异步电机IM(Induction Motor,IM)。更详细地介绍,如图(1.2)的思维导图,电机种类和用途都做了总结。

图1.2 电机种类和用途总结
目前主要学习研究永磁同步电机,所以接下来的介绍以永磁同步电机为主。后续会逐步讲解异步电机和BLDC,以及其它类型的电机控制。
(1)永磁同步电机内部结构分为转子、定子和永磁体,且永磁体放置在转子上或嵌入其中,可以以此分为表贴式和内置式永磁同步电机PMSM;
(2)通电线圈在磁场内的受力情况:为了确保通电线圈产生单一方向(逆时针方向)的电磁转矩使转子持续运行,要求N极下导体中的电流方向总是流入的,而S极下导体中的电流方向总是流出的。通过电刷和换向器的换向便可满足对电流方向的要求,确保单一方向电磁转矩的产生。(左手定则--电磁转矩方向);
(3)定子侧的旋转磁场:当三相对称绕组接至对称的三相交流电源上时,绕组内部便产生对称的三相电流,其瞬间表达式由下式给出:


图1.3 电机定子绕组侧通电后产生的理想电流波形变化
定子三相绕组所产生的合成磁链是大小不变、转速恒定的旋转磁场。当某相电流达到最大时,定子合成磁场位于该相绕组的轴线上。由于三相定子电流的最大值是按照A、B、C的时间顺序依次交替变化的,相应合成磁场的旋转方向也是按照A-B-C逆时针方向旋转;
(4)永磁同步电机的运行控制原理:当定子绕组通过三相电,因为自带永磁体,所以磁场不像异步电机还需要有一个建立的过程,这就说明电机旋转的速度与磁场的旋转速度相等,也是电机叫永磁同步的由来。
三相PMSM可以在不同的坐标系中建立数学模型,包括ABC三相坐标系、静止坐标系和同步旋转坐标系。为简化数学模型,需要进行以下假设:
(1)定子绕组在空间上对称分布,从而产生正弦电枢反应磁动势;
(2)转子上的永磁体在定子绕组中感应产生的电动势为正弦;
(3)三相绕组为星型连结,无中心点引出;
(4)忽略电机铁芯的损耗和饱和效应;
(5)忽略温度和负载引起的参数变化。
因为在电机控制中用不到三相坐标系下的电机数学模型,所以接下来主要介绍静止坐标系和旋转坐标系下的模型组成。

图2.1 IPMSM物理模型示意图
为了实现对PMSM的精确和高效控制,建立准确的数学模型和有效的控制系统至关重要。交流电机的定子电流由励磁电流和转矩电流组成。矢量控制的主要思想是采用固定坐标系和旋转坐标系来描述电机的运行特性。其中,两相静止坐标系下的数学模型可以通过基本的电路和磁路方程进行建立和分析。但是,在高效、准确地实现对电机的控制过程中,需要使用坐标变换理论,将三相交流信号转换为两相信号,并根据不同应用场合选择合适的坐标系进行控制。
根据理论推导,静止坐标系下的电压方程可以写成:

定子磁链方程为:

电磁转矩方程可写为:

电机的机械运动方程为:


图2.2 电机控制的实质图解
@电机控制的实质:只要给电机供电(接入定子绕组,就会产生力矩),电机轴上有实物提供转动惯量即可使电机旋转起来。此时接入的是三相电,不好进行控制,那怎么接入直流电?引入逆变器,通过逆变器中的IGBT开关可以模拟三相电(如图2.3),即使接入直流电也可让电机旋转起来。那要如何控制电机呢?如图(2.2)所示,速度反馈值与设定值经过PI调节,产生控制目标值对应的参考电压进而生成如图(2.3)等效的六拍阶梯波给到电机的定子绕组从而产生三相定子电流。

图2.3 SVPWM模块输出的六拍阶梯波
电机控制的实质就是对电流的控制,也就是对力矩的控制。想要电机运行在什么速度,通过反馈值与设定值之间的误差经PI调节器生成对应的电压,在定子绕组中产生与之匹配的电流。电机控制的实质进一步讲是对力矩的控制,想要出多大的力矩,通过PI调节器调节电流的幅值进行实现。

从数学模型出发,电机控制就是电生磁,磁生力,力推动电机转动又反过来作用于电。
@为什么要进行坐标变换及其概念:
(1)坐标变换的概念:m相对称绕组通以m相对称电流将产生圆形旋转磁势,显然,相数最小的绕组为两相绕组,即m=2。据此,可以利用磁势等效的概念,将三相绕组用空间上互差90°的两相绕组来等效,只要确保后者通以时间上互差90°的两相电流所产生的磁势与前者通以三相对称电流所产生的磁势相同即可。这样等效的好处是能够将三相绕组的三个变量等效为两个变量,进而可以简化交流电机的数学模型。
(2)为什么要进行坐标变换a:异步电机或者永磁同步电机的三相原始动态模型相当复杂,分析和求解这组非线性方程十分困难。在实际应用中必须予以简化,简化的基本方法就是坐标变换。异步电机或者永磁同步电机的数学模型之所以复杂,关键是因为有一个复杂的电感矩阵和转矩方程,它们体现了异步电机或者永磁同步电机的电磁耦合关系和能量转换的复杂关系。因此,要简化数学模型,需从电磁耦合关系入手。
(3)为什么要进行坐标变换b:第二点的原因就是FOC控制最终作用在电机定子线圈上的是等效的正弦交流电流,如果我们想让电机扭矩大一些,就需要提高电流的幅值。怎么加大幅值?一般使用PID算法。但是使用PID去跟踪交流很难做到,所以需要将其转换为直流电流(PID控制原理是线性控制,控制直流信号,这是数学上的原因)。
坐标变化有两种变化原则,一种3/2等幅值变换,一种等功率变换,两者的作用相同。在实际应用过程中,大部分情况下采用前者,所以接下来涉及坐标变换都采用等幅值变换。

图2.4 Clark变换
Clark变换的作用是将三相abc坐标系转换到alpha、beta静止坐标系,所以有如下的推导过程:

上述经过坐标变换得到静止坐标系下的值,但需要等效,还需要乘以2/3这个系数。从上述推导的过程可以看出等幅值变换也称为3/2变换。那为什么在仿真验证或实物验证实现过程中要乘以“2/3”?那是因为后面的SVPWM将静止坐标系下的参考电压转换到三相坐标系下时扩大了3/2倍。

Clark变换是将三相坐标系转换成两相静止坐标系,直接可以转换,不需要引入其它变量且幅值相等。

图2.5 Park变换
如图(2.5)所示,当alpha和beta为两相平衡的交流电时,所产生的合成电流空间矢量在静止坐标系中以同步角速度We逆时针旋转,与同步旋转正交坐标系dq保持相对静止,故电流在dq坐标系的坐标分d轴与q轴为直流量。Park变换是将静止坐标系转换成旋转坐标系(Park变换存在逆变换),具体公式如下:

Park变换是两相静止坐标系和两相旋转坐标系之间的转换,其过程需要引入同步位置角这个变量。如图(2.6)所示,位置角的变化与电流周期变化同步。

图2.6 同步角与三相电流周期变化情况
IDE是一种集成的开发环境。IDE是一种集成了多种开发工具和功能的软件应用程序,旨在提高软件开发的效率和质量。IDE通常包括代码编辑器、代码编译器、调试器、版本控制系统、代码分析和重构工具等,这些工具集成为开发者提供了一个统一的开发环境。
MATLAB/Simulink在电机控制开发过程中,其重要地位不可忽略。在实现电机控制算法过程中,simulink仿真可以庖丁解牛一样的把实现的每个细节步骤展现在开发者的面前,这样可以直观地检验实现的“想法”是否正确和符合控制理论。
simulink仿真根据实现的类型可以分为,连续仿真和离散化仿真。又可以根据实现方式可以分为:模块化仿真、基于sfuction模块的M语言实现和C集成仿真(需要下载C编译器)。接下来简单介绍一下不同实现的模型:

表1 不同类型的仿真模型对比
这里只是简单地介绍一下实现的方式,在后续章节会重点展开进行讲解。
目前,用于电机控制的主流芯片还要属于TI的C2000系列。

图3.1 基于TI_DSP的硬件实验平台架构图
基于TI的DSP芯片的硬件实验平台,最简单快速的学习方法就是购买成套的设备。根据配套的代码把电机转起来,然后分模块的学习验证、“魔改”代码,最后成为自己的东西。

图3.2基于ARM_keil的硬件实验平台架构图
基于ARM_keil的学习和上面的TI_DSP的学习路径一样,快速学习的话,只能在调试成熟的代码上进行“魔改”学习研究转换成自己的东西。
电机控制最后一步必须是通过C语言在编译器里进行实现,然后烧录到控制芯片里去控制电机。所以怎么通过C语言去实现控制算法是每个嵌入式开发者必须要学习的,那应该如何去学习?
@个人学习理解和路径:
(1)购买一本基础的参考书,进行基础理论的补充;
(2)在C编译器里进行实践,这里可以参考别人的CCS工程,借鉴怎么进行C编程,学习对应的理论和实现的方式,最后进行总结、理解和提高,最后进行独立利用、开发编写;
(3)对借鉴别人的优质代码,消化并且吸收转换成自己的东西。


图4.1 电机驱动控制策略
摘录@转子磁场定向的评论:
1、实验是检验真理的唯一标准,一定要坚持知行合一,所以我的建议是实践和理论一定要紧密结合,相互迭代。初学者最好有项目练手,一定要多动手多做实验,多积极总结。电机的学习进步没有那么快,也没有什么捷径。
2、初学者普遍的几个现象:
(1)觉得自己都搞过了,什么都会了。缺乏理论基础,没有环路的概念;依然用BLDC换相那一套思维来分析FOC;
(2)觉得电机控制很成熟了,没有搞头。未来电机是逐渐小型化,高效率化。将会有大量的项目需求,很多客户并没有设计能力,所以需要依托原厂,控制器厂商把电机项目落地。另外来说,技术发展空间小,并不代表项目能成熟落地,能把项目稳定量产,再考虑行业是否成熟这个问题。
(3)硬件搞过,软件搞过,就觉得自己是全栈了。全栈这个概念没有任何意义。客户不会因为你是全栈,就为你买单,买你的产品。客户看重的是你能不能把项目落地,品质如何。打工也一样,全栈只会让你事更多,无法专注提升自己。并且工作种类太多,个人精力有限,能否高质量完成工作,也要打个问号。其他工程师专注于自己的领域,打杂打得太多会迷失自己的方向。
(4)哪怕是自己创业,我也推崇团队>个人,一个人不可能完成全部的工作,这种模式是不可持续的。
搞电机的进步相对见效慢,一定要有耐心沉下心来踏踏实实钻研,不是靠一时的风口起飞。如果没有demo板,可以考虑本团队开发的demo板,基于领芯微ARM核M0 MCU,型号LCP037BT32EU8,内置6N MOS预驱。
@ 个人对电机控制学习的理解:
(1)以目标为导向:电机控制学科内容驳杂,你得知道你目前需要学习什么内容或者公司项目需要实现什么功能,给自己设定一个目标,这样才会有个主络,在学习的过程中顺手学一些连带的内容;
(2)多思考、多交流和多总结:人力有穷时,对一个具体的知识点,某个阶段受限于当前的个人知识储备、认知,很难透彻地搞明白原理或者实现出来的东西与目标相差甚远。这时候在自己思考的前提下,多交流,途径很多,有了新的理解就多总结,集思广益;
(3)多借鉴:从0到1是很难的,起码过程不会太容易。要学会借鉴,站在巨人的肩膀上;
(4)建立自己的知识体系:你会什么,就像点亮地图一样,知道自己会什么,然后就是多回顾,温故而知新!
(5)最后说的是,学习没有定式:海阔凭鱼跃,天高任鸟飞!唯一可说的就是得脚踏实地,其它没什么了。
下期文章开发一套离散化的永磁同步电机仿真验证框架,用于后续算法、功能的验证!