Discussions au sujet de NI LabVIEW

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

[Debutant LV 8.5]Realisation d'un chrono ?

Bonjour,
 
Je voudrais realiser un chronometre (minutes / secondes), qui se declenche par une indication booleenne VRAI et qui s'arrete sur une indication FAUX. J'ai pensé utiliser une structure CASE, mais je n'arrive pas a faire un chrono !!
 
Pouvez me dire comment realiser un chronometre tout simple ??
 
Merci d'avance pour votre aide...
0 Compliments
Message 1 sur 35
8 681 Visites
Voici un exemple basique réalisé pour vous.
Message 2 sur 35
8 679 Visites
Un exemple basique, oui pour vous sans doute !! Pour moi pas vraiment j'avoue que jai du mal a comprendre comment vous avez realisé ce chrono. Pouvez vous m'expliquer en quelque ligne la demarche a suivre pour realiser ceci ??
 
Merci beaucoup pour cet exemple, je vais tenter d'y voir claire et de m'en servir en attendant une reponse.
0 Compliments
Message 3 sur 35
8 675 Visites
Voici donc une petite explication :

L'exemple utilise une boucle while avec deux registres à décalage (shift register). Celui du haut sert à mémoriser le temps de démarrage du chronomètre et celui du bas l'état du chronomètre (en marche ou arrêté). A chaque nouvelle itération, la boucle va ainsi lire l'état de l'itération précédente. Un registre à décalage permet donc de transmettre des valeurs d'une itération à la suivante sans recourir à des variables locales.

A l'intérieur de la boucle, une structure événements est utilisée pour détecter les pressions des boutons et actualiser le chronomètre.
Tant qu'aucun des boutons n'est pressé, l'événement Timeout est exécuté avec la période définie (100ms). Dès qu'un bouton est pressé, l'événement Value Change correspondant est exécuté.

L'action mécanique des boutons est défini à Latch until Released. Ainsi, l'état d'un bouton est remis automatiquement à FALSE dès qu'il a été lu. Toutefois, il est essentiel de mettre le terminal des boutons dans l'événement correspondant. Plus de détails.

Au lancement du VI, le chrono est défini comme arrêté (Running = FALSE). Le case FALSE de l'événement Timeout va donc être exécuté (--> on ne fait rien) tant qu'aucun des deux boutons n'est pressé.

A la pression du bouton START/STOP, l'événement Value Change de ce bouton est déclenché. Le chrono étant arrêté, le case FALSE de cet événement s'exécute. On lit le temps actuel (temps de démarrage du chrono) et on le mémorise dans le registre à décalage supérieur. De plus, on défini le chrono comme démarré en définissant Running à TRUE par le biais du registre à décalage inférieur.

Lors de l'exécution de l'événement Timeout, le chrono étant maintenant démarré, on calcule et on affiche le temps écoulé depuis le démarrage. Il y a ici une petite subtilité pour l'affichage puisqu'on utilise le format temps relatif pour l'indicateur Temps. (clic-droit sur l'indicateur >> Display format... >> onglet Display format >> voir la définition du format dans le champ Format string). Cette manière de faire permet d'afficher le temps écoulé selon un format personnalisé (ici MM:SS.s).

Lors d'une nouvelle pression du bouton START/STOP, on défini le chrono comme étant arrêté et l'indicateur ne sera donc plus actualisé dans l'événement Timeout.

Une pression du bouton QUITTER déclenche l'événement correspond qui va transmettre la valeur TRUE à la condition d'arrêt de la boucle. La boucle s'arrête et donc le VI. Vous remarquerez qu'au contraire des deux autres tunnels, l'intérieur de celui relié à la condition d'arrêt de la boucle est blanc. Ceci est lié au fait qu'il est défini à Use Default if Unwired (clic-droit sur le tunnel). En le configurant ainsi, il n'est pas nécessaire de le définir dans tous les événements. Si non relié, la valeur par défaut (FALSE pour un booléen) sera transmise. C'est ce qui explique pourquoi il n'y a pas de constante TF dans les autres événements et que seul l'événement du bouton QUITTER arrête la boucle.

J'espère avoir ainsi répondu à toutes vos questions.



Message 4 sur 35
8 671 Visites
Effectivement vous avez tout a fait bien repondu a toutes mes questions, merci beaucoup JB pour cette exlication detailler, c génial !!
Du coup jcomprend parfaitement comment fonctionne ce chrono.
 
A plus bonne journée...
0 Compliments
Message 5 sur 35
8 667 Visites
Ouf, mes efforts n'auront donc pas été vains ! Comme quoi un exemple jugé basique peut cacher passablement de notions importantes !
0 Compliments
Message 6 sur 35
8 662 Visites

Bojour,

 

Merci pour votre VI. Je voudrais faire un système "play-pause-stop", le but est de accumuler le temps de "play", mais j'ai eu mal à sortir.

 

J'ai fait un VI en utlisant le temps écoulé, mais le résultat accumulé n'est juste que pour une fois.

 

Pourriez- vous jeter un coup d'oeil dans les 2 VIs ci-joints. 

 

Merci d'avance.

 

Lily

 

 

Tout télécharger
0 Compliments
Message 7 sur 35
8 165 Visites

Bonjour j'ai un p'tit chrono facile à comprendre !!!

Explication, bravo. 

Bon courage.

Philippe B.
Certified Associate Developer / Dépt Moyens d'essais

www.ingenia-system.com
0 Compliments
Message 8 sur 35
8 164 Visites

Merci pour votre VI, c'est facile à comprendre.

 

Mais mon problème est comment accumuler le temps?

 

Lily

0 Compliments
Message 9 sur 35
8 148 Visites

Bonjour,

 

Ci joint une modif du VI pour cumuler le temps.

Bon courage.

Philippe B.
Certified Associate Developer / Dépt Moyens d'essais

www.ingenia-system.com
0 Compliments
Message 10 sur 35
8 138 Visites