Discussions au sujet des autres produits NI

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

Boucle de séquence avec temps d'attente et possibilité d'arrêt

Bonjour,
Je souhaite réaliser une boucle de séquences qui démarre à l'appuie d'un bouton . Je souhaiterais inclure un temps d'attente entre chaque séquence et pouvoir à tout moment quitter la boucle en appuyant sur un bouton. Pour l'instant j'utilise la stucture séquence mais il n'est pas possible d'arrêter cette boucle à tout moment! A moins qu'il y ait une possibilité?
Merci de me faire parvenir vos propositions.
0 Compliments
Message 1 sur 10
5 302 Visites
Il est impossible de sortir d'une sequence si tous les "frames" ne se sont pas executé.
 
Ce que je vous conseille est un state engine, ou le cas qui doit etre executer apres est déterminé par un enum transmis par un shift register.
Regardez les templates labview vous comprendrez mieux
 
Etienne
0 Compliments
Message 2 sur 10
5 278 Visites

Merci pour votre réponse mais je ne trouve pas le state engine sous labview!!!

Pourriez vous mettre un exemple si vous en avez un?

Merci

0 Compliments
Message 3 sur 10
5 277 Visites
Merci pour vos réponse, mais n'y aurait-il pas quelque chose de plus simple afin de faire un suite d'événements que l'on peut stopper à tout moment? Comme par exemple cette suite d'événements pour une commande de moteur: attente, mesure de position, attente, déplacement du moteur.
0 Compliments
Message 5 sur 10
5 242 Visites
Je vous joint à ce message la structure d'une machine d'état (ne sachant pas quelle version de LabVIEW vous utilisez, je l'ai enregistré pour LabVIEW 7.1).

Cependant, pour que votre code puisse être interrompu proprement à tout moment, il faut puissiez sortir de la structure condition, c'est à dire que votre code prévoit cette interruption. Par exemple, si le code de la mesure s'effectue dans une boucle While, que la condition d'arrêt soit la condition normale que vous avez choisie ou l'interruption.

LabVIEW est un langage de programmation par flux de données, il faut que tout les flux "entrant" quelque part (lors du passage d'une structure, d'un VI) soit présents pour que le code qui suit soit exécuté. Dans l'exemple ci-joint, il faut que le contenu de la structure condition soit entièrement exécuté pour que, si l'arrêt a été demandé par le bouton stop, la boucle s'arrête effectivement.

Cordialement,
0 Compliments
Message 6 sur 10
5 234 Visites
Merci de votre réponse cela marche, j'arrive à arrêter un séquence en cours! Cependant j'ai des temps d'attente de plusieurs minutes et il me faudrait une manière plus "brutale" d'arrêter la séquence sans forcément quitter le soft!!!
0 Compliments
Message 7 sur 10
5 224 Visites
Vous pouvez démultiplier votre délai et utiliser un décompte: l'arrêt de la boucle d'attente ne se fait que si le nombre de cycle d'attente (de 100ms par exemple) est atteint ou si l'arrêt à été demandé:

Message Edité par Mathieu R. le 10-10-2006 02:13 PM

0 Compliments
Message 8 sur 10
5 219 Visites

Merci beaucoup! C'est très intéressant mais je devrais utiliser plusieurs boucle comme celle là et pouvoir les stoppées. Le problème c'est que je sors le bouton d'arrêt de la boucle ce qui a pour effet que la boucle ne s'arrête seulement quand elle a fini et pas à l'appui du bouton.

Message Edité par lango le 10-13-2006 09:02 AM

0 Compliments
Message 9 sur 10
5 194 Visites
Pour résoudre ton probleme pour fermer tes diffrentes boucles, tu trouveras peut-être un élément de solution ici ;
"Another is a global loop stop. This vi was created to globally stop all parallel loops when any one is complete." 
http://forums.lavag.org/index.php?showtopic=2710
0 Compliments
Message 10 sur 10
5 148 Visites