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 :

Problème de pas de temps avec Enabled Subsystem


Sujet :

Simulink

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2013
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 6
    Par défaut Problème de pas de temps avec Enabled Subsystem
    Bonjour à tous,
    Je souhaite enrichir un modèle simulink de fonctionnalités activables/désactivables via un choix de variables dans matlab.
    Je pose donc choix=1; et voudrais donner cette variable en paramètre à un bloc Enabled Subsystem qui prend également valIn en entrée et renvoie valOut.
    Le pas de temps de mon modèle est variable, imposé par le solveur.

    Mon problème est le suivant : cette technique n'empêche pas la compilation mais au terme de la simulation mes vecteurs exploitables doivent être de taille 5000. Or ceux renvoyés par le bloc décrit précédemment sont de taille 23000. Le pas de temps de ce bloc est donc beaucoup plus court.

    Les opérations à l'intérieur du bloc ne sont pas en cause puisque mon vecteur d'entrée "mesure" bien 5000 avant le bloc, mais 23000 à peine entré. J'en déduis donc que c'est l'utilisation, pour l'activation du bloc, d'une constante (au lieu d'un classique signal carré par exemple) qui est responsable de cette différence.

    Mais j'ai beau jongler avec les paramètres sample time des différents blocs, je n'arrive pas à imposer le pas de temps du solveur à mon bloc Enabled Subsystem.

    Identifiez-vous le problème différemment ? Connaissez-vous des pistes de résolution ?

    Les données "intouchables" sont l'utilisation de la constante et le pas de temps variable du solveur.

    Merci d'avance pour vos lumières.

  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 : 41
    Localisation : France

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

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

    Si tu vas dans les propriétés de ton bloc Enabled Subsystem (via le clic droit), tu as accès à un champ Sample Time. Tu peux donc spécifier quel doit être le pas d'échantillonnage de ton sous-système.

    Simple curiosité, qu'est-ce qui t'impose d'avoir des vecteurs de 5000 points?

    Duf

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2013
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 6
    Par défaut
    Bonjour,
    en théorie ren ne m'impose cette longueur mais en pratique tous mes vecteurs exploitables (et exploités !) à l'issue de la simulation sont de même taille. Seuls ceux passant par ce type de bloc sont plus longs ce qui m'interdit pas mal d'opérations ensuite.
    Une petite précision : la taille finale est évidemment fonction d'une multitude de paramètres fixés via matlab avant le lancement de la simulation, et j'ai pris 5000 et 23000 en exemple puisque c'est un résultat constaté. D'autres paramètres auraient peut-être donné 600 et 8000, mais le fait est que partout ailleurs dans mon modèle tout se passe bien et la longueur des vecteurs reste la même. Sauf lorsque mes variables transitent par ce bloc, les vecteurs récupérés sont alors plus long.

    Je cherche ce champ sample time depuis un moment mais ne le trouve pas pour mon Enabled Subsystem (voir enSub.jpg en pj).
    De plus j'ai lu quelque part dans l'help que le pas d'un Enabled Subsystem correspondait à celui du signal d'entrée relié au bloc Enable.
    L'idéal serait donc de modifier le champ sample time de ma constante d'entrée (voir struct.jpg) pour qu'il corresponde au pas variable de ma simulation. Mais je ne sais pas comment accéder à ce pas.

    Encore une précision : qu'est-ce qui m'indique que le problème vient de cette constante reliée au bloc Enable ? Si j'envoie vers le workspace le vecteur Neng d'entrée du Enabled Subsystem il mesure 5000. Double-clic pour ouvrir mon Enabled Subsystem et ajout d'un To Workspace IMMEDIATEMENT à l'entrée du bloc : ce même vecteur mesure 23000...

    Je suis dispo pour plus d'informations si nécessaire, merci de votre aide
    Images attachées Images attachées   

  4. #4
    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

    le sample time se situe dans l'onglet "signal attribute" du bloc enabled
    sinon tu peux aussi imposer un sample time au bloc constante
    tu peux également déclarer ton système comme "atomic" et lui imposer un sample time
    enfin n'hésite pas à utiliser le menu "format\sample time display\all", ça aide

  5. #5
    Membre à l'essai
    Inscrit en
    Janvier 2013
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 6
    Par défaut
    slt,
    oui j'utilisais déjà sample display/colors, c'est effectivement très pratique !
    Par contre je ne vois pas d'onglet signal attribute, ni pour le bloc Enable, ni pour le bloc Enabled Subsystem
    Quant à l'option "treat as atomic unit", elle est grisée sans que je sache pourquoi et je ne peux donc pas la cocher (cf enSub.jpg)

    l'idéal serait effectivement d'imposer le bon sample time au bloc constante mais ma question est alors : comment récupérer le pas du solveur en temps réel ?

    merci encore

  6. #6
    Membre à l'essai
    Inscrit en
    Janvier 2013
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Janvier 2013
    Messages : 6
    Par défaut
    Rectification :
    je me suis mal exprimé, les vecteurs reprennent la bonne taille à la sortie du bloc. Apparemment simulink effectue une conversion de pas à chaque frontière de bloc. Le problème de taille se pose lorsque les résultats de calculs effectués dans le bloc sont envoyés vers le workspace directement depuis le bloc.
    Si j'effectue ces calculs, puis défini les résultats comme un output, je peux les envoyer vers le workspace une fois sortis du bloc sans problème de taille.

    Mais :
    1/ ce n'est ni pratique ni esthétique
    2/ je ne suis pas en mesure d'évaluer l'erreur induite par la conversion de pas, et c'est très important pour mes résultats.

    Donc :
    1/ je cherche toujours un moyen de synchroniser le sample time de ma constante d'activation au sample time variable du solveur
    2/ si je ne trouve pas comment faire, il faut que je puisse estimer l'erreur de conversion, ou au moins que je sache comment celle-ci est effectuée (suppression de n échantillons tout les n+1, moyennage n à n, ...?)

    merci d'avance

  7. #7
    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
    Citation Envoyé par rraffin Voir le message
    slt,
    oui j'utilisais déjà sample display/colors, c'est effectivement très pratique !
    donc tu es sensé voir d'ou vient le problème, non ??
    vient il réellement de la constante branchée sur enable ??

    Citation Envoyé par rraffin Voir le message
    slt,
    Quant à l'option "treat as atomic unit", elle est grisée sans que je sache pourquoi et je ne peux donc pas la cocher (cf enSub.jpg)
    en fait je viens de voir qqch d'interressant :
    si je met un bloc enable dans un sous systeme, en effet cette case est grisée et décochée, pourtant le sous systeme est un rectangle avec un contour gras ce qui signifie qu'il est consideré comme atomic
    de plus si je prend directement un bloc enabled subsystem alors la case est grisée, coché, le contour gras
    bizarre

    bref, je pense que ton sample time plus petit viens plutôt de l'interieur de ton sous syteme que de l'entrée enabled (constante) de ton sous systeme
    et ca tu devrais le voir assez rapidement avec display sample time


    Citation Envoyé par rraffin Voir le message
    2/ si je ne trouve pas comment faire, il faut que je puisse estimer l'erreur de conversion, ou au moins que je sache comment celle-ci est effectuée (suppression de n échantillons tout les n+1, moyennage n à n, ...?)
    dans tes blocs to workspace (entre parenthèses les fonctions logging signal sont peut être "plus modernes") tu peux sauvegarder sous forme d'une structure avec le temps, ce qui te permettra d'enlever les échantillons en trop en post traitement sous matlab

Discussions similaires

  1. pas de temps avec ODE45,23 etc
    Par membreComplexe12 dans le forum MATLAB
    Réponses: 4
    Dernier message: 10/04/2012, 19h29
  2. probléme de pas pour l'axe de temps avec JFreechart
    Par slimene dans le forum Interfaces Graphiques en Java
    Réponses: 0
    Dernier message: 24/02/2011, 16h21
  3. Probleme avec gets - On n'a pas le temps de saisir la chaine
    Par thomas_moore dans le forum Débuter
    Réponses: 3
    Dernier message: 29/10/2010, 13h13
  4. problème avec enable application framework
    Par salihovic dans le forum Windows Forms
    Réponses: 8
    Dernier message: 23/07/2009, 15h15
  5. TabSheet avec enabled à false ne marche pas?
    Par codial dans le forum Delphi
    Réponses: 8
    Dernier message: 06/03/2007, 12h46

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