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 :

Embarquer un fichier.m dans une s-function


Sujet :

Simulink

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Points : 22
    Points
    22
    Par défaut Embarquer un fichier.m dans une s-function
    Bonjour,

    j'ai un programme écrit en matlab que je veux embarquer dans un modèle simulink via l'utilisation d'une s-function. J'ai beau essayé, mais en vain.

    Merci d'avance pour votre aide.

  2. #2
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Bonjour,

    Pour utiliser du code MATLAB tu devrais plutôt utiliser un bloc Embedded MATLAB Function, il est fait pour ca.

    Duf
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par duf42 Voir le message
    Bonjour,

    Pour utiliser du code MATLAB tu devrais plutôt utiliser un bloc Embedded MATLAB Function, il est fait pour ca. Duf
    Merci pour ta réponse. J'ai essayé avec Embedded function mais j'ai toujours pas résolu le problème.

    Voici le code que je veux embarquer en s-function
    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
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
    %Matlab Code to generate Switching functions
    % Inputs are magnitude u1(: ),angle u2(: )
    % and ramp time signal for comparison u3(: )
    function [sf]=aaa(u)
    ts=0.0002;
    vdc=1;
    peak_phase_max= vdc/sqrt( 3);
    x=u(2); 
    y=u( 3); 
    mag=(u(1)/peak_phase_max) * ts;
    %sector I
    if (x>=0) && (x<pi/ 3)
         ta = mag * sin(pi/3-x);tb = mag * sin(x);
         t0 =(ts-ta-tb);
         t1=[t0/4 ta/2 tb/2 t0/2 tb/2 ta/2 t0/4];t1=cumsum(t1);
         v1=[0 1 1 1 1 1 0];v2=[0 0 1 1 1 0 0];v3=[0 0 0 1 0 0 0];
         for j=1:7
           if(y<t1(j))
             break
           end
         end
    sa=v1(j);sb=v2(j);sc=v3(j);
    end
    % sector II
    if (x>=pi/3) && (x<2*pi/3)
        adv= x-pi/3;
        tb = mag * sin(pi/3-adv);ta = mag * sin(adv);
        t0 =(ts-ta-tb);
        t1=[t0/4 ta/2 tb/2 t0/2 tb/2 ta/2 t0/4];t1=cumsum(t1);
        v1=[0 0 1 1 1 0 0];v2=[0 1 1 1 1 1 0];v3=[0 0 0 1 0 0 0];
        for j=1:7
          if(y<t1(j))
            break
          end
        end
        sa=v1(j);sb=v2(j);sc=v3(j);
    end
    %sector III
    if (x>=2*pi/3) && (x<pi)
        adv=x-2*pi/3;
        ta = mag * sin(pi/3-adv);tb = mag * sin(adv);
        t0 =(ts-ta-tb);
        t1=[t0/4 ta/2 tb/2 t0/2 tb/2 ta/2 t0/4];
        t1=cumsum(t1);
        v1=[0 0 0 1 0 0 0];v2=[0 1 1 1 1 1 0];v3=[0 0 1 1 1 0 0];
        for j=1:7
          if(y<t1(j))
           break
          end
        end
        sa=v1(j);sb=v2(j);sc=v3(j);
    end
    %sector IV
    if (x>=-pi) && (x<-2*pi/3)
        adv = x + pi;
        tb= mag * sin(pi/3 - adv);ta = mag * sin(adv);
        t0 =(ts-ta-tb);
        t1=[t0/4 ta/2 tb/2 t0/2 tb/2 ta/2 t0/4];t1=cumsum(t1);
        v1=[0 0 0 1 0 0 0];v2=[0 0 1 1 1 0 0];v3=[0 1 1 1 1 1 0];
        for j=1:7
          if(y<t1(j))
             break
          end
        end
        sa=v1(j);sb=v2(j);sc=v3(j);
    end
    % sector V
    if (x>=-2*pi/3) && (x<-pi/3)
         adv = x+2*pi/3;
         ta = mag * sin(pi/3-adv);tb = mag * sin(adv);
         t0 =(ts-ta-tb);
         t1=[t0/4 ta/2 tb/2 t0/2 tb/2 ta/2 t0/4];t1=cumsum(t1);
         v1=[0 0 1 1 1 0 0];v2=[0 0 0 1 0 0 0];v3=[0 1 1 1 1 1 0];
         for j=1:7
           if(y<t1(j))
              break
           end
         end
         sa=v1(j);sb=v2(j);sc=v3(j);
    end
    %Sector VI
    if (x>=-pi/3) && (x<0)
         adv = x+pi/3;
         tb = mag * sin(pi/3-adv);ta = mag * sin(adv);
         t0 =(ts-ta-tb);
         t1=[t0/4 ta/2 tb/2 t0/2 tb/2 ta/2 t0/44];
         t1=cumsum(t1);
         v1=[0 1 1 1 1 1 0];v2=[0 0 0 1 0 0 0];v3=[0 0 1 1 1 0 0];
         for j=1:7
            if(y<t1(j))
              break
            end
         end
         sa=v1(j);sb=v2(j);sc=v3(j);
    end
    sf=[sa, sb, sc];
    Le code prends 3 variables d'entrée et il renvoie 3 variables en sortie.

    Merci d'avance

  4. #4
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Quel est le problème avec Embedded MATLAB Function?
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2009
    Messages : 29
    Points : 22
    Points
    22
    Par défaut
    Citation Envoyé par duf42 Voir le message
    Quel est le problème avec Embedded MATLAB Function?
    Merci pour ta réponse,

    Le message d'erreur est le suivant:

    Variable 'sa' is undefined on some execution paths.
    
    Function 'Embedded MATLAB Function' (#30.2348.2350), line 96, column 5:
    "sa"

  6. #6
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Essaye de définir ta variable 'sa' en dehors des IF, en mettant par exemple au début de ta fonction:
    P.S. Cela doit aussi être vrai pour sb et sc entre autres
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

Discussions similaires

  1. intégrer un fichier image dans une base de donnée?
    Par Lody dans le forum Requêtes
    Réponses: 9
    Dernier message: 16/03/2006, 19h08
  2. Insertion d'un fichier texte dans une moulinette PL/SQL
    Par Douanier007 dans le forum PL/SQL
    Réponses: 3
    Dernier message: 24/01/2005, 16h08
  3. Réponses: 3
    Dernier message: 13/12/2004, 13h54
  4. Enregistremenbt d'un fichier WORD dans une base de données
    Par yam49 dans le forum Bases de données
    Réponses: 4
    Dernier message: 02/08/2004, 15h01
  5. [Struts][Oracle]Upload fichier word dans une base
    Par Maximil ian dans le forum Struts 1
    Réponses: 7
    Dernier message: 10/02/2004, 15h52

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