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 :

Fonctionnement de simulink et le waitbar


Sujet :

Simulink

  1. #1
    Membre du Club
    Femme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Mai 2016
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2016
    Messages : 43
    Points : 43
    Points
    43
    Par défaut Fonctionnement de simulink et le waitbar
    Bonjour,

    J'ai essayé de simuler le modèle simulink :

    https://www.mathworks.com/matlabcent...mulink-waitbar

    Je reçois l'erreur suivante:

    Nom : waitbar_model.PNG
Affichages : 484
Taille : 12,7 Ko


    Nom : error_waitbar.PNG
Affichages : 439
Taille : 132,3 Ko


    Comment faire pour faire fonctionner le simulink-waitbar?

  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

    il suffit de rajouter la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    coder.extrinsic('waitbar')
    ceci afin qu'il utilise la fonction waitbar sans essayer de la compiler

    Fabien

  3. #3
    Membre du Club
    Femme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Mai 2016
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2016
    Messages : 43
    Points : 43
    Points
    43
    Par défaut
    Merci Fabien,

    coder.extrinsic déclare la fonction extrinsèque. Ça permet de tourner le modèle sans compiler la fonction 'waitbar'.

    Je veux exploiter le waitbar et voir ce que ça donne comme résultat. Mais quand je lance le modèle Simulink ou bien même le fichier .m je reçois cette erreur. Je comprend pas pourquoi?

  4. #4
    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
    l'erreur que tu as recopié viens de là et se corrige avec la ligne que je t'ai donner
    chez moi ca marche très bien !
    ci dessous le code de ma fonction :
    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
    function stop = fcn(t, tfin, NbSimu, iSimu, flagInhib)
    % fonction de gestion d'une waitbar sous simulink
    % version compatible avec les handles objets (>2014b)
    % egalement compatible avec la linéarisation du modèle
    %
    % création FGP le 06/03/2015
     
    %#codegen
    coder.extrinsic('waitbar','close','sprintf','ishandle')
     
    % flag arrêt de la simulation sur fermeture waitbar
    stop = 0;
     
    % je sais pas pourquoi il faut le rajouter en plus du gain sur le signal
    % trigger, mais sinon on passe par là lors d'une linéarisation et ce même
    % lorsque le flag vaut 1
    if flagInhib
        return
    end
     
    % variable persistente pour le handle de la figure waitbar
    %(double si version <= 2014a, objet si version >= 2014b)
    persistent h
     
    % création de la waitbar au d"marrage de la simulation
    if isempty(h) 
        h = waitbar(0,'Please wait...','Name','Progression de la simulation');
        set(h,'HandleVisibility','On');
        set(h,'Tag','SimulinkWaitBar');
    end
     
    % si la fenetre waitbar a été fermée, on arrête la simulation
    if ~ishandle(h)
        stop = 1;
        return
    end
     
    % progression de la waitbar
    progression = ((iSimu-1)*tfin + t)/(tfin*NbSimu);
    waitbar(progression,h,sprintf('Simulation progress = %.0f%%',100*progression));
     
    % destruction de la waitbar en fin de simulation
    % destruction faite sur callback maintenant
    % if t>=tfin
    %     close(h);
    % end
    et l'implémentation :
    Nom : Capture.PNG
Affichages : 465
Taille : 12,8 Ko

    et si tu es dans une version antérieur à 2014 tu as ceci (que tu as déjà vu, c'est le même lien que le tiens)

    Fabien

    PS : sinon tu as une erreur de code visiblement
    tu mettre ton code ici ?

  5. #5
    Membre du Club
    Femme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Mai 2016
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2016
    Messages : 43
    Points : 43
    Points
    43
    Par défaut
    Merci Fabien pour ta réponse,

    le code que je veux tourner est le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    h = waitbar(0,'Please wait...'); 
     
    End_Time = 1000; 
     
    myoptions = simset('SrcWorkspace','current','DstWorkspace','current','FixedStep', 0.1); 
    sim('model',End_Time,myoptions) 
    coder.extrinsic('waitbar')
    le code que j'ai trouvé dans la fonction Matlab est le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function y = fcn(u1, u2) 
    % This block supports an embeddable subset of the MATLAB language. 
    % See the help menu for details. 
     
    waitbar(u1/u2) 
    y = 1;
    Le modèle:

    Nom : model_waitbar.PNG
Affichages : 426
Taille : 18,5 Ko

    J'ai rien changé par rapport à ce que j'ai trouvé sur le lien :

    https://www.mathworks.com/matlabcent...mulink-waitbar

    et pourtant je reçois l'erreur. Je veux visualiser les résultats avant d'adapter le code à ce que je veux.

  6. #6
    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

    coder.extrinsic doit être utilisé dans la matlab function
    dans ton script principal il n'a aucun effet

    essayes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function y = fcn(u1, u2, h) 
    % This block supports an embeddable subset of the MATLAB language. 
    % See the help menu for details. 
     
    %#codegen
    coder.extrinsic('waitbar');
    waitbar(u1/u2, h) 
    y = 1;
    en déclarant h comme paramètre de ta matlab function
    (le but est que le waitbar appelé par le simulink soit le même que celui déclaré dans ton script principal : du coup on utilise le handle h)

Discussions similaires

  1. Problème de fonctionnement d'un waitbar
    Par Samna dans le forum Simulink
    Réponses: 3
    Dernier message: 25/09/2017, 11h03
  2. Comment fonctionne l'intégration sous simulink?
    Par Nathaniel_etudiant dans le forum Simulink
    Réponses: 0
    Dernier message: 18/11/2010, 11h35
  3. Waitbar & Simulink
    Par tarzan_tlse dans le forum Simulink
    Réponses: 1
    Dernier message: 19/07/2009, 07h29
  4. [Turbo Pascal] TP7 fonctionne en QWERTY
    Par callahan dans le forum Turbo Pascal
    Réponses: 9
    Dernier message: 08/02/2003, 21h49
  5. Fonctionnement de la compression DivX
    Par Rodrigue dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 20/09/2002, 14h10

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