Discussions au sujet des autres produits NI

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

Créer un graphe XY - tension en fonction du temps

Résolu !
Accéder à la solution

Bonjour,

 

J’utilise comme instrument un bornier NI SCB-68A et une carte d’acquisition NI USB-6363.

Je suis actuellement en train de développer un programme LabView avec DAQ-mx. Celui-ci devra me permettre de représenter l’erreur (tension mesurée - tension souhaitée) et l’évolution des tensions en fonction de la fréquence sur les tensions appliquées en entrée analogique sur le bornier. Seuls 2 canaux sont utilisés (AI0 et AI1 en différentiel)

Jusqu’à présent, c’est le travail que j’ai effectué dans ce programme. Mais il est vrai que je n’ai pas pu tester entièrement sa fiabilité.

Je bloque sur une chose qui fait l’objet de ce sujet. A partir des données que je lis, je voudrais créer un graphe XY représentant l’évolution des deux tensions en fonction du temps, et enregistrer les données. Or, je suis très embété par le type des données venant de ma lecture (1D array). J’ai l’habitude de faire des graphes avec un integer et pas un tableau. Comment puis-je m’y prendre ? Y-a-t-il plusieurs facon de faire des graphes XY ?

Pouvez-vous me donner des pistes d´aide ?

 

En pièce jointe, je mets mon programme LabView, fait sur version 2014.

 

Je vous remercie par avance de votre aide.

Cordialement

NI Certified LabVIEW Associate Developer (CLAD)
Tout télécharger
0 Compliments
Message 1 sur 13
4 997 Visites
Solution
Accepté par l'auteur du sujet Iobrise48

Bonjour,

Cette question aurait sa place dans la rubrique labview pour avoir plus de chance de de réponse :).


Je te conseillerais si tu souhaites tracer ta tension en fonction du temps de modifier ta remontée de valeurs.


En effet, tu peux avec les briques DAQmx aisément faire une remontée avec un tableau de waveform.
Ainsi ta donnée temporelle est directement incluse dans ton "fil", et il te suffit de connecter cela à un graphique XY directement.

 

Concernant l'utilisation des graphiques, regarde dans l'outil de recherche d'exemple en tapant le mot Graphe. Tu as un VI fourni par NI qui est très bien fait pour comprendre ton besoin.

 

Cdt,
Michael

“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 13
4 980 Visites

Bonjour,

Je vous remercie pour votre réponse. Je suis désolé mais je n’ai pas bien saisi quelque chose. C’est quoi une remontée de valeurs ? Je ne comprends pas ce que vous voulez signifier.

Je vais regarder alors si je trouve le VI d’exemple dont vous m’avez parlé.

 

Cordialement

NI Certified LabVIEW Associate Developer (CLAD)
0 Compliments
Message 3 sur 13
4 978 Visites

Je viens de comprendre en essayant plusieurs choses pour faire fonctionner mon programme. Oui 🙂 la remontée des valeurs correspond à mes shifts registers. C’est parfait, mon problème est résolu... mais j’ai pu découvrir un autre problème.

Je viens de me rendre compte que mon problème n´analyse pas le nombre de points que j’ai demandé. Je suspecte que ce problème vient de cette erreur :

code : 200010

source : DAQmx Stop Task.vi: 3590010

 

Cette erreur n´empêche pas le programme de tourner et de lire des données.

Pouvez-vous m´aider à comprendre cette erreur et à la résoudre ?

 

Je vous remercie de votre aide.

Cordialement

NI Certified LabVIEW Associate Developer (CLAD)
Tout télécharger
0 Compliments
Message 4 sur 13
4 974 Visites

Je viens de regarder ton programme, et il y a de gros soucis dûs au fait que tu connaisses pas labview :s.


Tout d'abord ton save2 & save3, non pas lieu d'être, il s'agit d'un même VI.

 

Or le principe d'un sous vi, et qu'il représente une fonction "générique" de ton code que tu peux appeler plusieurs fois.

Donc tu n'as pas à crééer autant de VI que de sauvegarde, mais tu places directement plusieurs fois le même sous vi dans ton diagramme.


Pour le main, c'est tout simplement illisible. Il est impossible de débugguer quoi que ce soit sur un programme de ce type là.


Tu ne respectes pas les principes de bases de labview :

1- Flux de données : les données vont de gauche à droite uniquement.

Dans ton cas ca monte, ca descend, ca va en avant et en arrière.

2 - Cablage des flux d'erreurs : on doit avec un cluster d'erreur en entrée et en sortie, afin de suivre le cheminement du programme, cela permet en plus de bien appliquer la règle du flux de données, généralement les données suivent le fil d'erreur.

3 - Un diagramme doit être lisible sur un seul écran, ou au pire on ne doit avoir à se déplacer que de gauche à droite.

 

Dans un programme aussi simple, tu ne devrais pas avoir de noeud de rétro action, je ne comprend déjà pas pourquoi tu fais varier la vitesse d'échantillonnage en dynamique.


De plus, afin de faire travailler au mieux ta carte d'acquisition, et vu que tu sembles avoir besoin de la même précision sur le sdeux chaînes, il vaut mieux travailler avec une seule tache.


J'ai retoucher la partie acquisition selon ce que je pense être juste, essaye de refaire la partie traitement à partir de cela.


A noter qu'en disciminant le tableau de waveform, tu retrouches tes données (Colonne 0 Ai6 / Colonne 1 : Ai7), et avec un cluster pour désambler le Y te donne ton tableau de valeurs.

 

