帮忙看看s函数的错误
请高手帮忙看看这个s函数的错误是什么意思?该如何改呢?
谢谢拉 s函数如下:
function = BDFM(t,x,u,flag)
%SIMOM Example state-space M-file S-function with internal A,B,C,D matrices
% This S-function implements a system described by state-space equations:
%
% dx/dt = A*x + B*u
% y = C*x + D*u
%
% where x is the state vector, u is vector of inputs, and y is the vector
% of outputs. The matrices, A,B,C,D are embedded into the M-file.
%
% See sfuntmpl.m for a general S-function template.
%
% See also SFUNTMPL.
%电机的数学模型为
%'=-inv(L)**'+inv(L)*';
% uqr=0,udr=0
%R=[Rp 0 0 0 0 0;
% 0 Rp 0 0 0 0;
% 0 0 Rc 0 0 0;
% 0 0 0 Rc 0 0;
% 0 0 0 0 Rr 0;
% 0 0 0 0 0 Rr]
%G=[ 0 Pp*Lsp*w 0 0 0 Pp*Mp*w;
% -Pp*Lsp*w 0 0 0 -Pp*Mp*w 0 ;
% 0 0 0 Pc*Lsc*w 0 Pc*Mc*w;
% 0 0 -Pc*Lsc*w 0 Pc*Mc*w 0] ;
% 0 0 0 0 0 0 ;
% 0 0 0 0 0 0 ]
%L=[ Lsp 0 0 0 Mp 0 ;
% 0 Lsp 0 0 0 Mp;
% 0 0 Lsc 0 -Mc 0 ;
% 0 0 0 Lsc 0 Mc;
% Mp 0 -Mc 0 Lr 0 ;
% 0 Mp 0 Mc 0 Lr]
Rp=0.81;
Rc=0.81;
Lsp=80e-3;
Lsc=630e-3;
Mp=0.89e-3;
Mc=4.3e-3;
Pp=3;
Pc=1;
Lr=0.04e-3;
Rr=1.57e-3;
switch flag,
%%%%%%%%%%%%%%%%%%
% Initialization %
%%%%%%%%%%%%%%%%%%
case 0
= mdlInitializeSizes;
%%%%%%%%%%%%%%%
% Derivatives %
%%%%%%%%%%%%%%%
case 1,
sys = mdlDerivatives(t,x,u);
%%%%%%%%%%%
% Outputs %
%%%%%%%%%%%
case 3,
sys = mdlOutputs(t,x,u);
%%%%%%%%%%%%%
% Terminate %
%%%%%%%%%%%%%
case{2,4,9}
sys=[]; % Unused flags
otherwise
error(['Unhandled flag=',num2str(flag)]); % Error handling
end
%end simom
%
%=============================================================================
% mdlInitializeSizes
% Return the sizes, initial conditions, and sample times for the S-function.
%=============================================================================
%
function = mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates= 7;% 有iqp, idp, icp ,idc ,iqr, idr,w
sizes.NumDiscStates= 0;
sizes.NumOutputs = 4;%输出有Te,w,iqp ,idp
sizes.NumInputs = 5;% 输入有uqp ,udp, uqc, udc ,TL
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0= zero(7,1);
str = [ ];
ts= ;
% end mdlInitializeSizes
%
%=============================================================================
% mdlDerivatives
% Return the derivatives for the continuous states.
%=============================================================================
%
function sys = mdlDerivatives(t,x,u)
J=0.038;
w=x(7);
R=[Rp 0 0 0 0 0;
0 Rp 0 0 0 0;
0 0 Rc 0 0 0;
0 0 0 Rc 0 0;
0 0 0 0 Rr 0;
0 0 0 0 0 Rr];
G=[ 0 Pp*Lsp*w 0 0 0 Pp*Mp*w;
-Pp*Lsp*w 0 0 0 -Pp*Mp*w 0;
0 0 0 Pc*Lsc* 0 Pc*Mc*w;
0 0 -Pc*Lsc*w 0 Pc*Mc*w 0;
0 0 0 0 0 0;
0 0 0 0 0 0]
L=[ Lsp 0 0 0 Mp 0 ;
0 Lsp 0 0 0 Mp;
0 0 Lsc 0 -Mc 0 ;
0 0 0 Lsc 0 Mc;
Mp 0 -Mc 0 Lr 0 ;
0 Mp 0 Mc 0 Lr];
u=
sys(1:6)=-inv(L)*(R+G)*x(1:6)+-inv(L)*u;
Te=Pp*Mp*+Pc*Mc*;
sys(7)=(Te-u(5))/J;
% end mdlDerivatives
%
%=============================================================================
% mdlOutputs
% Return the output vector for the S-function
%=============================================================================
%
function sys = mdlOutputs(t,x,u)
sys(1)=Pp*Mp*+Pc*Mc*;
sys(2)=x(7);
sys(3:4)=x(1:2);
% end mdlOutputs 这次再试一下,侃侃还有没有错,错在那里自己对比着找:lol :lol
function = BDFM(t,x,u,flag)
%SIMOM Example state-space M-file S-function with internal A,B,C,D matrices
% This S-function implements a system described by state-space equations:
%
% dx/dt = A*x + B*u
% y = C*x + D*u
%
% where x is the state vector, u is vector of inputs, and y is the vector
% of outputs. The matrices, A,B,C,D are embedded into the M-file.
%
% See sfuntmpl.m for a general S-function template.
%
% See also SFUNTMPL.
%电机的数学模型为
%'=-inv(L)**'+inv(L)*';
% uqr=0,udr=0
%R=[Rp 0 0 0 0 0;
% 0 Rp 0 0 0 0;
% 0 0 Rc 0 0 0;
% 0 0 0 Rc 0 0;
% 0 0 0 0 Rr 0;
% 0 0 0 0 0 Rr]
%G=[ 0 Pp*Lsp*w 0 0 0 Pp*Mp*w;
% -Pp*Lsp*w 0 0 0 -Pp*Mp*w 0 ;
% 0 0 0 Pc*Lsc*w 0 Pc*Mc*w;
% 0 0 -Pc*Lsc*w 0 Pc*Mc*w 0] ;
% 0 0 0 0 0 0 ;
% 0 0 0 0 0 0 ]
%L=[ Lsp 0 0 0 Mp 0 ;
% 0 Lsp 0 0 0 Mp;
% 0 0 Lsc 0 -Mc 0 ;
% 0 0 0 Lsc 0 Mc;
% Mp 0 -Mc 0 Lr 0 ;
% 0 Mp 0 Mc 0 Lr]
Rp=0.81;
Rc=0.81;
Lsp=80e-3;
Lsc=630e-3;
Mp=0.89e-3;
Mc=4.3e-3;
Pp=3;
Pc=1;
Lr=0.04e-3;
Rr=1.57e-3;
switch flag,
%%%%%%%%%%%%%%%%%%
% Initialization %
%%%%%%%%%%%%%%%%%%
case 0
= mdlInitializeSizes;
%%%%%%%%%%%%%%%
% Derivatives %
%%%%%%%%%%%%%%%
case 1,
sys = mdlDerivatives(t,x,u);
%%%%%%%%%%%
% Outputs %
%%%%%%%%%%%
case 3,
sys = mdlOutputs(t,x,u);
%%%%%%%%%%%%%
% Terminate %
%%%%%%%%%%%%%
case{2,4,9}
sys=[]; % Unused flags
otherwise
error(['Unhandled flag=',num2str(flag)]); % Error handling
end
%end simom
%
%=============================================================================
% mdlInitializeSizes
% Return the sizes, initial conditions, and sample times for the S-function.
%=============================================================================
%
function = mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates= 7;% 有iqp, idp, icp ,idc ,iqr, idr,w
sizes.NumDiscStates= 0;
sizes.NumOutputs = 4;%输出有Te,w,iqp ,idp
sizes.NumInputs = 5;% 输入有uqp ,udp, uqc, udc ,TL
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0= zeros(7,1);
str = [ ];
ts= ;
% end mdlInitializeSizes
%
%=============================================================================
% mdlDerivatives
% Return the derivatives for the continuous states.
%=============================================================================
%
function sys = mdlDerivatives(t,x,u)
J=0.038;
w=x(7);
R=[Rp 0 0 0 0 0;
0 Rp 0 0 0 0;
0 0 Rc 0 0 0;
0 0 0 Rc 0 0;
0 0 0 0 Rr 0;
0 0 0 0 0 Rr];
G=[ 0 Pp*Lsp*w 0 0 0 Pp*Mp*w;
-Pp*Lsp*w 0 0 0 -Pp*Mp*w 0;
0 0 0 Pc*Lsc* 0 Pc*Mc*w;
0 0 -Pc*Lsc*w 0 Pc*Mc*w 0;
0 0 0 0 0 0;
0 0 0 0 0 0]
L=[ Lsp 0 0 0 Mp 0 ;
0 Lsp 0 0 0 Mp;
0 0 Lsc 0 -Mc 0 ;
0 0 0 Lsc 0 Mc;
Mp 0 -Mc 0 Lr 0 ;
0 Mp 0 Mc 0 Lr];
u=
sys(1:6)=-inv(L)*(R+G)*x(1:6)+-inv(L)*u;
Te=Pp*Mp*+Pc*Mc*;
sys(7)=(Te-u(5))/J;
% end mdlDerivatives
%
%=============================================================================
% mdlOutputs
% Return the output vector for the S-function
%=============================================================================
%
function sys = mdlOutputs(t,x,u)
sys(1)=Pp*Mp*+Pc*Mc*;
sys(2)=x(7);
sys(3:4)=x(1:2);
% end mdlOutputs 是红字的地方:lol :lol
function = BDFM(t,x,u,flag)
%SIMOM Example state-space M-file S-function with internal A,B,C,D matrices
% This S-function implements a system described by state-space equations:
%
% dx/dt = A*x + B*u
% y = C*x + D*u
%
% where x is the state vector, u is vector of inputs, and y is the vector
% of outputs. The matrices, A,B,C,D are embedded into the M-file.
%
% See sfuntmpl.m for a general S-function template.
%
% See also SFUNTMPL.
%电机的数学模型为
%'=-inv(L)**'+inv(L)*';
% uqr=0,udr=0
%R=[Rp 0 0 0 0 0;
% 0 Rp 0 0 0 0;
% 0 0 Rc 0 0 0;
% 0 0 0 Rc 0 0;
% 0 0 0 0 Rr 0;
% 0 0 0 0 0 Rr]
%G=[ 0 Pp*Lsp*w 0 0 0 Pp*Mp*w;
% -Pp*Lsp*w 0 0 0 -Pp*Mp*w 0 ;
% 0 0 0 Pc*Lsc*w 0 Pc*Mc*w;
% 0 0 -Pc*Lsc*w 0 Pc*Mc*w 0] ;
% 0 0 0 0 0 0 ;
% 0 0 0 0 0 0 ]
%L=[ Lsp 0 0 0 Mp 0 ;
% 0 Lsp 0 0 0 Mp;
% 0 0 Lsc 0 -Mc 0 ;
% 0 0 0 Lsc 0 Mc;
% Mp 0 -Mc 0 Lr 0 ;
% 0 Mp 0 Mc 0 Lr]
Rp=0.81;
Rc=0.81;
Lsp=80e-3;
Lsc=630e-3;
Mp=0.89e-3;
Mc=4.3e-3;
Pp=3;
Pc=1;
Lr=0.04e-3;
Rr=1.57e-3;
switch flag,
%%%%%%%%%%%%%%%%%%
% Initialization %
%%%%%%%%%%%%%%%%%%
case 0
= mdlInitializeSizes;
%%%%%%%%%%%%%%%
% Derivatives %
%%%%%%%%%%%%%%%
case 1,
sys = mdlDerivatives(t,x,u);
%%%%%%%%%%%
% Outputs %
%%%%%%%%%%%
case 3,
sys = mdlOutputs(t,x,u);
%%%%%%%%%%%%%
% Terminate %
%%%%%%%%%%%%%
case{2,4,9}
sys=[]; % Unused flags
otherwise
error(['Unhandled flag=',num2str(flag)]); % Error handling
end
%end simom
%
%=============================================================================
% mdlInitializeSizes
% Return the sizes, initial conditions, and sample times for the S-function.
%=============================================================================
%
function = mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates= 7;% 有iqp, idp, icp ,idc ,iqr, idr,w
sizes.NumDiscStates= 0;
sizes.NumOutputs = 4;%输出有Te,w,iqp ,idp
sizes.NumInputs = 5;% 输入有uqp ,udp, uqc, udc ,TL
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0= zeros(7,1);
str = [ ];
ts= ;
% end mdlInitializeSizes
%
%=============================================================================
% mdlDerivatives
% Return the derivatives for the continuous states.
%=============================================================================
%
function sys = mdlDerivatives(t,x,u)
J=0.038;
w=x(7);
R=[Rp 0 0 0 0 0;
0 Rp 0 0 0 0;
0 0 Rc 0 0 0;
0 0 0 Rc 0 0;
0 0 0 0 Rr 0;
0 0 0 0 0 Rr];
G=[ 0 Pp*Lsp*w 0 0 0 Pp*Mp*w;
-Pp*Lsp*w 0 0 0 -Pp*Mp*w 0;
0 0 0 Pc*Lsc* 0 Pc*Mc*w;
0 0 -Pc*Lsc*w 0 Pc*Mc*w 0;
0 0 0 0 0 0;
0 0 0 0 0 0]
L=[ Lsp 0 0 0 Mp 0 ;
0 Lsp 0 0 0 Mp;
0 0 Lsc 0 -Mc 0 ;
0 0 0 Lsc 0 Mc;
Mp 0 -Mc 0 Lr 0 ;
0 Mp 0 Mc 0 Lr];
u=
sys(1:6)=-inv(L)*(R+G)*x(1:6)+-inv(L)*u;
Te=Pp*Mp*+Pc*Mc*;
sys(7)=(Te-u(5))/J;
% end mdlDerivatives
%
%=============================================================================
% mdlOutputs
% Return the output vector for the S-function
%=============================================================================
%
function sys = mdlOutputs(t,x,u)
sys(1)=Pp*Mp*+Pc*Mc*;
sys(2)=x(7);
sys(3:4)=x(1:2);
% end mdlOutputs 和我返的一样的毛病:)
页:
[1]