Discussions au sujet de NI LabVIEW

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

Synchro modules tension (9242) et courant (9246) sur châssis compact DAQ 9174

Résolu !
Accéder à la solution

Bonjour ,

 

J'ai l'impression que je rencontre des problémes de synchronisation lors l'aquisition tension+courant sur 3 phases avec les modules NI9242 et  NI9246, sur un châssis compact DAQ 9174

 

Pourriez vous svp me confirmer que ces modules sont synchrones "nativement" (les acquisitions des 6 voies sont paramétrées dans la même tache sous MAX).

 

Dans l'exemple si dessous, je mesure les 3 phases d'un moteur brushless.

Je m'attend à avoir un déphasage entre tension et courant, avec la tension en avance sur le courant.

Hors j'observe l'inverse.

J'aimerai avoir la certitude que ça ne peux pas être un pbm de synchro HW avant d'investiguer les autres causes possibles. 

(Note: j'ai double-checké le câblage).

 

Merci d'avance !

 

2016-10-27 14_47_54-btwnmcps178 - TightVNC Viewer.png

 

Code : 

2016-10-27 14_59_29-btwnmcps178 - TightVNC Viewer.png

Avec detail du sous vi "Init des voies" : 

2016-10-27 14_53_05-btwnmcps178 - TightVNC Viewer.png

et de "Acqui" : 

2016-10-27 14_54_24-btwnmcps178 - TightVNC Viewer.png

Ainsi que la config de la tache sous MAX : 

2016-10-27 14_57_18-btwnmcps178 - TightVNC Viewer.png

 

 

 

 

 

0 Compliments
Message 1 sur 6
3 434 Visites

Bonjour,


Il faudrait fournir directement ton VI, cela permettrait d'analyser plus facilement ton programme.


A partir des captures d'écran, voici ce qui me choque :

1- La boucle productrice : Redescend la dans ton main, pas d'intérêt de mettre un sous vi là, et je déconseille vivement l'utilisation d'une variable globale pour l'arrêt, privilégie plutôt l'utilisation d'une référence de bouton

2 - La boucle consommatrice : Tu ne devrais pas mettre une structure séquence et un case côte à côté comme ça, c'est un non sens, puisque cela t'empêchera de prédire ta séquence d'exécution dans la boucle.

Soit tu rentre ton case dans le cas "timeout" de ta boucle évènement, puisque c'est à ce moment qu'elle serait exécuter. Soit tu ajotues une 3eme structure "while" dans ton main pour mettre le "dequeue" completement dissocié, ainsi il tournera indépendemment de ton case, évitant les buffers overflow en cas de conflit avec un évènement utilisateur.3

3- Dans ton VI acqui, il faut que tu cable ton cluster d'erreur à l'arrêt de la boucle, car là en cas d'erreur tu fais tourner le VI en boucle pour rien puisque le registre à décalage va répercuter ton erreur sur les itérations suivantes, inhibant la récupération de tes données.

4- Sous VI "init des voies" : élimine les points de coercitions en cablant le bon type de données.

 

 

Concernant ta question première, il faudrait voir sur quel type de cademencement est programmé ta tache, ce qui n'est pas indiquer dnas tes captures.

 

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
Message 2 sur 6
3 424 Visites

Hello, 

Merci pour tes conseils sur l'amélioration du code, je vais mettre ça en pratique.

 

Concernant la question sur le type de cadencement de la tâche, j'ai laissé la config par défaut (laisser le driver DAQMX choisir)

et l'horloge est l'horloge interne.

Je pense que l'horloge est la même partagée pour ces 2 modules, mais je n'ai pas la certitude, d'ou ma question.

2016-10-27 16_20_20-btwnmcps178 - TightVNC Viewer.png

 

Je posterai le code rapidement dés que j'ai fait les évols que tu cites

 

Merci de ton aide

 

 

 

 

0 Compliments
Message 3 sur 6
3 422 Visites

J'ai pour habitude de toujours créer mes taches sous labview, et jamais pas Max donc je suis pas forcément au point, mais j'ai une hypothèse : Vérifier que lorsque tu détermines ta fréquence d'échantillonage, tu choississes bien la source de synchro du DAQ, je me demande si au travers de cette fonction, tu ne bascules pas sur les horloges internes de chaque carte.

 

 

“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 6
3 419 Visites

Merci pour cette piste intérressante

En régle général je n'utilise pas non plus les tâches Max mais code en dur les fonctions DAQMX dans le programme.

Je vais probablement changer ça aussi.

 

Dans la fonction de cadencement, le seul choix qui ne renvoi pas d'erreur est "onboard clock"

Mais je ne sais pas si cela fait référence à l'horlgoge d'un module ou à celle du châssis.

 

J'aurrai bien mis la 2 éme ou éme ligne, qui semble faire référence explicitement à l'horloge du chassis, mais cela renvoi un erreur.

2016-10-27 17_45_44-btwnmcps178 - TightVNC Viewer.png

Je continu de creuser, merci pour ton aide.

 

 

0 Compliments
Message 5 sur 6
3 401 Visites
Solution
Accepté par l'auteur du sujet mknix

Je pense avoir trouvé la réponse à ma question ici.
S'agissant de 2 modules ADC delta-sigma, alors ils devraient être synchrones dans la même tache sans pbm.

 

Pour information, j'ai quand même testé l' acqui codée en DAQmx "pur" (tout dans le code), ou en tache sous MAX "pure" (Juste l'appel dans le code) ou "hybride" (config tache sous max + appel et cadencement dans le code) le resultat semble idhentique, j'ai le même dephasage dans tous les cas.

 

merci Michael pour la contribution et les conseils de programation.

 

 

 

 

 

 

 

 

 

 

0 Compliments
Message 6 sur 6
3 353 Visites