LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

arret

Bonjour,

J'ai fait un programme Labview qui doit me permettre de faire plusieurs cycles thermique en continu en commandant mon element chauffant. J'aimerais savoir si il etait possible d'avoir un arret d'urgence stoppant tout mon programme si j'appui sur un bouton stop ou si la temperature depasse une valeur donnee. Sur le fichier ci-joint j'ai mis une event structure comme j'ai pu le voir dans ce meme forum. Cependant il ne fonctionne pas: Si le bouton de control du timeout est -1 seule la fonction stop fonctionne correctement (l'autre devrait afficher des valeur en continu des temperature), et quand je met une valeur autre que -1 le stop ne fonctionne plus. Merci de votre aide.

0 Kudos
Message 1 of 4
(2,882 Views)

Bonjour,

premier point : vous avez posté sur le forum anglais en langue française, donc pas bien

deuxième point : poster un vi non exécutable (car sans ses dépendances : variables globales) n'est pas une bonne chose

troisième point : poster vi qui ressemble à ça :

 

 

n'est pas très motivant pour vous aider.

 

La fonction que vous voulez faire est assez simple à faire, du moment qu'on respècte le bon sens de programmation Labview (pas besoin de google earth pour lire vos diagrammes par exemple)

 

Je vous suggère de nettoyer votre diagramme en utilisant des sous vi, et revenir une fois ceci effectué.

 

Juste pour info, lorsque vous entrez dans le timeout, vous démarrez une boucle while : pour que la structure événement marche (stop valeur changée), il faut que le timeout se finisse !

 

V-F
0 Kudos
Message 2 of 4
(2,870 Views)

Bonjour,

 

je pense que vous ne parvenez pas à arrêter votre programme car vos boucle d'acquisition DAQmx sont encore en exécution lorsque vous dites au programme de stopper.

je vous ai codé un VI qui vous démontre cela:

 

Il fait soit une acquisition unique soit une acquisition en continue suivant l'état du toggle.

 

Si vous lancez ensuite une acquisition et que vous avez spécifié en acquisition continue, même si vous cliquez sur stop, le programme ne s'arrêtera pas avant 10 itération de la boucle fort.

 

En effet, dans la pile des évènements, le stop est après l'acquisition et l'état stop ne peut s'éxecuter que si les états spécifiés avant lui dans la pile ont fini de s'éxecuter.

 

Pour résoudre votre problème, je pense qu'il serait judicieux de créer une variable locale du bouton stop et câbler pour chaque état de votre structure évènement une variable locale en mode lecture sur le terminal de condition de votre boucle while afin que lorsque vous cliquez sur stop, les taches DAQmx s'arrêtent et la boucle while principale s'arrête aussi.

 

Cdlt

 

 

Romain DUVAL || RF & Semiconductor Staff System Engineer || CLA || CTA
National Instruments France

0 Kudos
Message 3 of 4
(2,845 Views)

Juste pour info:

- Jetez un coup d'oeuil aux machines d'état, sa évitera une architecture aussi peut lisible

- Une structure événement est faite pour exécuter du code RAPIDEMENT donc oubliez les boucles while dedans

- +1000 ramses64!

 

Ps: pour moi la meilleure architecture serait un producteur consommateur basé évenements (et là pas besoin d'une locale, le fil d'erreur cablé depuis le dequeue vers le connecteur d'arrêt suffit)

 

Rodéric L
Certified LabVIEW Architect
0 Kudos
Message 4 of 4
(2,841 Views)