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 :

Comment récuperer les variables


Sujet :

Simulink

  1. #1
    Membre du Club
    Homme Profil pro
    ingenieur systemes industriels
    Inscrit en
    Août 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingenieur systemes industriels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 53
    Points : 43
    Points
    43
    Par défaut Comment récuperer les variables
    Bonjour,

    J'ai un modèle sur Simulink avec plusieurs variables d'entrées , et de sortie.
    J'ai créé une interface graphique pour changer les variables d'entrées et visualiser les variables de sortie avec des boutons poussoirs : plot_'X'
    d'après l'exemple donné par Mathworks j'ai compris comment changer les variables d'entrées dans le modèle Simulink, par contre j'aimerais savoir comment je peux récupérer des informations sur les variables des sorties et/ou surtout quelques 'signaux' dans Simulink..(faire des plot de ces signaux)
    Je sais que c'est avec la fonction 'get' mais après je n'ai aucune idée sur les paramètres qu'il faut y mettre.
    merci pour votre aide

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 56
    Points : 38
    Points
    38
    Par défaut
    Je suis pas sur d'avoir compris ta demande. Souhaite-tu seulement récupérer la valeur de certains signaux ? (Par exemple, une vitesse etc).

    Si oui, tu peux ajouter un bloc "To workspace" (que tu relis au signal à enregistrer". Il faut aller dans les propriétés du bloc et le mettre en "Array". Cela te permettra de placer les valeurs du signal dans un vecteur, qui lui sera directement placé dans le workspace. Remarque : le nom que tu donnera au bloc sera le nom de la variable enregistrée dans le workspace.

    Tu peux alors ensuite utiliser la nouvelle variable de manière classique pour faire des "plot" ou toute autre exploitation.


  3. #3
    Membre du Club
    Homme Profil pro
    ingenieur systemes industriels
    Inscrit en
    Août 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingenieur systemes industriels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 53
    Points : 43
    Points
    43
    Par défaut
    Merci pour ton aide
    J'avais déjà fait cela, mais ma question concerne l'interface graphique ..
    Autrement dit, une fois que j'ai envoyé mon signal 'to Workspace' , qu'est ce que je dois écrire comme code dans le .m de l'interface et plus précisément le Callback de ma fonction plot_couple par exemple.
    MERCI

    Un peu plus de détails :
    Je veux que lorsque je clique sur plot_couple une nouvelle fenêtre apparaisse contenant le 'plot' ou le graphe de mon couple en fonction du temps, pareil que le plot sur Simulink..

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 56
    Points : 38
    Points
    38
    Par défaut
    Je ne suis pas sur d'une chose.

    Veux-tu :

    - Exécuter le simulink, enregistrer les résultats. Puis dans un second temps (et donc sans avoir à relancer le simulink) utiliser l'interface pour exploiter les résultats.

    - Exécuter le simulink et exploiter les résultats en parallèle ? (En gros sans fermer Matlab et garde le workspace)

  5. #5
    Membre du Club
    Homme Profil pro
    ingenieur systemes industriels
    Inscrit en
    Août 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingenieur systemes industriels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 53
    Points : 43
    Points
    43
    Par défaut
    ci joint une image de l'interface..
    En fait quand je clic sur simuler, normalement les resultats doivent s'enregistrer dans la List Box , et une fois que c'est fait je pourrai exploiter(tracer) les resultats en choissisant n'importe quelle sortie (couple , vitesse , puissance)..
    Malheureusement ca ne marche pas.. la programmation de la ListBox me semble tres compliquée..
    La liste box n'est pas ma priorité.Donc je veux que apres avoir simuler (excecuter le simulink ) , en cliquant sur les bouttons plot, avoir le graphe de chancun de ces signaux.
    Images attachées Images attachées  

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Et si tu nous montrais ton code, afin que l'on puisse corriger tes éventuelles erreurs?
    As-tu regardé la documentation de la fonction plot?

  7. #7
    Membre du Club
    Homme Profil pro
    ingenieur systemes industriels
    Inscrit en
    Août 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingenieur systemes industriels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 53
    Points : 43
    Points
    43
    Par défaut
    Bonjour,
    j'ai essayé de faire une interface qui ressemble a celle de f14 donnée par Mathworks comme exemple..
    Déjà je bloque sur une erreur dans le Callback du bouton simuler et j'arrive pas à la résoudre.
    Pour le moment je réfléchis a cette erreur et j'ai rien écrit dans le Callback des fonctions plot.
    je vous donne mon code et les messages d'erreurs :

    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
    function simuler_Callback(hObject, eventdata, handles)
    
     [timeVector,stateVector,outputVector] = sim('modele_velo');
     
      % Retrieve old results data structure
      if isfield(handles,'ResultsData') && ~isempty(handles.ResultsData)
        ResultsData = handles.ResultsData;
        % Determine the maximum run number currently used.
        maxNum = ResultsData(length(ResultsData)).RunNumber;
        ResultNum = maxNum+1;
      else % Set up the results data structure
        ResultsData = struct('RunName',[],'RunNumber',[],...
                             'vitValue',[],'niveauValue',[],'penteValue',[],'timeVector',[],'outputVector',[]);
        ResultNum = 1;
      end
      
      if isequal(ResultNum,1),
        %--Enable the Plot and Remove buttons
     
    set(handles.suppr,handles.PlotPd, handles.PlotCcyc, handles.PlotWcyc,              handles.PlotPcyc, handles.PlotCm, handles.PlotWm, handles.PlotPm, handles.PlotUb, handles.PlotIb],'Enable','on')
      end
      
      
      speed = get(handles.vit,'Value');
      level = get(handles.niveau,'Value');
      slope = get(handles.pente,'Value');
      
      ResultsData(ResultNum).RunName = ['Run',num2str(ResultNum)];
      ResultsData(ResultNum).RunNumber = ResultNum;
      ResultsData(ResultNum).vitValue = speed;
      ResultsData(ResultNum).niveauValue = level;
      ResultsData(ResultNum).penteValue = slope;
      ResultsData(ResultNum).timeVector = timeVector;
      ResultsData(ResultNum).outputVector = outputVector;
      
      % Build the new results list string for the listbox
      ResultsStr = get(handles.ResultsList,'String');
      if isequal(ResultNum,1)
        ResultsStr = {['Run1          ',num2str(speed),'   ',num2str(level),'    ',num2str(slope)]};
      else
        ResultsStr = [ResultsStr; {['Run',num2str(ResultNum),'          ',num2str(speed),'   ',num2str(level)]}];
      end
      set(handles.ResultsList,'String',ResultsStr);
      
      % Store the new ResultsData
      handles.ResultsData = ResultsData;
      guidata(hObject,handles)
      
    %endfunction SimulateButton_Callback
    Voici les messages d'erreurs:

    In interfaceVelo>simuler_Callback at 657
      In gui_mainfcn at 96
      In interfaceVelo at 42
      In @(hObject,eventdata)interfaceVelo('simuler_Callback',hObject,eventdata,guidata(hObject))
    ??? Reference to non-existent field 'PlotPd'.
    
    Error in ==> interfaceVelo>simuler_Callback at 674
       set([handles.suppr,handles.PlotPd,...
    
    Error in ==> gui_mainfcn at 96
            feval(varargin{:});
    
    Error in ==> interfaceVelo at 42
        gui_mainfcn(gui_State, varargin{:});
    
    Error in ==> @(hObject,eventdata)interfaceVelo('simuler_Callback',hObject,eventdata,guidata(hObject))
    
     
    ??? Error while evaluating uicontrol Callback
    C'est trop compliqué à comprendre , à lire! mais j’apprécie votre aide

    Pour le passage en rouge, j'essaye de rendre les boutons plot visibles 'Enable'.
    et ça me renvoi comme message d'erreur : Reference to non-existent field 'PlotPd'.
    malgré que ces Tags existent bien!!

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par rayba89 Voir le message
    Pour le passage en rouge, j'essaye de rendre les boutons plot visibles 'Enable'.
    et ça me renvoi comme message d'erreur : Reference to non-existent field 'PlotPd'.
    malgré que ces Tags existent bien!!
    Attention, petite précision, 'Enable', outre son apparence, n'affecte en rien sa visibilité (propriété 'Visible'), mais le fait que tu puisses ou non appuyer dessus, et ainsi déclencher ou non l'exécution de son Callback.

    Pour ton erreur, les lignes à retenir en particulier sont
    ??? Reference to non-existent field 'PlotPd'.
    
    Error in ==> interfaceVelo>simuler_Callback at 674
       set([handles.suppr,handles.PlotPd,...
    Qui comme tu le dis, concerne le champ PlotPd de la structure handles dans la fonction simuler_Callback, et qui ne semble pas être présent...
    As-tu vérifié l'orthographe et la case? Est-il bien présent dans ton .fig (sur GUIDE) ?

  9. #9
    Membre du Club
    Homme Profil pro
    ingenieur systemes industriels
    Inscrit en
    Août 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingenieur systemes industriels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 53
    Points : 43
    Points
    43
    Par défaut
    Bonjour Jerome,
    j'ai verfié plusieurs fois, Les tags 'plotPd' et tt les autres sont les memes sur GUIDE, en plus je vois leurs Callbacks dans le .m de l'interface.
    c'est juste qu'au depart ils sont 'disable' et ce ligne de code consiste a les rendre 'enable' une fois que j'ai lancer la simulation(appuyer sur le boutton simulate).
    le probleme c'est qu'il les identifie pas : non existent field!! et je comprend pas pourquoi!

  10. #10
    Membre du Club
    Homme Profil pro
    ingenieur systemes industriels
    Inscrit en
    Août 2011
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingenieur systemes industriels
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2011
    Messages : 53
    Points : 43
    Points
    43
    Par défaut
    AA en fait j'avais tort!!
    c'etait tout a fait ca, l'orthographe!! dans mon .fig la premiere lettre n'etait pas en majuscule.
    Des errreurs betes d'inattention!
    Merci bcp Jerome , il me reste le probleme des plot pour en finir

Discussions similaires

  1. Comment récuperer les champs d'un formulaire?
    Par steeves5 dans le forum Langage
    Réponses: 5
    Dernier message: 08/02/2006, 10h54
  2. Comment modifier les variables d'environnement ?
    Par Jean-Jacques Engels dans le forum Langage
    Réponses: 3
    Dernier message: 26/12/2005, 22h42
  3. [VB]Comment utiliser les variables Windows?
    Par Furius dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 13/10/2005, 21h20
  4. [JTable] Comment récuperer les données d'un fichier texte ?
    Par Makunouchi dans le forum Composants
    Réponses: 2
    Dernier message: 03/05/2005, 16h37
  5. Réponses: 2
    Dernier message: 14/09/2004, 18h00

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