LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

How do I get data through while loop?

Hello,

I am using the "Cont Acq&Graph Voltage-Int Clk.vi" to acquire 7 analogic signals. It functions fine, however I don't seem to be able to pass the data (the analogic signals ) through the while loop. When I put 2 probes : the first one in the loop and the other one outside, I access data only in the inside loop.

Do I have to use local or global variables to pass the data trough the loop?


Any help would be great,


Thanks a lot,

Marc
0 Kudos
Message 1 of 6
(2,657 Views)
Hello Marc,

The data you have inside the loop will come out only when the loop is over - it's stop condition must be achieved.
You get them out in two possible forms - the last element or an array of all the elements, depending is you have indexing enabled or not - you can get this by right clicking on the tunnel.

Hope it helps.
Paulo
0 Kudos
Message 2 of 6
(2,654 Views)
Hello Paulo,

Thanks for your help.

I have just created global variables so that I can access analogic mesures when calling this VI. Is this a good solution too?

Thanks,


Marc
0 Kudos
Message 3 of 6
(2,653 Views)
Hello Marc,

You can allways use global variables to access data from outside the procedure that is running actually, but in my point of view you should avoid to do it, not only for memory purposes, but mainly because then your code will be much harder to understand.
If I understoood your application, you have a loop acquiring data and you want to process it. You can either make a subvi with the processing and place it inside the acquisition loop, or use some kind of data transfer to outside, like queues or even user event structures, there are some examples on how to use these in LabVIEW and on the Web.

Is you see the attached file (an example from LabVIEW), inside the look they are making the acquisition and afterwords writing to the file inside the loop.

Hope it helps,
Paulo
0 Kudos
Message 4 of 6
(2,651 Views)
Bonjour,

La meilleure solution consiste effectivement à effectuer le traitement des données à l'intérieur de la boucle.

Ceci dit, si vous voulez récupérer l'intégralité de vos données après l'acquisition, une bonne méthode consiste aussi à les enregistrer sur le disque dur dans un fichier binaire au fur et à mesure de l'acquisition.

Avantage : au format binaire, l'accès au disque est rapide (pas de formatage des données) et vous ne ralentissez donc pas l'acquisition.

Frédéric BOULLOT
Ingénieur d'Applications
National Instruments France
0 Kudos
Message 5 of 6
(2,612 Views)
Bonjour,

Merci pour votre réponse.

Pour suivre la valeur de 7 tensions aux bornes de 7 resistances,j'utilise l'exemple "Cont Acq&Graph Voltage-Int Clk.vi" ( tel quel mais en rajoutant une indexation de tableau pour obtenir la valeur de chaque voie) qui fait l'acquisition des 7 voies analogiques. J'en ai fait un sous-vi, avec des connecteurs qui permettent d'acceder aux valeurs des tensions. J'ai ensuite placé le sous VI ds mon VI principale et relié les connecteurs à des indicateurs numeriques pour pouvoir lire ces valeurs de tension. Mais rien ne s'affiche ( je ne sais pas pourquoi... il semble que je n'arrive pas a sortir de la boucle while ..?).

J'ai alors crée dans mon sous VI des variables globales pour récuperer les valeurs des tensions ( et j'ai deconnecté les connecteurs du sous-vi ). En replacant mon nouveau sous vi dans le vi principal, j'arrive a recuperer les valeurs des voies. Cependant j'observe une tension de 100 mV inferieure à la valeur lue par mon voltmetre ( dont je suis sûr de la precision ).( sous Max, les valeurs luent par les differentes entrees sont par contre bonne ).

Auriez vous une idée du probleme? J'initialise bien mes variables globales à zeros. Me conseillez vous d'utilliser les variables globales? ou de passer par les connecteurs? Et si oui, de quelle maniere puisque la boucle while semble m'en empecher.

Merci beaucoup pour votre aide,

Marc.
0 Kudos
Message 6 of 6
(2,591 Views)