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 :

Interface Matlab et Simulink [Débutant]


Sujet :

Simulink

  1. #1
    Membre averti
    Homme Profil pro
    Ecole d'ingénieur formation Maîtrise des Energies
    Inscrit en
    Juillet 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ecole d'ingénieur formation Maîtrise des Energies

    Informations forums :
    Inscription : Juillet 2018
    Messages : 28
    Par défaut Interface Matlab et Simulink
    Bonjour,

    J'espère que vous pourrait m'éclairer sur mon problème suivant.

    J'ai créé une interface GUI MATLAB dans laquelle je viens rentrer des valeurs pour des variables via le "bloc" Edit Text :

    Nom : Capture.PNG
Affichages : 349
Taille : 4,0 Ko

    (Le label de chaque Edit text correspond au nom de la variable)

    Une fois que l'on a rempli les valeurs et que l'on a appuyé sur le bouton je souhaite que les blocs de mon modèle simulink prennent ces valeurs.

    Pour les blocs de gain je n'ai pas de problèmes, je fais comme ceci :

    Nom : Capture1.PNG
Affichages : 386
Taille : 11,8 Ko

    Cela fonctionne bien, les valeurs de mon bloc simulink Gain et Gain2 changent.

    Par contre je ne sais pas comment changer les valeurs des fonctions de transfert de la forme 1/(a.s + b) (dernière ligne de l'image ci-dessus)..

    J’espère que vous pouvez m'aider,

    Merci

  2. #2
    Membre averti
    Homme Profil pro
    Ecole d'ingénieur formation Maîtrise des Energies
    Inscrit en
    Juillet 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ecole d'ingénieur formation Maîtrise des Energies

    Informations forums :
    Inscription : Juillet 2018
    Messages : 28
    Par défaut
    Rebonjour !

    Après plusieurs heures de recherche j'ai trouvé un moyen de contourner le problème, c'est pas très élégant mais ça fonctionne.

    J'utilise les lignes de codes suivantes :

    --> Pour un gain (K):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    K=str2double(get(handles.K,'String')); %On vient chercher la valeur de la zone 'Edit Text' de l'interface et on l'attribue à la variable K%
    set_param('MCC/Gain','Gain',num2str(K)); %On vient donner la variable K au bloc Gain du modèle Simulink%
    --> Pour une fonction de transfert de type 1/(as+b) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    a=str2double(get(handles.a,'String')); %On vient chercher la valeur de la zone 'Edit Text' de l'interface et on l'attribue à la variable a%
    b=str2double(get(handles.b,'String')); %On vient chercher la valeur de la zone 'Edit Text' de l'interface et on l'attribue à la variable b%
    eval(['set_param(' '''MCC/Transfer Fcn''' ',' '''Denominator''' ',' '''[' num2str(a) ' ' num2str(b) ']''' ')']); %On passe par une chaîne de caractères pour attribuer les valeurs de a et b au modèle Simulink%

    Bonne journée !

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 885
    Par défaut
    salut

    comme ça par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set_param('MCC/Transfert Fcn','denominator', sprintf('[%f %f]', L, R))

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Pour ma part, je ne comprends pas pourquoi tu fais les conversions chaines de caractères => nombre => chaine de caractères

    Pour quoi ne pas simplement faire ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    K = get(handles.K, 'String');
    set_param('MCC/Gain', 'Gain', K);
    Et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    a = get(handles.a, 'String'); 
    b = get(handles.b, 'String'); 
    set_param('MCC/Transfer Fcn', 'Denominator', sprintf('[%s %s]', a, b));

  5. #5
    Membre averti
    Homme Profil pro
    Ecole d'ingénieur formation Maîtrise des Energies
    Inscrit en
    Juillet 2018
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ecole d'ingénieur formation Maîtrise des Energies

    Informations forums :
    Inscription : Juillet 2018
    Messages : 28
    Par défaut
    Effectivement cela est beaucoup plus compréhensible.

    Etant donné que je suis alternant je débute en MatLab/Simulink et j'essaye d'apprendre comme je peux, je m’appuie donc sur le travail d'un ancien alternant que j'essaye de comprendre point par point.

    Je ne sais pas pourquoi il avait fait ça mais merci beaucoup pour ta réponse !

    Bonne fin de journée !

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 885
    Par défaut
    d’ailleurs pour ma part je ne comprend pas pourquoi aller modifier les paramètres d'une fonction de transfert "en dur" dans le simulateur
    pourquoi ne pas mettre des variables directement

    tu converti les string en nombre comme tu avais commencer à le faire et tu assigne la valeur dans une variable du workspace de base en utilisant la fonction assignin
    ou tu créer des variables "localement" et tu utilises le paramètre 'SrcWorkspace ' de la fonction sim

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Interaction Matlab et Simulink
    Par guitouflex dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 11/04/2008, 23h12
  2. modifier une image dans un axe d'une interface Matlab
    Par sacoux dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 26/03/2008, 17h12
  3. Interfacer Matlab et une base de données
    Par Gui13 dans le forum MATLAB
    Réponses: 4
    Dernier message: 05/07/2007, 15h10
  4. [Compiler] Rendre une interface MATLAB executable
    Par RO_student dans le forum MATLAB
    Réponses: 18
    Dernier message: 12/04/2007, 15h58

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