文章目录
原文PDF文档下载链接:https://download.csdn.net/download/qq_28149763/88687506
FOC算法讲解PDF文档下载地址:https://download.csdn.net/download/qq_28149763/87943594
FOC算法讲解博客地址:https://blog.csdn.net/qq_28149763/article/details/131362497
模型链接:https://download.csdn.net/download/qq_28149763/88687505
基于零序分量注入的SPWM模型请参考欧拉电子的FOC模型。
错误更正:
2024-05-14:
1、模型总览
2、电机参数
电机参数:
Rs=0.485
L=0.00395
V_peak L-L/krpm(反电动势常数)=5.21657
Inertia=0.00007
viscous damping(阻尼系数)=0.04924
pole pairs=7
static friction=0
3、核心模块
3.1 Park反变换
function [u_alpha,u_beta] = fcn(ud,uq,theta)
u_alpha=ud*cos(theta)-uq*sin(theta);
u_beta=ud*sin(theta)+uq*cos(theta);
3.2 SVPWM模块
方法一:
使用切换时刻处理。
function [Tcm1,Tcm2,Tcm3,sector] = fcn(u_alpha,u_beta,Udc,Ts)
%init
K=sqrt(3)*Ts/Udc;
%Sector judgment
u1=u_beta;
u2=u_alpha*cos(pi/6)-u_beta*cos(pi/3);
u3=-u_alpha*cos(pi/6)-u_beta*cos(pi/3);
if u1>0
A=1;
else
A=0;
end
if u2>0
B=1;
else
B=0;
end
if u3>0
C=1;
else
C=0;
end
sector = A+2*B+4*C;
switch sector
case 3
t4=K*u2;
t6=K*u1;
if abs(t4+t6)>Ts
t4=t4*Ts/(t4+t6);
t6=t6*Ts/(t4+t6);
end
%t7=0.5*(Ts-t4-t6);
Tcm1=0.25*(Ts-t4-t6);
Tcm2=0.25*(Ts+t4-t6);
Tcm3=0.25*(Ts+t4+t6);
case 1
t2=-K*u2;
t6=-K*u3;
if abs(t2+t6)>Ts
t2=t2*Ts/(t2+t6);
t6=t6*Ts/(t2+t6);
end
%t7=0.5*(Ts-t2-t6);
Tcm1=0.25*(Ts+t2-t6);
Tcm2=0.25*(Ts-t2-t6);
Tcm3=0.25*(Ts+t2+t6);
case 5
t2=K*u1;
t3=K*u3;
if abs(t2+t3)>Ts
t2=t2*Ts/(t2+t3);
t3=t3*Ts/(t2+t3);
end
%t7=0.5*(Ts-t2-t3);
Tcm1=0.25*(Ts+t2+t3);
Tcm2=0.25*(Ts-t2-t3);
Tcm3=0.25*(Ts+t2-t3);
case 4
t3=-K*u2;
t1=-K*u1;
if abs(t1+t3)>Ts
t1=t1*Ts/(t1+t3);
t3=t3*Ts/(t1+t3);
end
%t7=0.5*(Ts-t1-t3);
Tcm1=0.25*(Ts+t1+t3);
Tcm2=0.25*(Ts+t1-t3);
Tcm3=0.25*(Ts-t1-t3);
case 6
t1=K*u3;
t5=K*u2;
if abs(t1+t5)>Ts
t1=t1*Ts/(t1+t5);
t5=t5*Ts/(t1+t5);
end
%t7=0.5*(Ts-t1-t5);
Tcm1=0.25*(Ts+t1-t5);
Tcm2=0.25*(Ts+t1+t5);
Tcm3=0.25*(Ts-t1-t5);
case 2
t4=-K*u3;
t5=-K*u1;
if abs(t4+t5)>Ts
t4=t4*Ts/(t4+t5);
t5=t5*Ts/(t4+t5);
end
%t7=0.5*(Ts-t4-t5);
Tcm1=0.25*(Ts-t4-t5);
Tcm2=0.25*(Ts+t4+t5);
Tcm3=0.25*(Ts+t4-t5);
otherwise
Tcm1=0.5*Ts;
Tcm2=0.5*Ts;
Tcm3=0.5*Ts;
end
上面各个扇区的切换时刻表参考如下所示:
需要说明的是,上面代码隐藏了MCU中的ARR值,我取了10000,当Tcm/Ts*ARR=Tcm,但在实际使用中,这块是需要根据实际情况处理的。
方法二:
使用开关切换的总时间即占空比来处理,两种方法在本质上差不多
function [Tcm1,Tcm2,Tcm3,sector] = fcn(u_alpha,u_beta,Udc,Ts)
%init
K=sqrt(3)*Ts/Udc;
%Sector judgment
u1=u_beta;
u2=u_alpha*cos(pi/6)-u_beta*cos(pi/3);
u3=-u_alpha*cos(pi/6)-u_beta*cos(pi/3);
if u1>0
A=1;
else
A=0;
end
if u2>0
B=1;
else
B=0;
end
if u3>0
C=1;
else
C=0;
end
sector = A+2*B+4*C;
switch sector
case 3
t4=K*u2;
t6=K*u1;
if abs(t4+t6)>Ts
t4=t4*Ts/(t4+t6);
t6=t6*Ts/(t4+t6);
end
t7=0.5*(Ts-t4-t6);
Tcm1=t4+t6+t7;
Tcm2=t6+t7;
Tcm3=t7;
case 1
t2=-K*u2;
t6=-K*u3;
if abs(t2+t6)>Ts
t4=t2*Ts/(t2+t6);
t6=t6*Ts/(t4+t6);
end
t7=0.5*(Ts-t2-t6);
Tcm1=t6+t7;
Tcm2=t2+t6+t7;
Tcm3=t7;
case 5
t2=K*u1;
t3=K*u3;
if abs(t2+t3)>Ts
t2=t2*Ts/(t2+t3);
t3=t3*Ts/(t2+t3);
end
t7=0.5*(Ts-t2-t3);
Tcm1=t7;
Tcm2=t2+t3+t7;
Tcm3=t3+t7;
case 4
t3=-K*u2;
t1=-K*u1;
if abs(t1+t3)>Ts
t1=t1*Ts/(t1+t3);
t3=t3*Ts/(t1+t3);
end
t7=0.5*(Ts-t1-t3);
Tcm1=t7;
Tcm2=t3+t7;
Tcm3=t1+t3+t7;
case 6
t1=K*u3;
t5=K*u2;
if abs(t1+t5)>Ts
t1=t1*Ts/(t1+t5);
t5=t5*Ts/(t1+t5);
end
t7=0.5*(Ts-t1-t5);
Tcm1=t5+t7;
Tcm2=t7;
Tcm3=t1+t5+t7;
case 2
t4=-K*u3;
t5=-K*u1;
if abs(t4+t5)>Ts
t4=t4*Ts/(t4+t5);
t5=t5*Ts/(t4+t5);
end
t7=0.5*(Ts-t4-t5);
Tcm1=t4+t5+t7;
Tcm2=t7;
Tcm3=t5+t7;
otherwise
Tcm1=0.5*Ts;
Tcm2=0.5*Ts;
Tcm3=0.5*Ts;
end
%此处是一个BUG,需要取一半
Tcm1=Tcm1/2;
Tcm2=Tcm2/2;
Tcm3=Tcm3/2;
3.3 六路互补PWM生成
这里使用了Repeating Sequence模块来生成一个频率10KHz,幅值等于ARR=10000的等腰三角形锯齿波。
SVPWM模块产生的为处理过的“占空比”(CCR),两种情况:
● 当Repeating Sequence模块产生的三角形波形腰边值大于CCR值,Relay模块打开输出为1;
● 当Repeating Sequence模块产生的三角形波形腰边值小于CCR值,Relay模块打开输出为0;
在通过取反,就可以产生与当前PWM互补的信号。以下是生成六路互补PWM的模块;
4、波形输出
4.1 扇区切换波形
切换顺序5-4-6-2-3-1,周期性变换。
4.2 等腰三角形锯齿波
4.3 扇区矢量切换时刻波形
上图就是“马鞍波”,在实际使用中,上图每一时刻幅值就是PWM的占空比。
4.4 三相电流采样
三相互差120°的正弦波(近似),频率约4.762Hz
4.5 定子相电流
与三相相电流一致。
4.6 转速
转速约4.259rad/s(机械电角速度)
5、 马鞍波的形成原因
6、 基于零序分量注入的SPWM算法
波形分析:
合成信号就是马鞍波。
参考:
1、现代永磁同步电机控制及MATLAB仿真.袁雷
2、STM32无刷电机控制-电流环PI参数计算:https://www.bilibili.com/video/BV1yG411V7Nn/?spm_id_from=333.999.0.0&vd_source=5f570a9f261c43941608688d2d31a4c5
3、SVPWM仿真搭建及马鞍波形成的原因分析:
https://blog.csdn.net/m0_70748084/article/details/125578567