感应电机矢量控制坐标变换MATLAB符号函数推导代码

计算条件

主要是以隐极感应电机为例,以隐极机为例是因为隐极机的气隙是均匀的,所以定子方绕组之间的互感是相同的(均为-1/2ms,其中ms为两相绕组“重合”时候的互感,也是两绕组之间最大的互感,又ms=sqrt(L1L2),所以ms=L1=L2,L1和L2为两线圈的电感)。在最后结果中,转子方有运动电势,所以转子方的表达式中有x_w(角速度)。下面代码中的L1和L2并不是线圈的电感,而是线圈的漏感,代码中ms才是线圈的电感,定子方绕组之间的互感为cos(PI*2/3)ms(即-1/2ms)。

源代码

clc
clear
syms x x_w Rs Rr Ls Ms Lr ms Mr L1 L2 Mrs  ids iqs i0s idr iqr i0r ids_temp iqs_temp i0s_temp idr_temp iqr_temp i0r_temp t P
x=int(x_w,t);%角度等于角速度的积分,x为角度,x_w为角速度
Lr=ms+L2;
Ls=ms+L1;
Ms=-1/2*ms;
Mr=-1/2*ms;
Mrs=ms;
ids_temp=str2sym('id_s(t)');
iqs_temp=str2sym('iq_s(t)'); 
i0s_temp=str2sym('i0_s(t)');
idr_temp=str2sym('id_r(t)');
iqr_temp=str2sym('iq_r(t)');
i0r_temp=str2sym('i0_r(t)');

Cr_ABC2ab=sqrt(2/3)*[1   -0.5  -0.5;
                     0  sqrt(3)/2  -sqrt(3)/2;
               1/sqrt(2)   1/sqrt(2)  1/sqrt(2)];
Cr_ab2dq=[cos(x)  -sin(x) 0;
         sin(x)  cos(x) 0;
          0        0   1];
Cs_ABC2dq=Cr_ABC2ab;
Cr_ABC2dq=Cr_ab2dq*Cr_ABC2ab;
% Cr_ABC2dq=sqrt(2/3)*[cos(x)   -sin(x+pi/6) -cos(x+pi/3);
%                                         -sin(x)   -cos(x+pi/6)   sin(x+pi/3);
%                                         1/sqrt(2)     1/sqrt(2)       1/sqrt(2)];
C_ABC2dq=[Cs_ABC2dq,zeros(3,3);
                        zeros(3,3),Cr_ABC2dq];
Mrs0=Mrs*cos(x);
Mrs120=Mrs*cos(x-pi*2/3);
Mrs240=Mrs*cos(x+pi*2/3);
Lrr=[Lr Mr Mr;
        Mr Lr Mr;
        Mr Mr Lr;];
Lss=[Ls Ms Ms;
        Ms Ls Ms;
        Ms Ms Ls;];
 Lrs=[Mrs0 Mrs120 Mrs240;
           Mrs240 Mrs0 Mrs120;
           Mrs120 Mrs240 Mrs0];
 L=[Lss,Lrs.';
       Lrs,Lrr];
   
i_dq=[ids_temp iqs_temp i0s_temp idr_temp iqr_temp i0r_temp].';
i_dqTemp=[ids iqs i0s idr iqr i0r];%并不参与运算,但是后面显示结果的时候要用到
i_ABC=(C_ABC2dq.')*i_dq;

%六个绕组全磁链
magnetic_chain=simplify(L*i_ABC);
diff_chain=diff(magnetic_chain,t);%全磁链微分
Sans=simplify(Cs_ABC2dq*diff_chain(1:3,1));%坐标变化后dq轴系下定子磁链项
Rans=simplify(Cr_ABC2dq*diff_chain(4:6,1));%坐标变化后dq轴系下转子磁链项

%% 将最后结果中定子磁链阵中的微分换为微分算子
Rans=subs(Rans,{str2sym('diff(id_r(t), t)') , str2sym('diff(iq_r(t), t)') , str2sym('diff(id_s(t), t)')...
                                , str2sym('diff(iq_s(t), t)'),str2sym('diff(i0_s(t), t)'),str2sym('diff(i0_r(t), t)')}...
                               ,{str2sym('P*idr')             , str2sym('P*iqr')             , str2sym('P*ids')               ...
                               , str2sym('P*iqs')             ,str2sym('P*i0s')             ,str2sym('P*i0r')});
Rans=subs(Rans,{str2sym('id_r(t)') , str2sym('iq_r(t)') , str2sym('id_s(t)') ...
                                , str2sym('iq_s(t)'),str2sym('i0_s(t)'),str2sym('i0_r(t)')}...
                             ,{str2sym('idr')       , str2sym('iqr')      , str2sym('ids')       ...
                             , str2sym('iqs')     ,str2sym('i0s')     ,str2sym('i0r')});
                           
%% 将最后结果中转子磁链阵中的微分换为微分算子
Sans=subs(Sans,{str2sym('diff(id_r(t), t)') , str2sym('diff(iq_r(t), t)') , str2sym('diff(id_s(t), t)')...
                                , str2sym('diff(iq_s(t), t)'),str2sym('diff(i0_s(t), t)'),str2sym('diff(i0_r(t), t)')}...
                               ,{str2sym('P*idr')             , str2sym('P*iqr')             , str2sym('P*ids')               ...
                               , str2sym('P*iqs')             ,str2sym('P*i0s')             ,str2sym('P*i0r')});
Sans=subs(Sans,{str2sym('id_r(t)') , str2sym('iq_r(t)') , str2sym('id_s(t)') ...
                                , str2sym('iq_s(t)'),str2sym('i0_s(t)'),str2sym('i0_r(t)')}...
                             ,{str2sym('idr')       , str2sym('iqr')      , str2sym('ids')       ...
                             , str2sym('iqs')     ,str2sym('i0s')     ,str2sym('i0r')});
                           
             
 %%   结果输出                       
 tempans=[Sans;Rans];
 [A B]=equationsToMatrix([tempans],[ids iqs i0s idr iqr i0r]);
 R=[diag([Rs Rs Rs]),zeros(3,3);
    zeros(3,3),diag([Rr Rr Rr])];
endans=R+A;
endans=[endans(1:2,1:2),endans(1:2,4:5);
        endans(4:5,1:2),endans(4:5,4:5)]

输出结果

endans =
 
[ Rs + (L1 + (3*ms)/2)*P,                      0,           ((3*ms)/2)*P,                      0]
[                      0, Rs + (L1 + (3*ms)/2)*P,                      0,           ((3*ms)/2)*P]
[           ((3*ms)/2)*P,         ((3*ms)/2)*x_w, Rr + (L2 + (3*ms)/2)*P,    (L2 + (3*ms)/2)*x_w]
[        (-(3*ms)/2)*x_w,           ((3*ms)/2)*P,  (- L2 - (3*ms)/2)*x_w, Rr + (L2 + (3*ms)/2)*P]
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值