前段时间做了一个永磁同步电机无感控制的项目,想总结一下,做个比较基础易懂的文章方便大家入门,主要介绍以下几个方面:
1.FOC控制算法、坐标变换
2.PID控制器
3.SVPWM
4.单电阻、双电阻以及三电阻采样
5.双环(电流环、速度环)控制
6.滑膜观测器的构建
7.转子角度和速度的提取
8.PMSM无感控制的启动
FOC 是一种电机控制技术,全称为 Field Oriented Control(磁场定向控制),也称作矢量控制。该技术可以提高电机的效率、控制稳定性和精度,广泛应用于电机驱动系统中,是目前无刷直流电机(BLDC)、永磁同步电机(PMSM)、感应电机的高效控制的最优方法之一。
控过无刷直流电机BLDC的小伙伴应该都知道有六步换相控制,FOC控制和六步换相控制都是用来控制电机的方法,但它们的原理和控制方式略有不同。
六步换相控制是一种较为简单的电机控制方法,它将电机的六个电极分为三个相,每个相对应两个电极,然后通过依次通电、断电,来实现电机的转动。这种控制方式对电机的控制比较粗略,不能实现对电机转速和转矩的精确控制。
FOC控制则是一种更为精确、先进的控制方式。它将电机的空间磁场分解成水平和垂直两个分量,然后对这两个磁场分量分别进行控制。通过调节两个磁场分量的大小和相位差,就可以实现对电机的精确控制,包括转速、转矩、效率等方面。相对于六步换相控制,FOC控制可以使电机效率更高,噪音更小,并且可以实现更佳的控制性能。缺点是FOC控制需要更高的计算能力和控制算法,因此复杂度比六步控制要高,对控制芯片会有更高的要求。
FOC有双环控制(电流环、速度环)、三环控制(电流环、速度环、位置环),内环为电流环,外环为速度环、位置环。通过控制电流的大小可以实现电机转速的精确控制,内环电流环的框图如下:
图中foc的内环分为四个步骤(Step1、Step2、Step3、Step4),涉及三个坐标系(三相静止坐标系(A-B-C)、两相静止坐标系(α-β)、旋转坐标系(d-q))、三种坐标变换方法(Clark变换、Park变换、反Park变换)、一个控制算法(PID控制算法)、一个脉宽调制方法(SVPWM),大家先记住有这些东西,不理解没关系,我们先对着框图梳理一下FOC的整个流程,之后再给大家一一讲解。
FOC的整个过程是这样的:
1.采集三相电流(IA、IB、IC);
2.将三相电流进行Clark变换得到两相静止坐标系下的电流Iα、Iβ;
3.再将Iα、Iβ进行Park变换得到旋转坐标系下的电流Id、Iq;
4.计算Id、Iq与设定值Id_ref、Iq_ref的误差;
5.将误差丢入PI执行器,执行器输出Ud、Uq;
6.Ud、Uq进行反Park变换得到Uα、Uβ;
7.最后Uα、Uβ经过SVPWM变成作用在三相上的电压UA、UB、UC;
看完这里肯定有人一头雾水,FOC控制它到底在控制什么???这些变换到底是在干么???为什么要变来变去???
大家先了解一下这个框图就行,看完后面的内容再回过头来看这个框图就会恍然大悟了。上面这些问题接下来我会一一讲解。
我们用手或者外部的其他机构匀速转动PMSM,用示波器观察它的三相电压,会看到如下的波形:
波形是三个两两相差120°的正弦电压波形,那么反过来我们在三相上输入三个相位相差120°的正弦电压,电机就会匀速转动起来。那我们输入的电压是正弦的那激励出来的电流是不是也是正弦,这样的话我们通过采集电流的波形,控制电流按照正弦波去变化,电机就能旋转起来了。(在这里先埋两个坑,后面讲SVPWM时再给填上,大家想一下SVPWM模块输出的端电压波形是不是正弦的???是不是只有正弦的端电压才能激励出正弦的相电流???)
综上所述FOC控制其实就是在控制三相电流按照正弦变化,同时控制三个变量按照幅值不变的正弦波一样变化是很困难的,控制器设计也很复杂,因此我们需要简化控制变量,这时候就轮到Clark和Park变换出场了。
现在大家知道FOC控制的变量什么了吧,就是在控三相电流,让三相电流按照正弦变化。
首先我们要定义一个三相静止坐标系,以电机A相的方向画出三相静止坐标系的A轴,逆时针相差120°画出B轴,同样这样画出C轴。这三个轴上的基向量是非正交的,我们是不是可以通过某种变换将三相静止坐标系里面的向量变换到两相静止坐标系?
通过Clark变换我们可以达到上述目的,变换后的坐标系命名为两相静止坐标系 α-β ,α轴的方向与电机A相的方向相同,β轴垂直于α轴,变换公式如下:
Iα = Ia - cos(π/3)Ib - cos(π/3)Ic;
Iβ = cos(π/6)Ib - cos(π/6)Ic;
把我们要控制的三相电流进行Clark变换,变换后的波形依旧是正弦波,不过我们要控制的变量少了一个。
变换前后的波形如下:
虽然说我们要控制的变量少了一个,但是被控量依旧是两个非线性的量,不适合用PID这类线性控制器,因此我们要想办法把它线性化,通过Park变换我们可以达成该目的。
接下来我们要建立一个新的坐标系两相旋转坐标系 d-q,它是随着电机的转子不停旋转的,我们以转子的磁场方向(转子N极方向)为d轴正方向,以垂直于转子磁场的方向为q轴方向,d轴可以称为直轴,q轴称为交轴,旋转坐标系 d-q与两相静止坐标系 α-β的夹角是θ。
我们可以把两相静止坐标系上的电流变换到旋转坐标系上,变换公式如下:
Id = Iαcosθ + Iβsinθ;
Iq = - Iαsinθ + Iβcosθ;
把α-β坐标系下的电流进行Park变换,变换后我们会发现,两相旋转坐标系下两个控制变量都被线性化了:
那么原来需要我们控制的三个按照正弦变化的量,就被我们简化成了两个线性的量,所以接下来我们就可以使用线性控制器PID了,用这两个值作为反馈控制的对象,通过反馈不断的调整Ud和Uq,从而使激励出来的电流Id、Iq达到我们想要的参考值Id_ref、Iq_ref。
第2章开头我们讲了FOC的内环(电流环)控制框图,我们可以看到Step#3的PI控制器的输出是Ud和Uq,但是Ud和Uq是不能直接作用在电机的三相上面的,所以我们得再将dq轴的电压向量再反变换回去,得到能作用在电机三相上的电压Ua、Ub、Uc。这时有人会问了,那反变换回去不是首先反Park变换再反Clark变换就行了,为什么最后一步是SVPWM而不是反Clark变换???
这个我们后面讲SVPWM时再讲为什么不是反Clark,我们先看一下反Park变换。反Park变换顾名思义是将Park变换后得到的dq轴上的向量给变换回去得到αβ轴上的向量。
其变换公式如下:
Uα = Udcosθ - Uqsinθ;
Uβ = Udsinθ + Uqcosθ;
变换前后的波形如下图所示:
ok到这里foc的大致流程就过了一遍,下一篇文章我会详细讲解PID控制器的作用原理,在之后就来填上SVPWM埋下的坑。
FOC(Field-Oriented Control,磁场定向控制)其实就是通过控制,相电流按照正弦变化,从而产生出旋转的磁场,控制电机转子转动。具体流程包括以下几个步骤:
FOC控制的核心在于运用坐标变换将三相静止坐标系下的电机相电流转换到旋转坐标系上,通过控制旋转坐标系下的矢量大小和方向达到控制电机目的。