Bon courage,

Michael

“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 5 sur 13
4 970 Visites

Merci pour toutes ces informations. Je reconnais qu’au niveau de la présentation, le programme semble vraiment sale. Pour vous expliquer le contexte, je devais rapidement faire un programme d’acquisition (en 1 jour mais cela n’a pas été le cas) pour mesurer les effets de reflets de tension (le "ghosting") sur les entrées analogiques.

 

Mon but dans ce programme est vraiment d´avoir le plus de ghosting. En quelques sortes, je veux le pousser à bout afin de connaître les limites de mes instruments et identifier mes capacités à mesurer. Ainsi, j’ai choisi cette configuration pour avoir une répétition tel que j´acquéris 1 point sur CH0, puis 1 point sur CH1, 1 point sur CH0, 1 point sur CH1 ainsi de suite.

 

Je me suis apercu que le ghosting dépendait de la fréquence d´echantillonnage appliquée. Ainsi je la fais varier, je voudrais mesurer 1000 points par canal et afficher uniquement la moyenne sur un graphe.

 

En fait, mon ambition final est assez complexe à expliquer. J´ai essayé au mieux de vous exposer le contexte, de facon synthétique. Après étude de mes données, je suis assez embêté... mon programme ne change pas la fréquence d’échantillonnage, et n’acquis pas le nombre de points que je demande. Ai-je un problème de buffer ?

Pouvez-vous m’envoyer les modifications que vous avez effectué ? Je suis très intéressé de voir vos modifications 🙂

 

Je vous remercie de votre compréhension.

Cordialement

NI Certified LabVIEW Associate Developer (CLAD)
0 Compliments
Message 6 sur 13
4 967 Visites

Bonjour,

Je comprends vos motivations, mais je ne suis pas complètement d'accord avec la méthode.

Etant adepte du benchmark de mes équipements, afin de les pousser au mieux de leur performances, je resterai sur l'avis d'utiliser une tache unique, ce qui permet de ne pas multiplier les risques de concurrence sur les accès clock, et vous pourrez ainsi monter à des fréquences d'échantillonage plus importante.


Par rapport à votre problématique, vous n'avez pas le choix, il vous faut travailler en waveform pour que votre donnée temporelle soit calculée au plus près de votre "DAQ", afin de limiter la dérive que vous feriez avec les latences de traitement.

 

Je comprends mieux le principe de la variation de fréquence, refaite déjà le test avec les modifications que je vous propose et on adaptera par la suite.

 

Cdt,
michael


NB: désolé pas mis la pièce jointe plus tôt, mon LV avait planté ^^

“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 7 sur 13
4 965 Visites

Je vous remercie pour vos modifications. Je l´ai testé et il y a beaucoup de fonctionnalités dont je n´y aurais jamais pensé.

J´ai encore quelques soucis, dont je n´arrive pas à résoudre :

- Au niveau temporel, la waveform me permet d´avoir des mesures bien cadencées. Or après exportation du graphique temporel sur excel, je vois que la fréquence d’échantillonnage est égale à 200 kHz et reste constante durant toute l’acqusition. Je voudrais vraiment faire un balayage en fréquence d’échantillonnage (même problème auparavant).

- Aussi, le DAQmx create channel configuré de cette facon est quelque chose que j’avais déjà essayé auparavant. J’ai laissé tomber cette méthode car je pensais que les commandes étaient envoyées en même temps à la carte d’acquisition. Or cette carte d’acquisition contient un multiplexeur, je ne peux donc l’utiliser que canal par canal. Aussi, quand je mesure les deux voies, je vois dans mon cas 2V sur CH0 et 2V sur CH1, alors que j’attends de voir 2V sur CH0 et 5V sur CH1. Je pense utiliser la méthode que j’utilisais pour répondre à ce problème.

- Enfin j’ai un problème sur le calcul de l’erreur. Le calcul pour la voie CH1 ne fonctionne pas et le graphique m’indique autour de 2V... J’avais le même problème sur la version de mon programme précédente.

 

Je vous envoie les modifications que j’ai effectué sur votre programme. Je vous remercie de votre aide. C’est vraiment très intéressant pour moi d’avoir un avis extérieur.

 

Cordialement,

Samuel

NI Certified LabVIEW Associate Developer (CLAD)
Tout télécharger
0 Compliments
Message 8 sur 13
4 960 Visites

En ce qui concerne l'échantillonage, il se peut que tu ne respectes pas les capacités de ta carte d'acquisition, fait une exécution en mode animé (clic sur l'ampoule dans le diagramme) et regarde si la configuration de l'horloge ne te renvoit pas des erreurs au moment de la sélection de la fréquence d'échantillonage.

“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 9 sur 13
4 956 Visites

Après quelques modifications, je suis arrivé à résoudre 2 problématiques sur 3. C’est un résultat déjà très satisfaisant pour moi et je vous en remercie.

Je cherche encore pour l’affichage correcte des valeurs d’erreurs. Je n’ai toujours pas trouvé encore, et je trouve cela assez étrange d’ailleurs que mon graphe indique 2V en erreur. Avez-vous une suggestion pour résoudre ce problème ?

 

Je vous envoie la dernière version du programme, celle qui fonctionne au mieux selon mes besoins.

Je vous remercie de votre aide.

Cordialement,

Samuel

NI Certified LabVIEW Associate Developer (CLAD)
0 Compliments
Message 10 sur 13
4 948 Visites