Multifunction DAQ

cancel
Showing results for 
Search instead for 
Did you mean: 

Acquisition boucle while parallèle à différent cadencement

Bonjour

 

Je rencontre un problème dans mon code DAQ sur Agilent 34980A

Je souhaiterais dans une machine à etat et deux boucle parallele effectuer une acquisition de mesure à deux cadence différente.

2 soucis majeurs dans mon code : voir pj

  1. Je ne comprends pas pourquoi la machine à état ne prend pas en compte mon bouton "stop". il passe à TRUE mais rien ne se passe ...
  2. Je voudrais écrire les données des deux boucles dans un seul fichier, hors quand je sors de la boucle while de cadencement les données semblent ne plus passer en dehors des boucles parallèle pour passer ne suite dans un fichier tableur.

Pouvez vous me donner des pistes pour avancer svp 

 

merci d'avance,

 

 

0 Kudos
Message 1 of 6
(2,914 Views)

Bonjour Nicolas,

 

Pour répondre à tes deux questions :

  1. Ton bouton "Stop" ne fonctionne pas, tout simplement parce que LabVIEW ne lit sa valeur qu'une fois. Il faut comprendre que LabVIEW fonctionne sur le principe du flux de données, c'est à dire que pour s'exécuter un noeud a besoin d'avoir toutes ses entrées disponibles et ainsi de suite. Plus d'infos : http://www.ni.com/getting-started/labview-basics/f/dataflow. Ici, ta machine d'état reste bloquée dans l'état "Acquisition". Les boucles while internes de cet état ne s'arrêtent que lors d'une erreur et "empêchent" donc la machine d'état de continuer tant qu'elles n'ont pas terminer leur exécution. En d'autres termes, ces deux boucles ne s'arrêtent pas, l'état n'a pas fini de s'exécuter, aucune action n'est prise en compte. Pour régler cela, il faudrait placer ton bouton dans les boucles ou carrément retirer ces boucles. Pour rester dans l'état "Acquisition" il suffira de faire comme tu l'as déjà fait, utiliser un sélecteur qui lit la valeur du "Stop". Mais au vu de ce qu'il y a dans les deux autres états, je simplifierais même l'architecture (voir PJ).
  2. Je ne suis pas sûr du type d'enregistrement que tu veux faire. Les données doivent-elles être écrites pendant l'acquisition ? Doivent-elles être entrelacées ? Quel est le format d'écriture en sortie ?

A+

Maxime L
Certified LabVIEW Architect
National Instruments
0 Kudos
Message 2 of 6
(2,888 Views)

En version 2012.

Maxime L
Certified LabVIEW Architect
National Instruments
0 Kudos
Message 3 of 6
(2,884 Views)

Bonjour Maxime,

 

D'accord, merci pour ce premier élément de réponse,

je vais donc faire deux boucles parallèles avec donc deux machines à état pour les étapes acquisition / reset / intialize. Par  contre je vais devoir mettre les bouton en commutation à l'appui et il me semble que je n'arrive pas à les refaire passer à l'état  initial après appui est ce normal ?

Je remettrai le VI une fois modifier en pj.

 

2.Concernant l'enregistrement, je préférerai écrire les données des deux boucle pendant l'acquisition et les écrire sur 1 seul fichier tableur xls.  Est ce possible ? Car dès que je sors des fils des boucle while, je n'ai plus de données ...

 

Merci d'avance, désolé pour mon délai de réponse, et merci pour ton  exemple VI

 

a+

0 Kudos
Message 4 of 6
(2,849 Views)

Bonjour Nicolas,

 

1) Oui c'est normal. Avec une action de type commutation seul l'appui sur le bouton permet de modifier sa valeur (http://zone.ni.com/reference/fr-XX/help/371361H-0114/lvhowto/changemechactofboolswitch/). Tu peux par contre utiliser un nœud de propriété avec la propriété "Valeur" pour remettre le booléen à Faux, en initialisation par exemple.

 

2) Tu peux écrire dans un seul fichier si tu utilises le format TDMS. Pour cela il faudra que tu écrives dans deux groupes différents (voir : https://forums.ni.com/t5/LabVIEW/Is-it-ok-to-write-to-the-same-TDMS-file-in-two-separate-loops/m-p/7...)

 

N'hésite pas si tu as des questions 🙂

Maxime L
Certified LabVIEW Architect
National Instruments
0 Kudos
Message 5 of 6
(2,839 Views)

Bonjour Maxime,

 

Pour le moment j'en suis encore à essayer de faire fonctionner ma machine à état. Plusieurs problèmes se posent à moi : 

  • je suis constamment en erreur sur ma sortie VISA OPEN et VISA READ je ne comprends pas pourquoi, ni la signification du code erreur
  • J'ai un retour indicateur "visa ressource name out" qui ne me donne pas de lecture du visa source
  • Lorsque j'enclenche le bouton "jouer", il procède à une lecture puis bloque en "arrêt et initialisation" plusieurs seconde puis reprend tout seul après qqs secondes en lecture
  • lorsque j'appuie sur le bouton "arrêt", ma fenêtre while n°1 clignote ...

Je ne sais pas si tu peux tester le vi, j'ai repris l'architecture de la même façon que tu me l'as indiqué plus haut, c'est à dire deux boucle parralele

je réglerai le problème d'écriture de fichier une fois la machine à état fonctionnelle.

 

Merci d'avance,

 

Nicolas

0 Kudos
Message 6 of 6
(2,832 Views)