le 01-16-2020 09:48 AM
Bonjour,
J'essaie d'utiliser le projet mesure continue et enregistrement dans un fichier fourni avec Labview (2014). Mon but est de récupérer la valeur de la température captée par un hygromètre (dew point mirror 473) via un cable rs232 et de l'afficher en temps réel dans le graph.
J'ai appris Labview par moi même j'ai donc des lacunes, c'est également la première fois que j'encontre le système de notifications.
J'ai modifié le vi Acquisition.lvlib:Acquire.vi: j'envoie une commande via Visa Write et je récupère la température avec Visa Read. Cependant la notification qui est en sortie est de type tableau de waveform. Quelle est la marche à suivre dans ce cas là ? Je dois récupérer la waveform précédente et la stocker dans un tableau que j'envoie à chaque fois ? Comment faire ?
Ci joint le projet
Merci,
Dorian
Résolu ! Accéder à la solution.
le 01-20-2020 07:48 AM
Salut DarianG,
Je crois que tu as sorti un bazooka pour tuer une fourmi là !
Pourquoi avoir utilisé un Notifier alors que tu avais déjà un Template avec une Queue ? De plus, un Notifier pour afficher les données reçues n'est clairement pas la bonne méthode...
Petit rappel rapide avant d'aller plus loin qui pourra servir :
D'autre part, si tu veux afficher des données "en temps réel", on a juste besoin de savoir ce que l'hygromètre te renvoie sur le port série. Est-ce une seule valeur, un Double ou un Int ? Si oui, le mieux est d'utiliser un Waveform Chart (et non un Waveform Graph !), trouvable en fouillant dans les contrôles après avoir cliqué droit sur une Face Avant (et non sur un diagramme !). Le Waveform Chart va t'afficher automatiquement les valeurs uniques dans un graphique et le faire dérouler (ce qui donne l'impression du "temps réel". Le Waveform Graph attend plutôt un tableau de données pour les afficher toutes en une fois.
Je vais te proposer un truc bien plus simple que la QMH que tu as voulu utiliser :
Tu trouveras en PJ un exemple de VI très simple qui reprend ce que tu as fait en acquisition (et qui semble très bien) pour l'afficher sur un graph très simplement.
Est-ce que cela a pu t'aider ?
le 01-20-2020 10:00 AM
Bonjour Bilsix,
Tout d'abord merci beaucoup pour ta réponse !
En effet je me suis rendu compte moi même que ma solution était un peu overkill et j'avais donc refait un vi plus basique qui revient à ce que tu m'as envoyé.
Cependant j'ai maintenant 2 contraintes que je n'arrive pas à résoudre:
1. Je n'arrive pas à définir l'axe X comme l'heure d'acquisition du point.
2. L'hygromètre peut capter plusieurs choses comme la température ou l'humidité par exemple et on me demande d'afficher 3 mesures en même temps. Le mieux serait de tout faire sur un graphe mais je n'arrive pas à le faire sur 3 graphes différents déjà.J'ai essayé 3 write/read en paralleles ou séparés avec une structure séquence et ça ne marche pas.
Peux-tu m'éclairer sur les possibles solutions ?
Merci beaucoup,
Dorian
le 01-21-2020 01:52 AM
Re DarianG,
C'est une vaste question, il y a plusieurs façons de faire.
1. Bon pour ce point, il suffit de cliquer droit sur le graph souhaité -> Propriétés -> Onglet "Display Format" -> Choisir "X-axis" dans le menu déroulant -> Choisir "Absolute Time" -> Customiser le format de la date souhaité (24-hour, HH:MM:SS, D/M/Y, 4-digit year).
2.
Pour la récupération de tes données sur le port série :
Comment doit-on récupérer les données selon la doc de l'hygromètre ? Il y a une requête par donnée ? Ou alors il n'y a qu'une requête, et l'hygromètre envoie toutes les données en une fois qu'on doit traiter octet par octet ?
Soit sur de ne pas fermer et ouvrir le port série à chaque requête aussi. Tu peux l'ouvrir au départ du vi, faire tes write/read, puis le fermer une fois que l'utilisateur clique sur Stop. C'est plus propre.
Pour tracer plusieurs données sur un même graph :
D'aucuns te diront de te diriger vers les "Graph XY multiplot" je pense (qui se construit avec deux tableaux dans un cluster : un tableau pour l'axe X, et un autre pour l'axe Y. De cette façon, tu contrôles complètement ce que tu veux afficher, et tu peux donc "faire glisser" manuellement les valeurs à afficher sur le graph, en retirant à chaque tour de boucle la valeur la plus ancienne).
De mon côté, je vais plutôt te proposer la technique qu'a imaginé le LabVIEW God crossrulz ici :
En gros, il s'agit de continuer à travailler avec un Waveform Chart et d'utiliser ses propriété de mémorisation des dernières valeurs pour ne pas avoir à te taper toi-même la partie "glissement des données les plus anciennes".
Je te donne un exemple en PJ : Dans une boucle While, j'ai placé une structure Evenement. A chaque fois qu'on attend le temps "Timing" dans la boucle, on va réaliser ce qui se trouve dans l'évenement Timeout. Dans l'évenement Timeout, je crée 3 Waveforms qui contiennent un seul point chacun (avec le temps exact en X, et la valeur aléatoire en Y), que je place dans un seul tableau, pour le donner à afficher à la Waveform Chart.
Ca parait complexe quand je l'explique, mais tu vas voir le code en PJ, tu vas vite comprendre.
le 01-22-2020 02:51 AM
Tout fonctionne, merci beaucoup pour ta précieuse aide ! 😁😁😁
le 01-22-2020 02:54 AM
C'est top, à bientôt sur le forum !