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 :

Paramètres d'une DLL générée a partir d'un modèle Simulink


Sujet :

Simulink

  1. #1
    Membre régulier
    Homme Profil pro
    dev
    Inscrit en
    Avril 2011
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : dev
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 174
    Points : 110
    Points
    110
    Par défaut Paramètres d'une DLL générée a partir d'un modèle Simulink
    Bonjour,

    J'ai généré une librairie dll a partir d'un modèle simulink (Matlab2013a), j'ai accès aux entrées, sorties, et aux paramètres.
    Dans le modèle simulink j'ai des fils nommés (loging data) exemple en pièce jointe. Comment je peux récupérer leur valeurs s'il n'est pas connecté à une sortie, sur mon script qd j'utilise le modèle je le fais avec la commande suivante:
    Merci d'avance pour vos réponses.
    Images attachées Images attachées  

  2. #2
    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,

    Pour récupérer les valeurs d'un signal intermédiaire dans une DLL, il faut mettre un "Test Point" en cochant la checkbox dans les propriétés du signal (à côté du Data Logging).
    Ensuite dans la DLL, une structure nommée <modèle>_B est créée: elle contient tous les signaux qui ont un test point.

    Duf
    Simulink & Embedded Coder

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

  3. #3
    Membre régulier
    Homme Profil pro
    dev
    Inscrit en
    Avril 2011
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : dev
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 174
    Points : 110
    Points
    110
    Par défaut
    Salut Duf, merci pour ta réponse.
    J'ai essayé mais ça n'a pas marché j'ai l'erreur suivante "Error using calllib Method was not found." sachant que j'ai appelé la librairie comme suite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Test_signal =  calllib('libname_win64','libname_B');
    .
    La piece jointe montre la déclaration de mon signalNom : Capture.PNG
Affichages : 362
Taille : 30,1 KoNom : Capture1.PNG
Affichages : 360
Taille : 36,0 KoNom : Capture3.PNG
Affichages : 384
Taille : 36,7 Ko.

  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
    Vérifie dans ton fichier libname.h si la structure _B est bien déclarée (elle devrait)
    Simulink & Embedded Coder

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

  5. #5
    Membre régulier
    Homme Profil pro
    dev
    Inscrit en
    Avril 2011
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : dev
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 174
    Points : 110
    Points
    110
    Par défaut
    Non elle n'est pas déclarée!!

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    /* Block parameters (auto storage) */
    extern P_Bloc_Data_T Bloc_Data_BCA_P;
     
    /* Block states (auto storage) */
    extern DW_Bloc_Data_T Bloc_Data_BCA_DW;
     
    /* External inputs (root inport signals with auto storage) */
    extern ExtU_Bloc_Data_T Bloc_Data_BCA_U;
     
    /* External outputs (root outports fed by signals with auto storage) */
    extern ExtY_Bloc_Data_T Bloc_Data_BCA_Y;

    La structure DW correspond a quoi?
    Dans le fichier .def elle n'est pas déclaré non plus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    EXPORTS
    Bloc_Data_M_
    Bloc_Data_M
    Bloc_Data_U
    Bloc_Data_Y
    Bloc_Data_initialize
    Bloc_Data_step
    Bloc_Data_terminate
     
     
     
    Bloc_Data_P
    Sur Matlab R2008b est ce qu'on a accès aux entrées, sorties sous forme de pointeurs comme sur Matlab2013?

    T'en penses quoi Duf?

  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
    Citation Envoyé par autousto Voir le message

    Sur Matlab R2008b est ce qu'on a accès aux entrées, sorties sous forme de pointeurs comme sur Matlab2013?
    Je pense que oui.

    Je ne vois pas trop pourquoi tu ne retrouves pas la structure B avec ton signal. A tout hasard, pourrais-tu verifier dans l'onglet "Code Generation" du Configuration Parameters que l'option "Ignore test points "est bien decochee?
    Tu utilises bien le System Target File "ert_shrlib.tlc" ?
    Simulink & Embedded Coder

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

  7. #7
    Membre régulier
    Homme Profil pro
    dev
    Inscrit en
    Avril 2011
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : dev
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 174
    Points : 110
    Points
    110
    Par défaut
    Bonjour,
    Merci pour ta réponse duf, oui la case est bien décoché et j'utilise bien le. Je t'avoue que ça fait 1 mois que je galère avec la dll, elle marche pas correctement, après le modèle est assez complex aussi.
    Je vais essayer de te faire un résumé avec des images de la configuration que j'ai utilisé peut être y'a quelques chose qui ne va pas.

    Merci encore

  8. #8
    Membre régulier
    Homme Profil pro
    dev
    Inscrit en
    Avril 2011
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : dev
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 174
    Points : 110
    Points
    110
    Par défaut
    Bonjour,

    J'ai une nouvelle version du modèle avec la S-function compilée en Matalab 2013a, après la préparation du modèle et la compilation, j'ai pas pu générer le HeaderFile, au début il n'a pas trouvé quelques fichier .h par exemple , je les ai récuperé dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     matlabroot/simulink/include/....
    mais la j'ai l'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Error using loadlibrary (line 419)
    Failed to preprocess the input file.
     Output from preprocessor is:model_name.h
    c:\Model_ert_shrlib_rtw\simstruc.h(285)
    : fatal error C1189: #error :  Unrecognized use.
    Sachant que le modèle marche bien en Simulation.

    Quelqu'un aurait une idée?
    Merci d'avance

    NB: j'ai coché la case Non-inlined sfunction dans les paramètres lors de la compilation suite à une erreur.

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/11/2009, 19h04
  2. Paramètres d'une DLL
    Par Morfus dans le forum Delphi
    Réponses: 1
    Dernier message: 17/02/2007, 12h27
  3. Gérér la langue d'une DLL générée par VB6
    Par lbgl dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 20/11/2006, 14h53
  4. Réponses: 7
    Dernier message: 11/09/2006, 16h44
  5. Visualiser les paramètres d'une DLL C++
    Par tolliv dans le forum C++Builder
    Réponses: 7
    Dernier message: 11/06/2006, 19h46

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