PMSM FOC控制 Matlab/Simulink仿真 SVPWM算法

1.原理

PMSM FOC控制 Matlab/Simulink仿真 SVPWM算法_第1张图片

SVPWM是电机控制的一种算法,空间电压矢量控制;可以直接使用SVPWM进行电机控制,SVPWM是基于电压控制,只是控制效果没有FOC(基于电流控制)的效果好;而foc控制要借助于SVPWM,因为功率变送器(3相半桥)不能直接输出控制电流,只能输出控制电压。

2.逻辑分析

SVPWM的输入参数:Uα、Uβ      输出:3路定时器输出比较值CCRx

Uα、Uβ (是正弦信号)实际不直接给出,而是借助于反Park变换来输出Uα、Uβ,反Park变换的输入是Ud,Uq,我们可以直接设定Ud、Uq,这里Ud、Uq是直流信号,设定Ud=0(在FOC控制中Ud是不为0的),Uq=xxx来控制转速

把电机旋转一个电角度周期分为6个部分,即6个扇区,每个扇区要计算,根据矢量等效原理

PMSM FOC控制 Matlab/Simulink仿真 SVPWM算法_第2张图片

(此图是网上随机找的,仅供学习)

 每个扇区计算对应的Tx,Ty就可以,而Tx、Ty是和Uα、Uβ有一定的数学关系

有根据下图计算出Ta,Tb,Tc

数学关系:

Ta=(T-Tx-Ty)/4

Tb=Ta+Tx/2

Tc=Tb+Ty/2

这个数学关系是根据stm32的PWM模式2来定的,如果是PWM模式1就不是这个公式了

PMSM FOC控制 Matlab/Simulink仿真 SVPWM算法_第3张图片

 (此图是网上随机找的,仅供学习)

这样在不同的扇区,把Ta,Tb,Tc赋给CCR1、CCR2、CCR3即可

如在扇区3中,TIM1->CCR1 = Tc;

                        TIM1->CCR2 = Ta;

                        TIM1->CCR3 = Tb;

那么到此,需要控制电机的3路pwm比较值已经求出

3.仿真模型

PMSM FOC控制 Matlab/Simulink仿真 SVPWM算法_第4张图片

PMSM FOC控制 Matlab/Simulink仿真 SVPWM算法_第5张图片 

 RePark部分就不列出来了,请看之前的

最重要的就是SVPWM算法,这里采用s-function的编码形式,好处是这样的代码可以直接移植到MCU中,当然也可以生成嵌入式C代码之后再移植到MCU中,二者是一样的

PMSM FOC控制 Matlab/Simulink仿真 SVPWM算法_第6张图片

PMSM FOC控制 Matlab/Simulink仿真 SVPWM算法_第7张图片 

 

4.仿真效果

PMSM FOC控制 Matlab/Simulink仿真 SVPWM算法_第8张图片

 这个是simulink仿真的结果,3路CCR值是马鞍波

5.硬件效果

PMSM FOC控制 Matlab/Simulink仿真 SVPWM算法_第9张图片马鞍波是3路PWM比较值CCRx 

黄色曲线是弧度值(0~2*pi)

这个波形是在stm32上跑出的波形

6.注意事项

这里设定Ud=0,Uq=10;Uq设定的值不可太大,否则会过调制,CCR的波形就不再是马鞍波了

你可能感兴趣的:(PMSM,FOC,simulink,matlab,SVPWM)