五、永磁同步电机矢量控制(FOC)—坐标变换及SVPWM Simulink仿真

        在前面几节的内容中,已经详细介绍了坐标变换和SVPWM技术的理论知识,在本节内容中,将在Simulink中搭建坐标变换和SVPWM仿真模型。

        坐标变换公式参考《一、永磁同步电机矢量控制(FOC)—概述及坐标变换》

        首先假定三相对称正弦电为:

         三相对称正弦电模型及波形图如下,利用“sine wave”模块构建正弦波形,正弦电幅值和频率自由给定,作者给定的幅值为12、频率为2π:

 

1.Clark变换

        定义两相静止坐标系中的a轴与定子A相绕组重合,β轴逆时针超前a轴90空间电角度。

        利用“MATLAB Function”模块搭建Clark变换模块。

        Clark变换内部函数为:

function [u_alpha,u_beta] = clark(u_a,u_b,u_c)

u_alpha=(u_a-1/2*u_b-1/2*u_c)*2/3;
u_beta=(sqrt(3)/2*u_b-sqrt(3)/2*u_c)*2/3;

         注意,此处输入量为电压值,也可以设置为电流值、磁链。

 通过Clark变换后,3个三相正弦电信号转化为两相静止坐标系αβ中的2个正弦电信号,需要控制的信号变为2个,控制难度降低,但是控制信号仍为交流电信号,控制难度仍然存在,如果将交流电信号转变为直流电信号,控制难度将进一步降低,这就需要通过Park变换。

2.Park变换

        通过Park变换就将U_α、U_β转化到了转子旋转坐标系中,由U_d U_q代替。在Park变换中引入了电角度θ,电角度θ的斜率也即θ的微分,就是电角速度,电角速度的频率和三相正弦电频率相同,三相正弦电频率为2π,电角速度也为2π。

         利用“Ramp”模块生成电角度θ,斜率Slope为2*pi

        利用“MATLAB Function”模块搭建Park变换模块。

        Park变换模块内部函数如下:

function [u_d,u_q] = park(u_alpha,u_beta,theta_e)


u_d=u_alpha*cos(theta_e)+u_beta*sin(theta_e);
u_q=-u_alpha*sin(theta_e)+u_beta*cos(theta_e);

       同样的,输入输出量也可设置为电流、磁链。

        通过Park变换,就将两个正弦电信号转化为了两个直流电信号,因此控制难度大大减小,控制u_q的大小,就可以控制电机的转矩(电机控制的核心就是对转矩的控制)。U_d=0也符合Id=0的电流环控制策略。

3.反Park变换

        将两相垂直旋转坐标系中的u_d u_q转换为两相静止坐标系中的u_α u_β。

        模型框架如下:

       反Park变换模块内部函数如下,也需要输入电角度θ:

function [u_alpha,u_beta]  = inv_park(u_q,u_d,theta_e)

u_alpha=cos(theta_e)*u_d-sin(theta_e)*u_q;
u_beta=sin(theta_e)*u_d+cos(theta_e)*u_q;

end

       变换后输出图像如下,两个直流电信号转化为两个交流电信号。

4.反Clark变换

       将两相静止坐标系中的u_α u_β转换为三相静止坐标系中的u_a u_b u_c。

        模型框架如下:

        反Clark变换模块内部函数如下:

function [u_a,u_b,u_c] = inv_clark(u_alpha,u_beta)

u_a = u_alpha;
u_b = -0.5*u_alpha + sqrt(3)/2*u_beta;
u_c = -0.5*u_alpha - sqrt(3)/2*u_beta;

        输出图像如下:

         从反Park变换和反Clark变换可以看出,两种反变换都可以输出和原始信号幅值、频率相同的信号,但是相位上会有所差异。

5.SVPWM技术

       此处理论知识参考《四、永磁同步电机矢量控制(FOC)—空间矢量调制技术SVPWM》

      相关参数在a_2_Initfun.m文件中设置,首先运行该文件生成对应变量。

%% 初始参数区
T=2000;%一个PWM计数周期
CCR=1000;%三角波中的最大值,为T的一半
U_dc=12;%三相电机供电电压为24V
m=sqrt(3)*T/U_dc;
p=11;

        主体框架如下,U_alpha U_beta可接入坐标变换中,Clark变化后产生的u_α和u_β。

        此处m不是调制系数,而是m= ,即X、Y、Z中计算用到的参数:

(1)ABC值及N计算

       若A、B、C大于0则An、Bn、Cn为1,小于0则为0,N=4Cn+2Bn+An,与二进制对应。

