声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1196|回复: 3

[基本模块类] 谁能帮我看看异步机的数模 S-函数啊

[复制链接]
发表于 2007-6-14 16:40 | 显示全部楼层 |阅读模式

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

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

x
:@Q 为什么老是又错误啊?
哪位大侠行侠仗义啊
帮帮忙呀
急用呀!
多谢多谢啊!


输入是Us,Is,n0,输出是磁链Ψα,Ψβ与转矩Tf


%异步机模型的S-函数
function [sys,x0,str,ts] = ybj(t,x,u,flag)

switch flag,
    %Initialization
  case 0,
    [sys,x0,str,ts]=mdlInitializeSizes;
    %Derivatives
  case 1,
    sys=mdlDerivatives(t,x,u);
    %Output
  case 3,
    sys=mdlOutputs(t,x,u);
   
    %Terminate
  case {2,4,9}
      sys=[];
  otherwise
    error(['Unhandled flag = ',num2str(flag)]);
end
%end sfundsc2
%mdlInitializeSizes
function [sys,x0,str,ts]=mdlInitializeSizes

sizes = simsizes;
sizes.NumContStates  = 8;
sizes.NumDiscStates  = 0;
sizes.NumOutputs     = 5;
sizes.NumInputs      = 7;  
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 1;   
sys = simsizes(sizes);

x0  = zeros(8,1);

str = [];

ts  = [0 0];%Sample period of 0.1 seconds(10Hz)
%end mdlInitializeSizes
%function sys=mdlDerivatives(t,x,u,R1,R2,LA,M1,M2,MAa,Rs,Ls,Lr,J,Rw)
function sys=mdlDerivatives(t,x,u)
R1=0.252;
R2=0.332;
p0=2;
LA=0.0816;
M1=0.04;
M2=M1;
MAa=0.08;
Rs=diag([R1*ones(1,3),R2*ones(1,3)]);
Ls=[LA -M1 -M1;-M1 LA -M1;-M1 -M1 LA];
Lr=Ls;
J=0.075;
Rw=0.0375;
Msr=MAa*[cos(x(8)) cos(x(8)+2*pi/3) cos(x(8)-2*pi/3);cos(x(8)-2*pi/3) cos(x(8)) cos(x(8)+2*pi/3);cos(x(8)+2*pi/3) cos(x(8)-2*pi/3) cos(x(8))];
Mrs=Msr';
L=[Ls Msr;Mrs Lr]
K1=inv(L);
%K2=dMrs/dSt
K2=-MAa*[sin(x(8)) sin(x(8)+2*pi/3) sin(x(8)-2*pi/3);sin(x(8)-2*pi/3) sin(x(8)) sin(x(8)+2*pi/3);sin(x(8)+2*pi/3) sin(x(8)-2*pi/3) sin(x(8))];
%K3=dMrs/dt
K3=p0*x(7)*K2;
%K4=dL/dSt
K4=[zeros(3,3),K2;K2',zeros(3,3)];
%K5=dL/dt
K5=[zeros(3,3),K3;K3',zeros(3,3)];
A=[-K1*(Rs+K5),zeros(6,1),zeros(6,1);p0*x(1:6)'*K4/(2*J),-Rw/J,0;zeros(1,6),p0,0];
B=[K1,zeros(6,1);zeros(1,6),-1/J;zeros(1,6),0];
sys=A*x+B*u;
function sys=mdlOutputs(t,x,u)
MAa=0.08;
p0=2;
K2=-MAa*[sin(x(8)) sin(x(8)+2*pi/3) sin(x(8)-2*pi/3);sin(x(8)-2*pi/3) sin(x(8)) sin(x(8)+2*pi/3);sin(x(8)+2*pi/3) sin(x(8)-2*pi/3) sin(x(8))];
K4=[zeros(3,3),K2;K2',zeros(3,3)];
sys(1:3)=x(1:3);
sys(4)=30*x(7)/pi;
sys(5)=p0*x(1:6)'*K4*x(1:6)/2;
%end mdloutputs
回复
分享到:

使用道具 举报

 楼主| 发表于 2007-6-14 16:42 | 显示全部楼层

可以与我即时联系

我的QQ号是303567174
寝室电话是0472-6984256
谢谢啊谢谢!
发表于 2007-6-15 18:06 | 显示全部楼层
本版面有关于电机的S函数的帖子,自己搜索
发表于 2007-6-21 22:26 | 显示全部楼层
出错在什么地方,因为你只给了s函数,单从程序上看没有错啊
1.JPG

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-6-15 19:45 , Processed in 0.066411 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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