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 :

Bug aléatoire et pas très bien compris (open/close_system)


Sujet :

Simulink

  1. #1
    Membre actif Avatar de LordPeterPan2
    Inscrit en
    février 2007
    Messages
    247
    Détails du profil
    Informations forums :
    Inscription : février 2007
    Messages : 247
    Points : 239
    Points
    239
    Par défaut Bug aléatoire et pas très bien compris (open/close_system)
    J'ai le message suivant qui apparait aléatoirement lorsque je lance un script matlab qui regarde tous les sous sytème simulink ouvert et update automatiquement les valeurs des boites de dialogue :
    "Hurray, it would appear that the Mathworks have fixed the bug that previously prevented this message from being displayed!"
    D'après ce que je comprend matlab croyait que le bug ici présent avait été résolu. J'en suis désolé pour lui mais moi ce qui m'interesse c'est de savoir où il plante, à quelle ligne, ... parce qu'un message du style "désolé j'ai planté pourtant je pensais ne pas planté" çà m'amuse 55 minutes mais c'est tout.
    En fait ce message apparait lorsque j'applique ma macro sur un modèle simulink assez gros (16Mo) et pour l'instant n'est pas apparu sur un modèle plus light (30 ko).

    Pour faire ce script je fais beaucoup de open/close_system.
    Quelqu'un peut m'aider ?
    Ils ne savaient pas que c’était impossible, alors ils l’ont fait

  2. #2
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2007
    Messages : 9 458
    Points : 14 827
    Points
    14 827
    Par défaut
    Bizarre, bizarre....

    Et c'est juste un message ou il y a vraiment une erreur ?
    S'il y a vraiment une erreur tu peux tenter d'utiliser le debuggueur :
    ou menu Debug (éditeur ou cmd window) > Stop if errors/warning puis Onglet errors cocher Always stop if error.
    ça te permettra de voir où il plante (si il plante).
    Peut-être tombe-t-il sur un bloc spécial qu'il ne sait pas gérer.

    Moi ce que je comprends du message c'est plutôt : avant il y avait un bug qui empêchait l'affichage de ce message (quel message ???) et ce bug a été résolu. Mais je suis d'accord que ce n'est pas clair et une recherche de ce texte sur le site TMW ne donne rien...
    Règles du Forum

    Adepte de la maïeutique

  3. #3
    Membre actif Avatar de LordPeterPan2
    Inscrit en
    février 2007
    Messages
    247
    Détails du profil
    Informations forums :
    Inscription : février 2007
    Messages : 247
    Points : 239
    Points
    239
    Par défaut
    Il ne plante pas, en faite je ne sais pas ce qu'il fait, en gros je change pas loin de 10 000 (c'est pas exagéré) et comme l'erreur et aléatoire et que je n'ai pas la patiente de voir si mes 10 000 coef ont tous été bien changé (je suis sur que certain oui mais pour les vérifier tous .....).

    En résumer ce message me fait un peut peur, je ne sais pas si c'est un warning, une erreur, un bad trip de matlab, une souffrance de matlab, et comme tu le dis j'ai fait une recherche sur google et ..... que dalle.

    Autre question :
    je fais plusieur fois de suite des open_system et close_system sans sauvegarde, ce qui fait que çà ouvre et ferme ... 10 000 fenetre (effet de mal de mer assurer ). Quelqu'un sait s'il y a un moyen de n'appeler que les fonctions qui sont appeler lors de l'ouverture physique et la fermeture physique des block sans pour autant ouvrir la fenêtre de dialogue

    Thank you very much
    Ils ne savaient pas que c’était impossible, alors ils l’ont fait

  4. #4
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2007
    Messages : 9 458
    Points : 14 827
    Points
    14 827
    Par défaut
    un load-system te permet de charger le modèle sans l'ouvrir.
    et ça va sûrement te faire gagner du temps.
    mais par contre ce n'est que sur le modèle, pour les blocs je ne suis pas sûre de ce que tu veux faire avec.
    Règles du Forum

    Adepte de la maïeutique

  5. #5
    Membre actif Avatar de LordPeterPan2
    Inscrit en
    février 2007
    Messages
    247
    Détails du profil
    Informations forums :
    Inscription : février 2007
    Messages : 247
    Points : 239
    Points
    239
    Par défaut
    Oui mais non : load_system m'ouvre quand meme la fenetre du système mis en argument contrairement à ce qu'indique l'help
    Ils ne savaient pas que c’était impossible, alors ils l’ont fait

  6. #6
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2007
    Messages : 9 458
    Points : 14 827
    Points
    14 827
    Par défaut
    pas normal ça.

    Donc questions habituelles :
    - quelle version de Matlab et de Simulink as-tu ? (penser à le mettre dans chacun de tes messages)
    - comment utilises-tu la commande ?
    - peut-être y a-t-il des *fcn dans tes modèles qui force l'ouverture ???
    Règles du Forum

    Adepte de la maïeutique

  7. #7
    Membre actif Avatar de LordPeterPan2
    Inscrit en
    février 2007
    Messages
    247
    Détails du profil
    Informations forums :
    Inscription : février 2007
    Messages : 247
    Points : 239
    Points
    239
    Par défaut
    J'ai pensé exactement à çà et quand je clique sur block properties, j'ai effectivement du code dans le "OpenFct", mais pas dans le "LoadFcn", et dans la section "OpenFct", il y a le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UpdateInt2DMask(gcbh,1,1,1);
    takecontrol(gcbh);
    open_system(gcbh,'mask')
    Je pense que ce qui m'interesse c'est la première instrucction.
    Ce que je ne comprend pas c'est pourquoi en load_system j'ouvre le modèle vu qu'à priori il doit appeler le code de "LoadFcn" s'il y en a, or ici il n'y en a pas

    Sinon :
    MATLAB Version 7.2.0.232 (R2006a) et Simulink 6.4
    et j'utilise la fonction de la façon suivante :

    En sachant que sys contient le chemin du sous modèle que je veux charger et que simulink est ouvert sur un modèle parent (meme arrière arrière arrièe ... grand parent) du sous système que je veux charger :o
    Ils ne savaient pas que c’était impossible, alors ils l’ont fait

  8. #8
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : mars 2007
    Messages : 9 458
    Points : 14 827
    Points
    14 827
    Par défaut
    Citation Envoyé par LordPeterPan2
    j'utilise la fonction de la façon suivante :

    En sachant que sys contient le chemin du sous modèle que je veux charger et que simulink est ouvert sur un modèle parent (meme arrière arrière arrièe ... grand parent) du sous système que je veux charger :o
    load_system ne fonctionne que sur le système de plus haut niveau, comme indiqué dans la doc...(même s'il n'est pas précisé que l'utilisation sur un bloc ouvre le bloc)

    De toute façon si ce que tu cherches à lancer est dans la OpenFcn des blocs, tu es bien obligé de les ouvrir...

    Ah si peut-être une idée : au lieu d'ouvrir tu récupères le paramètre OpenFcn et tu fais un eval (oui c'est mal mais là je ne vois rien d'autre) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    openFcn=get_param('modele/bloc','OpenFcn');
    eval(openFcn);
    Ceci dit comme tu as un open_system apparemment dans ta openfcn...ça va quand même t'ouvrir des trucs (les boites de dialogues des masques).
    Règles du Forum

    Adepte de la maïeutique

  9. #9
    Membre actif Avatar de LordPeterPan2
    Inscrit en
    février 2007
    Messages
    247
    Détails du profil
    Informations forums :
    Inscription : février 2007
    Messages : 247
    Points : 239
    Points
    239
    Par défaut
    Bon j'ai réussi : j'utilise la fonction takecontrol() et çà a l'air de faire ce que je veux sans provoquer (sheery on the cake) le message "hurray, gniagniagni gniagniagnia"
    Ils ne savaient pas que c’était impossible, alors ils l’ont fait

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

Discussions similaires

  1. Le rwriting ne fonctionne pas très bien
    Par pierrot10 dans le forum Apache
    Réponses: 1
    Dernier message: 15/04/2014, 14h39
  2. Réponses: 8
    Dernier message: 21/02/2008, 09h34
  3. Je ne comprend pas très bien les templates...
    Par Paulinho dans le forum C++
    Réponses: 5
    Dernier message: 07/11/2005, 11h24
  4. 2 SELECT Qui ne s'entendent pas très bien entre eux :(
    Par moutanakid dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 05/08/2004, 17h46

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