Discussions au sujet de NI LabVIEW

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

Acquisition DaqAssist - Graphe - Échantillonnage

Bonjour à tous !

 

J'ai un gros problème de compréhension, peut etre vis à vis du flux de données ... ou de l'echantillonage je sais pas trop ...

Voila ce que je voudrais faire (pour ceux qui ont suivis le projet, c'est la partie "Running" de ma machine à états) :

En gros, je veux acquérir les données de différents capteurs, j'utilise le DAQ assist, et je veux un affichage en Live, jusque la pas de soucis, j'ai fais comme ça :

 

 

Et une fois que je clique sur mon bouton stop, je voudrais avoir une courbe globale de toute la simulation ! Et la je patoge, je sais pas trop ce que je fais, le seul truc que j'ai réussis à faire, c'est en utilisant un collecteur de signaux comme ci dessous :

 

acquisition.JPG

 

Déjà je ne sais pas si c'est la bonne methode, ensuite je ne comprends pas hyper bien les différentes fréquences d'echantillonage, comment je les régle.Pour le DAQassist je règle bien la frequence d'ech de réception des données ? On est d'accord ?

Pour le collecteur de signaux, je peux rentrer un nombre d'echantillons constant ... ça me donne le nombre d'ech finaux que je vais avoir ? A quel intervalle ? Si je l'ai mis dans la boucle while, ça fait quoi concrètement ? Je suis un peu perdu !

J'ai pensé peut etre régulé le collecteur de signaux avec un temps d'attente dans une autre boucle while, mais comme je comprends pas très bien ce VI dans mon cas je ne suis pas sur de ce que je fais !

 

En résumé :

- je veux simuler autant de temps que l'utilisateur le souhaite et affcher la courbe en live (OK)

-au moment de stoper, afficher une courbe global de toute la simu, qui, et ce serait parfait, est echantillonée différement du DAQ, par exemple un ech toutes les 2min alors que le DAQ en fait 500 par seconde (dans la limite de la carte bien sur)

 

[edit]

Je sais pas si j'ai été clair, mais il faudrais que le DaqAssist envoi des echantillons à une fréquence que j'ai réglée, à mon graph en live, et que je récupère toutes les x-sec ou min  un echantillons de ce flux de données. A la fin, j'affiche le graph récap.

[/edit]

 

NB: (l'idéal serait que l'utilisateur puisse se balader sur la courbe via la souris direct ou un curseur, et avoir la données numériques précise qui s'affiche, par exmple trois courbe de températures, et au bout e 15min il y a un pic, je met le curseurs à 15min, je je vois T1=50,T2=50 et T3=150 .. mais je pense que c'est un autre soucis la Smiley très heureux mais c'est pour le contexte )

 

Je suis certain que ce n'est vraiment pas compliquer mais je suis un peu perdu la ! Je n'arrive vraiment pas à le faire !


Merci beaucoup !

 

Erwan

PS: je ne joints pas le VI, le DaqAssist étant paramétré avec ma carte, jsuis pas sur que ça serve à quelque chose ! Mais je peux le fournir si besoin !

0 Compliments
Message 1 sur 7
4 409 Visites

Personnellement, j'utiliserais pas le connecter, mais je mettrais un registre à décalage, et j'assemblerais la waveform finale au fur et à mesure.

“En science, la phrase la plus excitante que l'on peut entendre, celle qui annonce des nouvelles découvertes, ce n'est pas "Eureka" mais c'est "drôle"
Isaac ASIMOV
0 Compliments
Message 2 sur 7
4 400 Visites

Déjà, merci de ta réponse.

J'ai un peu bidouillé le truc, mais j'arrive toujours pas vraiment à avoir ce que je veux, en utilisant le collecteur, vu qu'il est limité en nombre d'échantillon ... donc bon imaginons que je dépasse le max ...

Pour ta waveform finale, comment ferais-tu ? Je pensais le faire comme ça mais ça ne marche pas. Il faudrait un peu comme la construction de la table, une sorte de mémoire ...

 

waveforme.JPG

0 Compliments
Message 3 sur 7
4 397 Visites

Malheureusement, n'aiment pa les "boites noirs", je ne travaille jamais avec l'assistant DAQ, je fais toujours moi même l'acquistion des données, et travaille avec des waveforms.

 

Au niveau de ton registre à décalage, il faut qu'à chaque itération tu fasse la somme des points de l'itération N avec N-1.

C'est le registre à décalage, qui va ainsi te servir de mémoire tampon (attention à la consommation de mémoire vive, la RAM n'étant pas illimité, et un process ne pourra jamais consommé plus de 3Go sous windows).

“En science, la phrase la plus excitante que l'on peut entendre, celle qui annonce des nouvelles découvertes, ce n'est pas "Eureka" mais c'est "drôle"
Isaac ASIMOV
0 Compliments
Message 4 sur 7
4 392 Visites

Michael.C a écrit :

 

 Au niveau de ton registre à décalage, il faut qu'à chaque itération tu fasse la somme des points de l'itération N avec N-1.

C'est le registre à décalage, qui va ainsi te servir de mémoire tampon (attention à la consommation de mémoire vive, la RAM n'étant pas illimité, et un process ne pourra jamais consommé plus de 3Go sous windows).


