function [sys,x0, str, ts]=struc(t,x,u,flag)
%paramètres d'entrée
initialiser;
massT=5175;
massS=361/0.45;
NetaS = 0.05;
frequenceS = 30; % en Hz
OmegaS = frequenceS*2*pi; %rad/s
OmegaT =OmegaS*sqrt(1+massS/massT);
NetaT = NetaS*sqrt(1+massS/massT);
% u est le vecteur d'entrée, donc correspond à la force
T=2.5e-4;
num=[2*NetaS*OmegaS*T^2+OmegaS^2*T^2+4 4*NetaS*OmegaS*T^2+2*OmegaS^2*T^2-8 2*NetaS*OmegaS*T^2+OmegaS^2*T^2+4];
den=[2*NetaT*OmegaT*T^2+OmegaT^2*T^2+4 4*NetaT*OmegaT*T^2+2*OmegaT^2*T^2-8 2*NetaT*OmegaT*T^2+OmegaT^2*T^2+4];
[A1,B1,C1,D1]=tf2ss(num,den);
inertieSenG= inerti([IxxT IyyT IzzT], massT, cgT-cg);
inertieTenG=inerti([IxxS IyyS IzzS], massS, cgS-cg);
switch flag,
case 2
sys = A1*x + B1*u;
case 3
sys = C1*x + D1*u;
case 0
% Call simsizes for a sizes structure, fill it in, and convert it
% to a sizes array.
sizes = simsizes;
sizes.NumContStates = 0;
sizes.NumDiscStates = 2;
sizes.NumOutputs = 1;
sizes.NumInputs = 1;
sizes.DirFeedthrough = 1; % Matrix D is non-empty.
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0 = zeros(sizes.NumDiscStates,1); % Initialize the discrete states.
str = []; % Set str to an empty matrix.
ts = [-1 0]; % sample time: [period, offset]
% End of mdlInitializeSizes.
case {1, 4, 9} % Unused flags
sys = [];
otherwise
error(['unhandled flag = ',num2str(flag)]); % Error handling
end
Partager