le 06-26-2019 11:27 AM - dernière modification le 12-30-2024 04:23 PM par Content Cleaner
Bonjour,
Je vous écris car je fais face à un problème auquel je ne trouve aucune solution bien que cela me parait être un problème assez basique.
Voici ma configuration matérielle:
Je possède un châssis PXIe-1078 monté avec un contrôleur PXIe-8840.
J'ai également sur ce châssis 4 cartes permettant de faire l'acquisition de différents types de données à savoir:
- NI-6225 (M-series) (x2) pour acquérir des entrées analogiques
- NI-PXIe 4330 pour acquérir des couples via des ponts de jauges
- NI-6612 pour des compteurs
J'acquiert les données à une fréquence de 1 kHz via une boucle cadencée et souhaite bien entendu avoir une synchronisation correcte entre les cartes (données acquières dans la même milliseconde).
Lorsque j'analyse les données générées, je me rend compte que les données ne sont pas synchronisées lorsqu'elles proviennent de carte différentes (synchronisées lorsque provenant de la même carte mais carte non synchronisées entre elles).
En me focalisant sur les données générées par la carte NI 4330 - "Pont de jauges" et la carte Ni-6225 "Entrée analogique", il y a de manière aléatoire d'environ 1 à 4 dixièmes de secondes de décalage entre les données des deux cartes. En temporel, les données arrivent parfois d'abord de la carte jauge puis de la carte entrée analogique, ou l'inverse...
Je suspecte qu'un tel écart est potentiellement lié au retard au démarrage de la tâche entre les 2 cartes. Je m'efforce donc à démarrer les tâches simultanément en les plaçant dans la même structure Séquence déroulé comme expliqué ici: http://www.ni.com/tutorial/5376/fr/
Pour autant cela ne résout pas mon problème.
Je me suis penché pas mal de temps sur les méthodes utilisant la synchronisation avec partage d'une horloge commune, tâche esclave, tâche maitre et un trigger pour phaser parfaitement les acquisitions. Mais je n'ai pas réussi à faire marche le VI.
Pour autant, compte-tenu de l'ordre de grandeur du déphasage j'ai l'impression que mon problème est ailleurs.
Ma boucle principal tourne à 1 kHz et mon seul besoin est d'avoir les datas collectées dans la même milliseconde.
J'ai n'ai pas l'impression que la résolution de mon problème passe nécessairement par un phasage des données via une horloge commune avec trigger, etc.... mais que le problème peut être résolu plus simplement...
Si certains ont déjà eu à faire face à ce problème ou savent le moyen de le solutionner je suis preneur de vos conseils.
Merci
Cordialement,
le 06-27-2019 04:05 AM - dernière modification le 12-30-2024 04:24 PM par Content Cleaner
Bonjour,
Il va être difficile de pointer du doigt une cause particulière sans faire de tests comparatifs, mais mon principal suspect ici est la PXIe-4330 qui utilise un ADC de type DSA. Ce type d'ADC induit un délai à cause d'un filtre (voir Filter Group Delay ici https://www.ni.com/docs/en-US/bundle/pxie-4330-4331-features/resource/373029a.pdf ). Je m'attendrais par contre que le décalage soit constant dans ce cas.
Sans aller vers une synchronisation complète avec horloges + trigger, au moins mettre en place un démarrage synchronisé en partageant les triggers devrait beaucoup améliorer les choses. De toute façon, en restand dans le même chassis, les horloges sont toutes référencées sur le même oscillateur et donc ne devraient pas dériver.
Pour faire ça, on peut s'inspirer de la figure 2 ici : https://www.ni.com/en/support/documentation/supplemental/21/signal-based-synchronization-of-analog-i...
Thomas
le 07-03-2019 03:39 AM - dernière modification le 12-30-2024 04:24 PM par Content Cleaner
Bonjour Thomas, merci pour votre réponse.
Je vais essayer de mettre en place un système de démarrage synchronisé avec trigger même si la mise en place n'était pas si évidente lorsque j'avais essayé de le faire la première fois (messages d'erreurs récurrents).
Néanmoins j'ai un petit doute sur l'origine du délais lié à l'ADC. Car en fait le problème de déphasage entre les données des deux cartes auquel je suis confronté n'est pas uniquement dans le sens où les données provenant de la carte 4330 sont en retard. De manière aléatoire, elles sont soit en avance soit en retard de quelques centièmes de secondes.
J'ai l'impression de subir les écarts temporels de déclenchement des différentes tâches, que je force pour avoir lieu en simultané (au centième près) mais qui en pratique ne l'est peut-être pas si bien réalisé.
Est-il possible que je sois impacté par un retard logiciel comme expliqué ici ? -> https://www.ni.com/en/support/documentation/supplemental/21/signal-based-synchronization-of-analog-i...
"Si les VIs DAQmx - Démarrer une tâche de deux tâches indépendantes sont placés dans la même étape d'une structure Séquence déroulée, les deux tâches démarrent au même temps relatif. Cependant, la séparation entre les temps de départ exacts des deux tâches dépend du retard logiciel entre les exécutions des VI DAQmx - Démarrer une tâche et variera donc à cause du système d'exploitation. Cette méthode est représentée dans la figure 1 ; le démarrage des deux tâches d'entrée analogique est contrôlé à l'exécution par les VIs DAQmx - Démarrer une tâche dans la même étape d'une structure Séquence déroulée."
Cordialement,
Gaëtan
le 07-03-2019 04:11 AM
Bonjour Gaëtan,
C'est tout à fait possible que ce soit le problème, d'où ma proposition du trigger partagé. Quelques ms de décalage ne me semblent pas étonnants entre deux démarrages de tâches.