%% 计算ABC的值,用于计算N值,以判断扇区
function [X,Y,Z,N] = fcn(U_alpha,U_beta,m)

A=U_beta;
B=sqrt(3)/2*U_alpha-1/2*U_beta;
C=-sqrt(3)/2*U_alpha-1/2*U_beta;

A_temp=A>0;
B_temp=B>0;
C_temp=C>0;
N=4*C_temp+2*B_temp+A_temp;

%计算基本矢量和零矢量的基本作用时间
X=m*A;
Y=m*B;
Z=m*C;

         当电机沿着某一方向旋转时(可理解为u_α u_β为正弦电)时,N值的变化规律是2-3-1-5-4-6

(2)矢量作用时间计算

       该部分主要根据N值判断Uout当前所在的扇区,并利用XYZ值根据N值计算出基本矢量作用时间Tx、Ty(对应其他文章中的Tfirst、Tsecond),和零矢量作用时间T0(T7)。PWM计算周期T利用“constant”模块,在其中输入以生成的常量T符号。

function [T_x,T_y,T_0,N] = fcn(X,Y,Z,N,T)

switch N
    case 1
        T_x = -Y;
        T_y = -Z;
    case 2
        T_x = -Z;
        T_y = -X;
    case 3
        T_x = Y;
        T_y = X;
    case 4
        T_x = -X;
        T_y = -Y;
    case 5
        T_x = X;
        T_y = Z;
    otherwise
        T_x = Z;
        T_y = Y;
end

T_xy_sum = T_x+T_y;
T_x_temp = T_x;
T_y_temp = T_y;

if T_xy_sum>T
    T_x=T_x_temp/T_xy_sum*T;
    T_y=T_y_temp/T_xy_sum*T;
end

T_0=(T-T_x-T_y)/2.0;
end

(3)切换时间计算

       该部分主要根据T_x,T_y,T_0,N,计算切换时间Ta、Tb、Tc。通过N值来分配每相的CCR_X值。

function [CCR_U,CCR_V,CCR_W] = fcn(T_x,T_y,T_0,N)

T_a=T_0/2.0;
T_b=T_a+T_x/2.0;
T_c=T_b+T_y/2.0;

switch N
    case 1
        CCR_U=T_b;
        CCR_V=T_a;
        CCR_W=T_c;
    case 2
        CCR_U=T_a;
        CCR_V=T_c;
        CCR_W=T_b;
    case 3
        CCR_U=T_a;
        CCR_V=T_b;
        CCR_W=T_c;
    case 4
        CCR_U=T_c;
        CCR_V=T_b;
        CCR_W=T_a;
    case 5
        CCR_U=T_c;
        CCR_V=T_a;
        CCR_W=T_b;
    otherwise
        CCR_U=T_b;
        CCR_V=T_c;
        CCR_W=T_a;
end

(4)三相桥臂通断计算

       该部分加入三角载波模块,使用的是“Repeating Sequence”模块,对其中参数进行设置如下:

       “Time values”表示一个三角载波的周期,即1/PWM计算周期T=1/2000=0.0005。CCR值即三角波输出的最大值,CCR值为T的一半即1000,该模块在0.00025时间内由0计数至1000,再由0.00025至0.0005之间,由1000减至0。

        以A(U)相为例,若A相切换时间为Ta(CCR_U),当CCR值小于Ta时,A相桥臂下桥臂导通,A相接地,当CCR值大于Ta时,A相桥臂上桥臂导通,A相接电源正极。其他两相也是相同的原理。

function [U,U_N,V,V_N,W,W_N] = fcn(CCR_U,CCR_V,CCR_W,Count)

if Count<CCR_U
    U=0;
    U_N=1;
else
    U=1;
    U_N=0;
end

if Count<CCR_V
    V=0;
    V_N=1;
else
    V=1;
    V_N=0;
end

if Count<CCR_W
    W=0;
    W_N=1;
else
    W=1;
    W_N=0;
end

end

        将SVPWM模块生成的PWM信号接入到三相逆变电路中,即可实现对永磁同步电机的控制。

         

      在本节内容中,将前面提到的坐标变换以及SVPWM技术在Simulink中搭建了仿真模型,通过在FOC速度闭环控制电路中的仿真,验证了以上各仿真模块的有效性。模块可以直接使用。

         三相CCR值为有效的马鞍波形。

        以上模型放在该链接内,需要请自取(速度环控制电路模型未放在该连接中,后续将逐步讲解)。

        链接: https://pan.baidu.com/s/1evFka2ECMfs9y2o4n9EQEA?pwd=9q8e 提取码: 9q8e

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值