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

LabVIEW Discussion :

Machine d'états (FSM) : condition de transition non prise en compte


Sujet :

LabVIEW

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 58
    Points : 40
    Points
    40
    Par défaut Machine d'états (FSM) : condition de transition non prise en compte
    Bonjour,

    Comme je l'avais expliqué dans un précédent post, je voudrais gérer le comportement de mon appli d'acquisition/sauvegardes des données par une machine d'états. Le premier gros problème que j'avais rencontré, c'est que je n'arrivais pas à transiter entre les états OFF et IDLE que j'avais créés. Losaque avait résolu mon problème, et j'avais cru que j'avais tout compris, et que tout allait être plus facile par la suite.
    Or, je suis aujourd'hui face au même type de problème. J'ai ajouté un état supplémentaire RUN_MEASUREMENT, dans lequel on doit passer si le bouton correspondant sur la face avant est pressé. Etant donné qu'il y a plusieurs booléens à surveiller, j'avais pensé à concaténer les valeurs booléenes de chacun des boutons pouvant provoquer une transition, de convertir en valeur décimal et de faire un test sur celle-ci pour déterminer l'état suivant. Mais dans un premier temps, j'ai préféré traiter les cas un par un avec des test sur chacun des booléens.
    Bref, j'aimerais passer de l'état IDLE à l'état RUN_MEASUREMENT lorsque l'on appuie sur le bouton "sauvegarder sur le disque", mais rien ne se passe. Je suis sûr que quelque chose de gros m'échappe, mais je n'arrive pas à mettre le doigt dessus.

    Merci d'avance pour votre aide.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 100
    Points : 125
    Points
    125
    Par défaut
    Le projet en LV8.5 est ce possible?

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 55
    Points : 52
    Points
    52
    Par défaut
    Salut,

    J'ai adapté ta machine à états pour qu'elle corresponde au chemin flèché de ta face avant, je ne sais pas si c'est ce que tu recherchais mais je ne me suis pas servi des structures évènements...

    J'ai enregistré en 8.5 le VI principal, je ne sais pas si ça fonctionnera pour les autres VI's.

    A+

    k,j.zip

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Avril 2010
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes

    Informations forums :
    Inscription : Avril 2010
    Messages : 210
    Points : 338
    Points
    338
    Par défaut
    Salut,

    De ce que je vois, le problème c'est que tu ne quitte jamais ta boucle While de ton état IDLE. Si tu clique sur "Sauvegarder sur le Disque" PUIS sur "POWER", tu passera par ton état RUN_MEASUREMENT. Pour que ton programme fonctionne "rapidement", tu peux relier ton booléen sur ta condition de sortie de boucle While via un "OU Logique" avec tout le reste, mais ça va vite devenir ingérable avec plus d'état (usine à gaz sans flux de donnée !!! ).

    Dans le principe, tu ne devrais pas avoir de boucle While dans une machine d'état car rien ne t’empêche de faire x fois l'état IDLE à la suite (avec registre à décalage pour passer tes arguments d'une exécution à l'autre).
    Je t'ai mis en PJ un algo simple qui pourrais résumer ton programme (à améliorer donc !!), mais ça peux t'aider à comprendre le fonctionnement.

    Si tu as des questions, hésite pas, je ne mort pas encore

    Losaque
    Images attachées Images attachées  

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 58
    Points : 40
    Points
    40
    Par défaut
    Merci Losaque, Killabeez et Régis. Je regarde ça et vous tiendrai au courant dès que possible.

  6. #6
    Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 58
    Points : 40
    Points
    40
    Par défaut
    Comme l'a souligné Losaque, il faut supprimer la boucle WHILE en trop. J'ai ensuite déplacé quelques éléments (RAZ de l'historique, etc...) vers l'état OFF_STATE, mais qui pourraient se trouver à l'avenir dans un état INITIALISATION.
    Merci encore !

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 03/06/2009, 11h09
  2. condition sur while non prise en compte
    Par Thierry2008 dans le forum Débuter
    Réponses: 4
    Dernier message: 24/04/2009, 18h24
  3. [AJAX] Condition non prise en compte!
    Par axl2008 dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 18/11/2008, 11h31
  4. [réglé]changement d'état d'un radio bouton non pris en compte!
    Par leprogrammeurfou dans le forum ASP.NET
    Réponses: 2
    Dernier message: 12/06/2008, 14h32
  5. Condition OR non prise en compte
    Par Thetonio007 dans le forum SQL
    Réponses: 7
    Dernier message: 08/06/2007, 16h02

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