Oui oui, dans ce cas précis je n'en ai pas mis, mais je voudrais prendre un echantillons dans ce graph beaucoup moins souvent, avec le réducteur d'échantillons je suppose, et l'envoyer au graph/waveform !

 

Un autre point que je ne comprends pas au niveau du flux de données :
J'entre dans ma boucle while, je récupère un certain nombre d'echantillons, je l'affiche sur le graphe(le graph directement relié, pas celui entouré), et hop je réitère ma boucle while ? C'est bien comme ça que ça se passe ?

0 Compliments
Message 5 sur 7
4 388 Visites

Oui, c'est bien comme cela.


Par contre, attention je n'avais pas remarqué la première fois, mais le noeud de rétroaction sur le cluster d'erreur n'a pas lieu d'être.


POur information avec les dernières versions de labview, tu n'as plus besoin de désassembler le cluster, tu peux directement cabler ton cluster d'erreur sur la porte OU, LV fait le reste 😉

“En science, la phrase la plus excitante que l'on peut entendre, celle qui annonce des nouvelles découvertes, ce n'est pas "Eureka" mais c'est "drôle"
Isaac ASIMOV
0 Compliments
Message 6 sur 7
4 381 Visites

Bonjour,

 

Bon je détère un peu le sujet parce que c'est toujours pas très clair pour moi .... Smiley triste

 

 

 

Q1: Si je réalise une boucle while avec une acquisition de signal dedans, si j'ai bien compris, si je règle en echantillons continus, et que je règle sur 1000 echantillons à lire :

1) J'attends que le DAQ ai en mémoire les 1000 echantillons

2) le DAQ envoi dans un tableau/graph les 1000 echantillons

3) je réitère la boucle while 

4) j'attends à nouveau les 1000 ....

C'est bien ça ?

Q1bis : je dois pas pouvoir dépasser un certain nombre aussi, doit bien y avoir une sorte de buffer limite ?

 

Q2: Si c'est bien ça, à quoi sert le réglage de la fréquence d'échantillonage ? Ca va régler la vitesse à laquelle je vais "récupérer en mémoire" ces 1000 echantillons ?

 

Q3: Si j'ai plusieurs acquisition de signaux, et que certain sont réglé à 1000, et d'autres à 10 000, la boucle while seras "cadencé" par le plus lent ? Donc je perds toutes performance de certaines cartes d'acquisition ? C'est un peu bizarre .... non ?

 

Q4: Si je règle maintenant sur 1 echantillons sur demande .... dans la logique des choses, je perds en performance non ? A quel vitesse peut tourner cette boucle while ?

 

Q5 : Quel est alors le meilleur moyen de moyenné certains signaux (dans le but de ne pas tomber sur un pic de tempréature par exemple, du à un coup de vent ...)

 

NB: J'utilise le DAQassist, c'est peut etre plus facile à comprendre sans, je suis ouvert à toute explication !

 

Je sais que ça fait beaucoup de questions, mais j'ai vraiment un soucis de compréhension la !

Merci beaucoup de votre aide !


PS: Comme je suis peut etre pas très clair, voici ce que je voudrais faire :
J'ai une boucle while (principal) qui fait appel a mes DAQ pour relever la valeur d'une vingtaine de capteurs. Et sur certain d'entre eux, je voudrais moyenné les dernière valeurs histoire d'éviter des pics d'erreur.
En parallèle de ça, je veux écrire dans un fichier txt, toute les 15sec la valeur du capteur.

0 Compliments
Message 7 sur 7
4 287 Visites