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 :

Remplacer les blocks avec conservations des paramètres


Sujet :

Simulink

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2013
    Messages : 32
    Points : 32
    Points
    32
    Par défaut Remplacer les blocks avec conservations des paramètres
    Bonjour tout le monde,

    Avant toute chose, je voudrais rappeler que je travail sur une librairie xilinx, sur un modèle qui se nomme "test_replace.mdl".

    Ce modèle dispose de blocks type 'Gain' (Simulink).
    Je voudrais remplacer tout les 'Gain' (Simulink) par ceux de la librairie xilinx dont le nom est 'CMult'.
    Pour ce faire je lance :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    replace_block('test_replace', 'Gain', 'xbsIndex_r4/CMult');
    Tout fonctionne parfaitement, aucun problème de ce côte là.

    Maintenant, je voudrais remplacer les blocks Gain (Simulink) par des CMult (Xilinx) tout en conservant la valeur du paramètre Gain.

    Je ne vois pas trop comment faire puisqu'il me manque de la pratique mais voici mon idée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Je fait une boucle qui scrutera un à un les blocks 'Gain'
    A chaque fois que je rencontre un block, je récupère la valeur de son gain en faisant :
    ParamGain = get_param(gcb,'Gain');
    Je lance le remplacement de ce block uniquement.
    J'insère le Gain de l'ancien block via :
    set_param(gcb,'const',ParamGain)
    et je tourne dans la boucle tant qu'il reste des block non remplacés.
    Maintenant ce qu'il me manque c'est :
    Comment tourner dans la boucle autant de fois qu'il y a de block 'Gain' ?
    Comment faire en sorte que le gcb se déplace et se focalise sur le block en cours de remplacement (pour permettre la lecture du paramètre) ?
    Comment faire en sorte qu'une fois le block remplacé, que le gcb soit focalisé sur le nouveau block (pour permettre l'écriture du paramètre) ?

    Je sais qu'il me manque beaucoup d'éléments, et je ne compte pas faire cette fonction de remplacement en deux minutes, cependant, si vous avez une idée, même sur un seul des points, je suis preneur

    Merci par avance

    yamin

    PS : j'ai regardé avec l'aide en ligne qui propose la syntaxe suivante, mais ce n'est pas vraiment ce que je cherche à faire :
    replace_block('clutch/Unlocked','Gain','bv','Integrator')
    This command replaces all blocks in the Unlocked subsystem in the clutch system having a Gain of 'bv' with the Integrator block.

  2. #2
    FLB
    FLB est déconnecté
    Modérateur
    Avatar de FLB
    Homme Profil pro
    Ing. Aérospatiale
    Inscrit en
    Juin 2003
    Messages
    770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Ing. Aérospatiale
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2003
    Messages : 770
    Points : 1 185
    Points
    1 185
    Par défaut
    Salut,
    Comment tourner dans la boucle autant de fois qu'il y a de block 'Gain' ?
    Pour ca je te conseille un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find_system('test_replace', 'BlockType', 'Gain')
    Tu connaitras ainsi le nombre de blocs gains et leurs noms.
    Comment faire en sorte que le gcb se déplace et se focalise sur le block en cours de remplacement (pour permettre la lecture du paramètre) ?
    Comment faire en sorte qu'une fois le block remplacé, que le gcb soit focalisé sur le nouveau block (pour permettre l'écriture du paramètre) ?
    Avec les liens vers chaque bloc (à la place du gcb) tu devrais sans trop de problème pouvoir faire un get_param pour récupérer le gain. J'ai pas testé, mais je pense qu'un replace_block ciblé grâce au lien te permettra de ne remplacer qu'un gain, et enfin comme tu l'as marqué le set_param permettra d'insérer la valeur du gain dans le nouveau bloc.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2013
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mars 2013
    Messages : 32
    Points : 32
    Points
    32
    Par défaut
    Bonjour,
    Merci beaucoup, tu m'as énormément aidé

    Cependant, je n'arrive pas, du coup, à remplacer un seul block spécifique

    J'ai essayé ceci (juste remplacer un block en particulier, je ne m'occupe pas encore des paramètres) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >> find_system('test_replace', 'BlockType', 'Gain')
    ans = 
        'test_replace/Gain'
        'test_replace/Gain1'
        'test_replace/Subsystem/Gain2'
    >> replace_block('test_replace/Gain', 'xbsIndex_r4/CMult')
    ??? Error using ==> replace_block at 43
    Not enough input arguments.
    Sinon j'ai aussi fait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    replace_block('test_replace', 'test_replace/Gain', 'xbsIndex_r4/CMult')
    Je n'ai pas d'erreur, mais le block n'est pas modifié

    Je cherche sur la toile, mais rien de bien concret en attendant.

    EDIT : désolé je viens de trouver : le deuxième paramètre doit être le type du block :
    replace_block('test_replace/Gain', 'Gain', 'xbsIndex_r4/CMult')

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/09/2007, 13h54
  2. Log Hibernate avec affichage des paramètres
    Par romaintaz dans le forum Hibernate
    Réponses: 1
    Dernier message: 17/08/2007, 12h17
  3. Problème avec passer des paramètres
    Par Mac2k3 dans le forum WebDev
    Réponses: 6
    Dernier message: 29/05/2007, 14h08
  4. Remplacer les retour chariot par des <br/>
    Par novices dans le forum Langage
    Réponses: 1
    Dernier message: 21/08/2006, 21h11

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