系列文章目录
`
一、stm32 FOC从零学习开发(一)FOC概念
二、stm32 FOC从学习开发(二)Clark变换与MATLAB仿真
三、stm32 FOC从学习开发(三)park变换与MATLAB仿真
四、stm32 FOC从学习开发(四)svpwm算法(1)
五、stm32 FOC从学习开发(五)svpwm算法(2)
六、stm32 FOC从学习开发(六)基于均值零序分量注入的载波SVPWM算法
七、stm32 FOC从学习开发(七)svpwm算法MATLAB仿真
八、stm32 FOC从学习开发(八)PID基础MATLAB仿真
九、stm32 FOC从学习开发(九)FOC MATLAB仿真
一、park变换的作用
在我们FOC控制的时候,经过了Clark变换我们成功让原来的120度坐标系变成了我们所熟悉的直角坐标系,并且减少了一维变量,但是新的变量还是非线性的,也就是正弦的,有没有办法把他们线性化呢?有,那就是park变换。
在park变换中我们引入了一个新的变量θ,这个角度实际就是电机旋转的角度,对于多的这个变量我们不用担心,会由电机给出来,在MATLAB仿真的时候也是要提前给出来的,所以将这个变量θ当做一个已知量就可以了。
根据上图可以看到,park变换就是将静止的坐标系转变为动态的坐标系,而动态坐标系的角度就是这个变量θ,将非线性的变量α、β转换为线性的变量d、q后,就可以使用PID对线性变量进行处理了。
二、park变换
根据上图中α、β坐标系与d、q坐标系的位置,我们可以很容易得出下面的公式:
将上式转换为矩阵:
三、反park变换
同样根据投影坐标计算,可以根据d、q的电流值反推出α、β的电流值,这就是反park变换,得出公式:
将上式转换为矩阵,从矩阵的角度理解这个就是park变换的转置矩阵,所以反park变换也可以用转置矩阵来表示:
四、MATLAB仿真
使用MATLAB的simulink仿真可以很好的将理论显现出来,并且验证是否正确,在MATLAB创建如下图仿真:
这个仿真包括了Clark变换和反Clark变换,其中park与反park变换使用Fcn模块来实现,我这里进行了封装,
park变换:
反park变换:
实际也可以使用simulink搭建park变换,当然Clark变换也能直接使用simulink搭建,这里给出例程,就不具体讲述了,原理和使用Fcn搭建一样,只是将函数变成simulink符号仿真而已。
Clark变换:
反Clark变换:
park变换:
反park变换:
五、A、B、C直接到d、q坐标系
也可以直接从ABC坐标到d、q坐标系,也就是将Clark变换和park变换结合起来,在矩阵上来说,就是将两个矩阵相乘。
正变换矩阵:
逆变换矩阵:
正变换仿真:
逆变换仿真:
六、仿真结果
第一个就是生成的正弦波形,第二个是Clark变换后的波形,第三个就是反Clark后的波形,第四个是park变换后的波形,第五个是反park变换后的波形。
MATLAB使用的版本为2018a,代码放在下面,有兴趣的可以自取:https://download.csdn.net/download/bing_xin_/88196496