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 :

[RTW] Charger des paramètres sans recompiler (m-file)


Sujet :

Simulink

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 7
    Points : 2
    Points
    2
    Par défaut [RTW] Charger des paramètres sans recompiler (m-file)
    Bonjour à tous,

    J'arrive sans soucis à exporter un projet Sk en tant que .dll et à l'utiliser avec visual notamment.
    J'utilise pour celà les informations de ce tuto : http://www.vok.lth.se/~ce/Links/pdf/simulink_dll.pdf
    (modif de grt_main pour avoir des points d'entrée sur la dll).

    Ma question :
    Maintenant, y aurait-il un moyen de configurer la compil RTW pour pouvoir charger des m-files depuis la dll (et donc sans faire de recompilation).
    Actuellement après la compil avec RTW, les valeurs de mon m-file se retrouvent en dur dans les .h/.c. Je souhaiterai pouvoir effectuer un chargement de paramètres (m-file) depuis la .dll.


    Merci de votre aide

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Je reformule (certainement pas clair)

    J'ai un modèle Sk avec des paramètres (variables chargée depuis un .m).
    J'exporte ce projet en .dll et l'uilise dans un projet visual c++. J'aimerai pouvoir changer la valeur des paramètres (charger dynamiquement un m-file) sans avoir à reconstruire la dll et à recompiler avec RTW.

    L'idée, je pense, est de configurer RTW pour avoir un chargement de m-file plutot qu'une écriture en dur dans les .c/.h telle que RTW le fait de base.

    Une solution?

    Bonne journée

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Mathworks me parle de mettre mes paramètres en "tunable" et de les sauver dans un .mat.

    Personne n'a ne serait-ce qu'un avis sur la question...?


    Help!

    ^^

  4. #4
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Bonjour,

    Si j'ai bien compris ton problème, une solution consiste à modifié à la main les valeurs de la RTPstruct, c'est pas facile mais quand ca fonctionne ca marche plutôt bien...

    Bon courage,
    Duf
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Bonjour (merci de ta réponse).

    Qu'est-ce que la RTP Struct? Les données formatées dans un .mat?

    Il existe une solution qui fonctionnerait avec un modèle compilé en .exe :
    - Compiler le modèle et enregistrer les paramètres dans un param.mat
    - Modifier le .mat avec les fonctions matOpen, matWrite, de la libmat
    - Lancer une commande system : modele.exe -p param.mat

    Il semblerai que cet appel system permette (avec l'option "-p") de charger le .mat dans le contexte d'exec du .exe

    Mais comment faire avec une bibliothèque .dll??

  6. #6
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Bonsoir,

    Je connais pas toutes les méthodes pour passer des paramètres à un modèle compilé, je ne connais pas celle dont tu parles mais pour expliquer plus clairement celle que j'utilise au boulot (elle n'est pas de moi, je ne fais que copier...):

    - A partir de ton modèle, tu peux récupérer la structure RTP avec la commande rsimgetrtp. Cette structure contient les valeurs des paramètres de ton modèle rangé dans ces champs:

    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [rtpstruct.parameters(1).values(idx) = 2;
    - Ensuite, il s'agit de créer un fichier m associant les champs de la structure RTW aux différents paramètres sous forme "littérale"

    Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [rtpstruct.parameters(1).values(idx) = mon_parametre;
    - Une fois que ceci est fais, le travail est quasiment fini puisqu'il te s'agit simplement de créer une fonction MatLab dans laquelle tu charges ta structure RTP (où les différents paramètres vont donc prendre les valeurs que tu viens de leur assigner), de sauvegarder cette structure dans un MAT et de lancer ton modèle compilé à l'aide de la commande:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system('nom_du_modele -p nom_du_fichier_contenant_la_structure_rtp.mat')
    Voilà à peu près tout ce que je sais sur le sujet, je sais pas si c'est la méthode la plus simple mais c'est la seule que j'ai pu tester... Celà dit, il semblerait que Mathworks est développé un outil te permettant de paramètré les modèles compilés mais je n'ai jamais eu l'occasion de tester...

    Bon courage,
    Duf
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Ok, la méthode que tu me décrits est celle que j'ai résumé juste au dessus.

    Ca fonctionne en effet très bien avec un modèle généré en .exe.

    Maintenant il y a cette fameuse commande propore à matlab : 'nom_du_modele -p nom_du_fichier_contenant_la_structure_rtp.mat'

    Cette commande qui ne peut être appelée avec une dll.

    Que fait cette commande exactement? (option -p)

Discussions similaires

  1. [Dojo] Grid : Charger des données sans passer par un fichier
    Par Johor dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 28/12/2009, 19h34
  2. [XL-2003] Lire des info. sans charger son fichier xls
    Par JOHN14 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/09/2009, 14h07
  3. Charger des polices de caractères (ttf) sans les installer
    Par Arkham46 dans le forum Contribuez
    Réponses: 0
    Dernier message: 08/01/2009, 10h49
  4. vb6 + charger des infos ds des pages sans les afficher
    Par mqsi dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 14/11/2006, 09h06
  5. Charger des paramètres à partir de beans
    Par lalakers dans le forum ANT
    Réponses: 1
    Dernier message: 19/05/2004, 18h25

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