声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2261|回复: 2

[电力电机类] 求助S函数的编写,带源程序

[复制链接]
发表于 2010-4-30 10:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我自己做了一个基于任意坐标系的异步电机模型,s函数如下。可以仿真,但是不知道什么地方没编写对,总是波形不对。希望各位大哥指点一下!万分感谢!function [sys,x0,str,ts] = 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,
    [sys,x0,str,ts]=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 [sys,x0,str,ts]=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 = [0,0,0,0,0,0];
str = [];
ts  = [0 0];


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=[x(1);x(2);x(3);x(4)];
U=[Uds;Uqs;Udr;Uqr];
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 = [II(1);II(2);II(3);II(4);dw;dx(6)];

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 = [Uds,Uqs,x(1),x(2),x(3),x(4),x(5),Te];

ac_motor.m

2.06 KB, 下载次数: 2

acmotor.mdl

20.84 KB, 下载次数: 1

回复
分享到:

使用道具 举报

发表于 2010-5-1 09:37 | 显示全部楼层
你的数学模型要给大家
 楼主| 发表于 2010-5-1 10:08 | 显示全部楼层
谢谢,问题已解决!

[ 本帖最后由 yangjun1359 于 2010-5-1 10:10 编辑 ]
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-23 19:01 , Processed in 0.059011 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表