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 lancer un calcul lors de la simulation


Sujet :

Simulink

  1. #1
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 9
    Points : 2
    Points
    2
    Par défaut Comment lancer un calcul lors de la simulation
    Bonjour à tous;
    je suis coicé lors de la simulation ,j'ai besoin de votre aide rapidement
    Je realise une simulation sous simulink le problème est que dans le meme programme je doit lancer la simulation pour créer des variables qui seront ensuite utilisées pour un calcul des matrices dans un autre bloc dans le meme programme.
    merci d'avance

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Points : 726
    Points
    726
    Par défaut
    Je crois que c'est un problème de programmation de ton simulink...

    Quand tu lances ton simulink, tu ne peux pas lancer un autre en parallèle...

    Christophe
    INCIA : MATLAB R2014a sous MAC OS 10.9.3

    Nous piétinerons éternellement aux frontières de l'Inconnu, cherchant à comprendre ce qui restera toujours incompréhensible. Et c'est précisément cela qui fait des nous des hommes. Isaac Asimov

  3. #3
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Je pense j'ai mal expliqué mon problème,pour chaque pas de simulation le premier bloc doit générer des commandes qui sont ensuite réutilisées par un autre bloc pour calculer des matrices.est ce que ceci est faisable
    merci

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Points : 726
    Points
    726
    Par défaut
    Désolé mais j'ai un peu de mal à comprendre...

    Peux tu en dire plus ?
    INCIA : MATLAB R2014a sous MAC OS 10.9.3

    Nous piétinerons éternellement aux frontières de l'Inconnu, cherchant à comprendre ce qui restera toujours incompréhensible. Et c'est précisément cela qui fait des nous des hommes. Isaac Asimov

  5. #5
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par christophe_halgand Voir le message
    Désolé mais j'ai un peu de mal à comprendre...

    Peux tu en dire plus ?
    Dans un programme simulink j'ai plusieurs bloc ,Le premier génère des commandes u1,u2,u3...u6 pour chaque pas de simulation je veux calculer des gains qui utilisent ces commandes.j'ai esseyé avec callbackfunction ou le bolc gain appel une fonction mfile mais ça ne marche pas.
    c'est la première fois que j'utilise cette option "callback".
    j'espère que j'ai bien expliquer le problème.
    Merci

  6. #6
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Qu'appelles-tu "commandes" ? Ce ne serait pas des variables plutôt ?

    Peux-tu :
    - montrer le code qui génère ces u1, u2 ... (enfin au moins 1) en précisant dans quel sorte de bloc il se trouve et dans quel "callback" (là non plus je ne suis pas sure de ce que tu nommes)
    - faire une image du bloc Gain qui montre comment u1 est utilisé dans ce gain
    Règles du Forum

    Adepte de la maïeutique

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Points : 726
    Points
    726
    Par défaut
    Salut,

    Pour info, la variable "u" en robotique correspond à une commande. C'est sûr qu'il faut utiliser le terme "variable" qui est un terme utiliser en programmation.

    Sinon, moi ce que je comprends c'est :

    Tu as un block qui te sort plusieurs variables.
    Ce block est mis dans une boucle.

    A chaque itération, tu veux calculer des gains à partir des variables de sorties de ton block.

    Est-ce des gains que tu veux utiliser dans le block pour la futur itération ?

    Ce qui ressemble beaucoup à l'apprentissage d'un réseau de neurone artificiel par BackPropagation (permet de recalculer les poids ou gains utiliser dans le réseau en fonction de la sortie du réseau et de la sortie désirée)...

    Ou ;

    Est-ce des gains que tu veux calculer à partir de la sortie et qui vont être utiliser plus tard ???

    J'aimerais bien que tu nous décomposes les étapes que tu veux réaliser ?

    Christophe
    INCIA : MATLAB R2014a sous MAC OS 10.9.3

    Nous piétinerons éternellement aux frontières de l'Inconnu, cherchant à comprendre ce qui restera toujours incompréhensible. Et c'est précisément cela qui fait des nous des hommes. Isaac Asimov

  8. #8
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    J'arrive pas donc à bien expliquer mon problème , en automatique les commandes sont des variables générées à chaque pas de simulation pour que notre système suit une référence donnée.
    revenons à mon programme:
    les commandes ou si vous voulez les variables u1,....,u6 sont issues de la comparaison d'un signal triangulaire avec un signal continu c'est à dire la commande par modulation de largeur d'impulsion,ces commandes passent par plusieurs bloc;mais non pas le bloc gain ou j'ai des matrices à calculer par exemple:
    E1=(A+B)*u1*u2 [ou A et B sont des matrices connues], j'arrive pas à faire appeler pour chaque pas de simulationles commande pour calculer ces matrices.

    pour callback ,j'ouvre une boite qui contient les propriétés du bloc gain ,volet callback,on trouve plusieurs choix initfcn,loadfcn,openfcn j'ai essayé que ce bloc gain appel un mfile qui contient le calcul de ces matrices.
    sachant que j'ai pas bien compris cette option.
    merci

  9. #9
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Bonjour à tous!
    Désolé, mais il y a des normes internationales qui ont été acceptées par un vote explicite des associations de normalisation de nos différents pays et y ont par conséquent force de loi. Malheureusement, dans de nombreuses institutions d'enseignement scientifique et technique, la plupart des professeurs ignorent même l'existence de normes, comme d'ailleurs les auteurs de nombreux ouvrages dits professionnels. Pour le sujet qui nous concerne, ce sont les normes
    CEI 60050-351
    VOCABULAIRE ELECTROTECHNIQUE INTERNATIONAL
    Partie 351: Commande et régulation automatiques
    et
    CEI 60027-6
    SYMBOLES LITTÉRAUX À UTILISER EN ÉLECTROTECHNIQUE
    Partie 6: Technologie de commande et de régulation
    On trouve en particulier:
    351-21-29
    commande, régulation
    action délibérée sur (ou dans) un processus, en vue d'atteindre des objectifs définis
    En revanche, le terme commande n'est ni défini, ni utilisé nulle part pour définir des grandeurs. Caro-Line a donc parfaitement raison: ce sont des variables et non des commandes.
    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  10. #10
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Bon et sinon je persiste et signe

    Citation Envoyé par Caro-Line Voir le message
    Peux-tu :
    - montrer le code qui génère ces u1, u2 ... (enfin au moins 1) en précisant dans quel sorte de bloc il se trouve et dans quel "callback" (là non plus je ne suis pas sure de ce que tu nommes)
    - faire une image du bloc Gain qui montre comment u1 est utilisé dans ce gain
    Et je rajoute : quelle *fcn utilises-tu justement ?
    A priori (pour le peu, très peu que je crois comprendre) la plus adéquate serait initfcn (elle se lance à l'initialisation du modèle Simulink).
    Règles du Forum

    Adepte de la maïeutique

  11. #11
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Tout d'abord je vous remercie pour vos réponses.
    comme j'ai déja dit c'est la première fois que j'utilise callback ,j'ai essayé loadfcn et openfcn et initfcn,mon but est que chaque fois la simulation arrive à ce bloc gain elle appele ma fonction qui contient le calcul des matrices.(j'ai l'impression que initfcn se lance au début de la simulation et non pas à chaque pas ,est ce que ça c'est vrai).
    pour le code comment faire pour inserer une image du programme dans la citation.

  12. #12
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Il n'y a pas de callback functions existant à ma connaissance pour faire ce que tu souhaites (exécution à chaque pas de simulation).
    Il va falloir que tu trouves une autre solution.
    Peut-être avec un bloc MATLAB function placé avant ton Gain ?

    Pour insérer une image le plus simple c'est de joindre un fichier (lorsque tu cliques sur le bouton pièces jointes - le trombone - il te donne les formats supportés)
    Règles du Forum

    Adepte de la maïeutique

  13. #13
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    C'est exactement ce que je veux ,appeler à chaque pas de simulation la fonction qui calcul ces matrices donc je doit changer de vue ,je vais essayer avec le bloc matlab function , mais est ce que vous pouvez me dire plus sur ce bloc .
    sa sorite sera t-il reliée directement au bloc gain?

    Ci joint des explications et l'image de mon programme.
    Fichiers attachés Fichiers attachés

  14. #14
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    J'avoue ne pas être une pro de Simulink, je connais juste quelques trucs (de mémoire en plus car je n'ai pas Simulink d'installé).

    Il me semble en effet qu'il faudrait mettre le bloc MATLAB Fcn avant tes gains.

    Par contre dans ton schéma je ne comprends pas très bien comment tes variables u1, ... u6 interviennent dans tes blocs Gain.
    Peux-tu préciser un peu ?

    Pour les variables globales c'est à éviter, ce serait mieux de mettre tes variables en entrée du bloc MATLAB Fcn (qui a de toute façon besoin d'une entrée) (tu peux si tu souhaites ne pas avoir trop de fils repasser par un bloc From Wrokspace ou, vu que tu enregistres aussi tes variables dans un fichier MAT par un bloc From MAT-File).

    Et ce bloc sera bien évalué à chaque pas de simulation comme n'importe quel bloc.
    Règles du Forum

    Adepte de la maïeutique

  15. #15
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    j'ai essayé avec matlab function et ça l'aire de fonctionner mais j'ai toujours des problèmes,j'ai utilisé 8 matlab function ou chaque fonction fournie un gain ,et j'ai déclaré les variables u1...u6 comme globales dans tous les matlab function sinon un message qui s'affiche undefined u1 ou autre variable. la sortie de chaque matlab function doit etre un vecteur 2*1(2 lignes et 1 collone) mais ce n'est pas le cas ,la sortie est une matrice 2*2 et ce qui cré le problème.
    je pense que le problème et dans la déclaration des variables u1...u6 comme globales dans chaque matlab function .
    j'ai vérifié le calcul des gais et c'est juste
    qu'est ce que vous en pensé?

  16. #16
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Si tu les mets en entrée de ta MATLAB Fcn elles ne s'appeleront pas u1, ...u6 dans la fonction mais u (c'est le paramètre d'entrée de la MATLAB Fcn).

    Peux-tu montrer le code que tu as mis dans la MATLAB Fcn ?
    Règles du Forum

    Adepte de la maïeutique

  17. #17
    Candidat au Club
    Inscrit en
    Février 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 9
    Points : 2
    Points
    2
    Par défaut
    Pour les variables u1..u6 je les envoie au workspace pour ensuite les récupérer pour chaque pas de simulation dans matlab function ,je ne peux pas les mettre en entrée de matlab function ,
    puisque j'ai besoin d'un signal à l'entrée de matlab function qui sera ensuite multiplier par la matrice gain calculée dans cette matlab function voici le code de cette fonction ,sachant que j'ai 8 matlab function qui se ressemble.je voie pas quelle est le problème d'augmentation de dimension à la sortie de matlab 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
     function y=succ(ic1)
    %gains
    k1=400;
    k2=0;
    C1=40e-6;
    C2=40e-6;
    C=0.00004;
    L=0.001;
    R=131;
    global u1;
    global u3;
    %bras 1
    N1=[-k1 0;-k2+1/C 0];
    N2=[-k1 0;-k2+1/C 0];
    E1=[-1 0]';
    E2=[-1 0]';
    %calcul des matrices 
    G1=[0 0;0 1]*[u1*u3/L 0]';
    y=G1*ic1;
    end

Discussions similaires

  1. Comment lancer une macro automatique lors d'ouverture de fichier EXcel
    Par yassinefeki dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 16/05/2010, 23h48
  2. Réponses: 20
    Dernier message: 03/04/2007, 16h45
  3. [VBA-E]Comment lancer une procedure lors d'un changement de variable ?
    Par RogerLapin dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 29/03/2007, 09h56
  4. Réponses: 2
    Dernier message: 31/08/2006, 12h33
  5. Réponses: 4
    Dernier message: 13/07/2006, 19h13

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