IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Simulink Discussion :

S-function pour une machine a courant continu


Sujet :

Simulink

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2012
    Messages : 88
    Points : 51
    Points
    51
    Par défaut S-function pour une machine a courant continu
    Salut, j'ai besoin d'aide dans le problème suivant :
    je suis nouveau avec le matlab je cherche de faire une modélisation d'une machine à courant continu avec s-function mais j'ai trouvé un problème, le matlab m'envoi un message d'erreur je sais pas quoi faire avec "Error in 'mccc/S-Function' while executing MATLAB S-function 'csfunc', flag = 3 (output), at time 0.0."
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
    function [sys,x0,str,ts] =csfunc(t,x,u,flag)
    % CSFUNC An example M-file S-function for defining a syste
    % continuous state equations:
     
    % Generate a continuous linear system:
    A=[0.09 0.01 1 0];
    B=[1 7 0 2];
    C=[0 2 1 5];
    D=[0;0;0;0];     
     
    % Dispatch the flag.
    %
    switch flag,
    case 0
     
        [sys,x0,str,ts]=mdlInitializeSizes(t,x,u,flag); % Initialization
    case 1
        sys = mdlDerivatives(t,x,u,A,B,C,D); % Calculate derivatives
      case 3
        sys =mdlOutputs(t,x,u,A,B,C,D); % Calculate outputs
     
    case { 2, 4, 9 } % Unused flags
    sys = [];
    otherwise
        error(['Unhandled flag = ',num2str(flag)]); % Error handling
    end
    % End of csfunc.
    % ==============================================================
    % mdlInitializeSizes
    % Return the sizes, initial conditions, and sample times for the 
    % S-function.
    % % ==============================================================
    % 
    function [sys,x0,str,ts] =mdlInitializeSizes(t,x,u,flag)
    %
    % Call simsizes for a sizes structure, fill it in and convert it 
    % to a sizes array.
    %
    sizes = simsizes;
    sizes.NumContStates  = 2;
    sizes.NumDiscStates  = 0;
    sizes.NumOutputs     = 2;
    sizes.NumInputs      = 2;
    sizes.DirFeedthrough = 1; % Matrix D is nonempty. 
    sizes.NumSampleTimes = 1;
    sys = simsizes(sizes);
    x0=(8:10)';
     
    % Initialize the initial conditions.
    %
    x0 = zeros(2,1);
    %
    % str is an empty matrix.
    %
    str = [];
    %
    % Initialize the array of sample times; in this example the sample 
    % time is continuous, so set ts to 0 and its offset to 0.
    %
    ts = [0 0];
    % End of mdlInitializeSizes.
    %
    %==============================================================
    % mdlDerivatives
    % Return the derivatives for the continuous states.
    %==============================================================
    function sys = mdlDerivatives(t,x,u,A,B,C,D)
    sys =A*x+B*u;
    % End of mdlDerivatives.
    %
    %==============================================================
    % mdlOutputs
    % Return the block outputs.
    %==============================================================
    %
    function sys =mdlOutputs(t,x,u,A,B,C,D)
    sys =C*x+D*u;
    % End of mdlOutputs.
    Nom : m.jpg
Affichages : 650
Taille : 10,5 Ko

  2. #2
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 882
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 882
    Points : 3 432
    Points
    3 432
    Par défaut
    salut

    ce que tu es en train de faire n'est pas du tout une s function mais une fonction matlab integrée dans simulink
    regarde plutôt les blocs embedded matlab et matlab function
    les S function, c'est pour utiliser du C ou du Fortran sous simulink

    Fabien

Discussions similaires

  1. simulation d'une machine a courant continu Serie
    Par M.Chaabane dans le forum Simulink
    Réponses: 6
    Dernier message: 15/02/2009, 20h18
  2. Réponses: 4
    Dernier message: 02/05/2007, 13h40
  3. Un devis pour une machine vouée au développement
    Par Neroptik dans le forum Ordinateurs
    Réponses: 9
    Dernier message: 27/04/2007, 21h49
  4. Une version de linux pour une machine assez ancienne.
    Par Muesko dans le forum Distributions
    Réponses: 8
    Dernier message: 06/07/2006, 17h37
  5. Code pour une machine d'une banque
    Par Paulinho dans le forum C++
    Réponses: 7
    Dernier message: 24/10/2005, 08h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo