参考资料:
【自制FOC驱动器】深入浅出讲解FOC算法与SVPWM技术
永磁同步电机(PMSM)的FOC闭环控制详解
FOC入门教程
FOC实现过程中主要公式整理
永磁电机知多少?
无刷直流电机矢量控制技术 江崎雅康
1. 有感FOC闭环控制(只含电流环)框架图
首先给出只含电流环的FOC控制框架图。
上图是以电流闭环控制为例的,也就是让电机始终产生一个恒定的力矩(也就是恒定的电流,因为力矩和电流成正比)。
控制流程如下:
- 对电机三相电流进行采样得到Ia,Ib,Ic。
- 将Ia,Ib,Ic经过Clark变换得到Iα,Iβ。
- 将Iα,Iβ再加上转子当前角度θ经过Park变换得到Iq,Id。
- 计算Iq,Id和其设定值Iq_ref,Id_ref的误差。
- 将上述误差输入两个PID控制器,得到输出的控制电压Uq,Ud。
- 将Uq,Ud再加上转子当前角度θ进行反Park变换得到Uα,Uβ。
- 用Uα,Uβ合成电压空间矢量,输入SVPWM模块进行调制,输出该时刻三个半桥的状态编码值
- 按照前面输出的编码值控制三相逆变器的MOS管开关,驱动电机。
- 循环上述步骤。
接下来分别对上述步骤进行拆分讲解。
1.1 电流采样
使用串联的采样电阻进行电流采样。由于电机工作的电流一般很大,所以采样电阻的阻值非常小,甚至和导线的电阻非常接近。
实际设计电流采样电路时,只需要两个采样器即可,由KCL即可由两路电流求出另外一路的电流。
得到的三个电流基本上就是三个相位相差120度的正弦波,其波形图如下所示。
如果直接将三个电流的采样值(非线性信号)作为跟踪对象,就需要使用复杂的高阶控制器,这对于建模成本、处理器算力、控制实时性等都是不利的。
因此,我们需要找到一种方式,将跟踪的信号简化成线性信号。这就用到了Clark变换和Park变换。
1.2 Clark变换
三相电流(Ia,Ib,Ic)在坐标系中表示如下:
很明显,(Ia,Ib,Ic)这三个基向量是非正交的,我们可以做一个基变换将其正交化为一个直角坐标系,我们把新的直角坐标系命名为α-β 坐标系,如下图所示:
得到的Clark变换公式如下:
各行电流乘以2/3是为了将变换后的Iα,Iβ的范围限制在[-1,1]内,这种变换也称为等幅值变换,这是因为采用MCU控制时,会使用[-1,1]的定点数,否则Iα,Iβ的范围将达到[-1.5,1.5]。
同时,这里多乘了2/3,电流值也会变成原来的2/3,所以后续在计算电压输出时的坐标逆变换中,要乘以3/2来回复原值。这里乘以的2/3将会在SVPWM步骤中乘以3/2给找补回来。
上式其实就是坐标轴投影计算,也即Clark变换,写成矩阵形式如下:
变换后的波形如下图所示:
变换前后的波形对比图如下所示:
可以看到变换后其实还是正弦波。只不过我们少了一个需要控制的变量了,现在只需要控制Iα,Iβ这两个变量,让其满足上图的下面的波形变化规律就可以控制电机旋转 了,频率还是不变的。
虽然α-β坐标系下少了一维变量,但是新的变量还是非线性的(正弦),有没有办法把它们线性化呢?有的,Park变换就是做这个工作的。
1.3 Park变换
进行Park变换:将α-β 坐标系旋转θ度,把新的直角坐标系命名为d-q坐标系,如下图所示:
(其中θ是转子当前的角度)
可以看出,Id和Iq是相互垂直的并且同时跟随着磁场方向在旋转。Park变换即,将静止的α,β电流变换成旋转的d轴和q轴电流,θ是转子旋转的角度。Park变换公式如下所示:
写成矩阵形式如下所示:
经过Park变换前后得到的波形如下图所示:
这个操作是可行的,因为我们会通过编码器输入转子的实时旋转角度,所以这个角度始终是一个已知数。经过这一步的变换,我们会发现,一个匀速旋转向量在这个坐标系下变成了一个定值,这个坐标系下两个控制变量Id和Iq 都被线性化了。
到此为止,我们将本应该跟踪的三个非线性信号Ia、Ib、Ic,通过一系列数学手段转换成为两个线性信号Id和Iq,简化了控制手段。那么这两个线性信号Id和Iq具有什么物理含义呢?先看下图:
也就是说,我们一通操作将转子磁链进行了解耦,分解为了转子旋转的径向(Id)和切向(Iq)这两个方向的变量。其中Iq是我们需要的,代表了期望的力矩输出;Id是我们不需要的,我们希望尽可能把它控制为0。
接下来以Id和Iq 这两个值作为反馈控制的对象,那么就可以使用一些线性控制器来进行控制了,比如PID控制器。
1.4 PID控制
在计算得到Id和Iq后,将其反馈回去,分别与它们的设定值Id_ref和Iq_ref进行比较,计算误差,然后分别做PI控制,得到Vd和Vq。
可以看到,这里的PID控制器实际只用到了PI控制,这是因为电流的采样率非常高,不需要加入微分项。
1.5 反Park变换
接着,对Vd,Vq进行反Park变换,将d-q坐标系变换为α-β 坐标系,如下图所示:
变换公式为:
写成矩阵形式如下所示:
至此,得到了Vα,Vβ。
1.6 SVPWM
SVPWM的全称是空间矢量脉宽调制(Space Vector Pulse Width Modulation)。
什么是空间矢量?
空间矢量是我们在控制电机过程中虚拟出来的一个矢量,既然是矢量,自然是有大小和方向的,那么它的大小和方向是什么呢?