yangjun1359 发表于 2010-4-30 10:43

求助S函数的编写,带源程序

我自己做了一个基于任意坐标系的异步电机模型,s函数如下。可以仿真,但是不知道什么地方没编写对,总是波形不对。希望各位大哥指点一下!万分感谢!function = ac_motor(t,x,u,flag)
%异步电机在任意以w1旋转的坐标系下的两轴模型
%==============基本电机参数===================
%电机方程
%
L1s=0.000724;         L1r=0.000724;            Lm1=0.02711;
Rs=0.08233;             Rr=0.0503;               P=2;
J=0.01;               Lm=1.5*Lm1;       Ls=L1s+Lm;
Lr=L1r+Lm;

%6个状态变量ids iqs idr iqr w theta
%5个输入变量uas ubs ucs TL w1
%8个输出变量Uds Uqs ids iqs idr iqr w Te

switch flag,
case 0,
    =mdlInitializeSizes;
case 1,
    sys=mdlDerivatives(t,x,u,Ls,Lr,Lm,Rs,Rr,P,J);
case 3,
    sys=mdlOutputs(t,x,u,P,Lm);
case {2,4,9}
    sys=[];
otherwise
    error(['Unhandled flag = ',num2str(flag)]);
end

function =mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates= 6;
sizes.NumDiscStates= 0;
sizes.NumOutputs   = 8;
sizes.NumInputs      = 5;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1;   
sys = simsizes(sizes);
x0 = ;
str = [];
ts= ;


function sys=mdlDerivatives(t,x,u,Ls,Lr,Lm,Rs,Rr,P,J)
TL=u(4);    w1=u(5);      w=x(5);    theta=x(6);    g=w1-w;
Uds=sqrt(2/3)*(cos(x(6))*u(1)+cos(x(6)-2*pi/3)*u(2)+cos(x(6)+2*pi/3)*u(2));
Uqs=-sqrt(2/3)*(sin(x(6))*u(1)+sin(x(6)-2*pi/3)*u(2)+sin(x(6)+2*pi/3)*u(2));
Udr=0;
Uqr=0;
RR =[Rs         -w1*Ls         0      -w1*Lm
   w1*Ls         Rs         w1*Lm       0
   0             -g*Lm         Rr      -g*Lr
   g*Lm            0             g*Lr       Rr];
LL=[Ls   0    Lm    0
   0    Ls    0    Lm
   Lm    0    Lr    0
   0    Lm    0    Lr];
I=;
U=;
II=-inv(LL)*RR*I+inv(LL)*U;%能否直接这样求解电流?
Te=P*Lm*(x(2)*x(3)-x(1)*x(4));
dw=(P/J)*(Te-TL);
dx(6)=u(5);
sys = ;

function sys=mdlOutputs(t,x,u,P,Lm)
Uds=sqrt(2/3)*(cos(x(6))*u(1)+cos(x(6)-2*pi/3)*u(2)+cos(x(6)+2*pi/3)*u(2));
Uqs=-sqrt(2/3)*(sin(x(6))*u(1)+sin(x(6)-2*pi/3)*u(2)+sin(x(6)+2*pi/3)*u(2));
Te=P*Lm*(x(2)*x(3)-x(1)*x(4));
sys = ;

yufeng 发表于 2010-5-1 09:37

你的数学模型要给大家

yangjun1359 发表于 2010-5-1 10:08

谢谢,问题已解决!

[ 本帖最后由 yangjun1359 于 2010-5-1 10:10 编辑 ]
页: [1]
查看完整版本: 求助S函数的编写,带源程序