Ce document couvre les bases du cadencement et de la synchronisation dans NI-DAQ™mx dans l'ADE LabVIEW En particulier, les sujets abordés incluent la prise de mesures en mode mixte, la synchronisation au-delà des seules fonctionnalités analogiques et le partage de signaux de cadencement entre les périphériques d’acquisition de données (DAQ).
L'acquisition de données dans les environnements de programmation textuels est très similaire à la programmation LabVIEW NI-DAQmx car les appels de fonctions sont les mêmes que ceux des VIs NI-DAQmx pour en savoir plus voir : Utilisation de NI-DAQmx dans des environnements de programmation textuels.
De nombreuses applications nécessitent un contrôle précis du cadencement et la capacité de synchroniser les opérations. Par exemple, lorsque vous êtes en charge de mesurer et d’analyser un grand nombre de signaux hautement dynamiques, toute différence de phase peut être inacceptable. Il faut comprendre qu’une mesure d’un signal à un moment donné peut être évaluée en fonction d’un autre signal au même moment, et que ces acquisitions nécessitent donc un certain type de schéma de synchronisation. NI-DAQmx et l'environnement de développement graphique LabVIEW vous donnent les outils pour construire facilement ce type de systèmes d'acquisition de données.
NI-DAQmx fournit de nombreuses solutions puissantes pour vos besoins de cadencement et de synchronisation. Sa fonctionnalité native dans LabVIEW illustre la prochaine génération de programmation d'acquisition de données. Fini le temps où vous définissiez spécifiquement les chemins de câblage des signaux entre les périphériques - NI-DAQmx trouve automatiquement un moyen d'acheminer les signaux là où vous en avez besoin. Il vous suffit de spécifier la destination. En ce sens, le driver agit intelligemment en arrière-plan pour éliminer une opération de configuration complexe. Ce n'est cependant que la partie visible de l'iceberg de cadencement et de synchronisation...
Étant donné que la plupart des périphériques d’acquisition de données de la série E ont des fonctionnalités d’entrée analogique, de sortie analogique, de compteur/timer et d’entrée/sortie numérique, le défi consiste souvent à programmer le périphérique de manière à tirer parti de chaque type de mesure avec une certaine certitude qu’ils sont synchronisés entre eux. Certains cas d'utilisation incluent :
1) Entrée et sortie analogique démarrage simultané
Les opérations démarrent simultanément mais ne sont pas synchronisées
Entrée analogique synchronisée et sortie analogique
Les opérations peuvent être démarrées simultanément et configurées pour s’exécuter à la même vitesse
Les opérations peuvent partager l'horloge d'échantillonnage
2) Entrée analogique synchronisée et sortie analogique avec déclenchement
Partager le déclenchement matériel et l’horloge d’échantillonnage
3) Opérations analogiques et de compteur synchronisées
4) Le compteur crée un train d'impulsions comme horloge pour le fonctionnement analogique
5) Opération de compteur de portes d'horloge analogique
Dans l'API NI-DAQmx, vous pouvez utiliser un très petit nombre de VIs pour répondre à la plupart de vos besoins de cadencement et de synchronisation. En particulier, les VIs DAQmx - Cadencement et DAQmx - Déclenchement vous permettent de spécifier à quel intervalle vos voies doivent être balayées et quand elles doivent démarrer (ou s'arrêter). En tirant parti du polymorphisme de LabVIEW, ces deux VIs sont capables de définir le cadencement et le déclenchement non seulement des signaux d’entrée analogique, mais aussi de la sortie analogique, du matériel à compteurs/timers et des entrées/sorties numériques précités (voir Figure 1).
Un cas d'utilisation courant qui démontre des problèmes de synchronisation est la situation où vous souhaitez qu'une opération d'entrée et de sortie analogique se produise en utilisant la même horloge. Dans ce cas, vous auriez besoin de deux chaînes de code : une pour l'entrée analogique et une pour la sortie analogique. Dans chacun, utilisez le VI DAQmx - Cadencement pour spécifier l'opération continue désirée. Pour le cadencement de la sortie analogique, laissez l’entrée « source » comme défaut. Cela signifie que votre opération de sortie analogique fonctionnera selon l’horloge de sortie analogique par défaut, qui est l’horloge interne. Sur le VI DAQmx - Cadencement d’entrée analogique, il vous suffit de spécifier la « source » comme horloge d’échantillonnage de sortie analogique. Cela définit les opérations d’entrée analogique et de sortie analogique pour agir sur le signal de cadencement de la sortie analogique (voir Figure 2).
L'exemple précédent a montré comment lier des signaux de cadencement analogiques. Que se passe-t-il lorsque vous voulez traiter ensemble des signaux analogiques et numériques mixtes ? Pouvez-vous toujours vous attendre à la même intégration transparente ? La réponse est oui.
Imaginez que vos mesures analogiques dépendent d’un signal d’horloge externe ou non traditionnel : prenez un échantillon toutes les millisecondes pendant 10 millisecondes, attendez 3 millisecondes, répétez. Dans ce cas, vous pouvez utiliser la fonctionnalité de compteur sur un périphérique de la série E pour générer le signal de cadencement désiré, mais comment dire au côté analogique de l’utiliser comme horloge ? La réponse est, encore une fois, le VI DAQmx - Cadencement. En spécifiant que votre « source » est la broche de sortie interne d’un compteur, la sortie compteur deviendra l’horloge d’entrée analogique sans utiliser de fil externe pour connecter des broches sur un bloc de connexion (voir Figure 3).
La facilité d'utilisation démontrée avec la synchronisation s'étend également au déclenchement. En utilisant le VI DAQmx - Déclenchement, vous pouvez facilement définir une opération pour attendre un signal de déclenchement interne ou externe (analogique ou numérique). Un bon exemple est le déclenchement d'événements. Avec le déclenchement d'événement, le périphérique ignore les N premiers déclenchements avant de lancer une acquisition. Pour ce faire, un compteur est utilisé pour créer l'impulsion unique afin de lancer l'acquisition d'entrée analogique. Le compteur utilise les N premiers déclenchements pour créer la partie basse de l'impulsion et le déclenchement valide pour démarrer la partie haute de l'impulsion et déclencher l'acquisition réelle. Dans l'exemple suivant, il y a deux lignes de code parallèles ; le haut configure l'opération d'entrée analogique et le bas configure un compteur. La source du déclenchement est la sortie du compteur 0, et le compteur 0 a été configuré pour renvoyer une impulsion de déclenchement après avoir entré sa "ntième" impulsion. Dans ce cas, la base de temps interne de 100 kHz est sélectionnée comme source d’entrée, mais vous auriez également pu spécifier un emplacement externe pour la source, vous permettant de configurer un déclenchement retardé à partir d’un train d’impulsions externe (voir Figure 4).
Remarque : Dans les deux derniers exemples, Ctr0SortieInterne et Crt0Sortie sont référencés comme emplacement d'une horloge ou d'un signal de déclenchement. Ctr0Sortie interne est un signal disponible pour les routes internes à la carte. Crt0Out doit être utilisé lors du routage de la sortie compteur vers PFI et RTSI. L'exemple de la figure 4 aurait pu utiliser CtrOInternal Out au lieu de Ctr0Out.
Pour acheminer des signaux d'un emplacement d'un périphérique à un autre comme le démontrent les exemples précédents, vous devez prendre en considération quelques éléments. Premièrement, NI-DAQmx est-il configuré pour acheminer ces signaux ? Deuxièmement, quels signaux sont disponibles pour le routage ? Comme la capacité de transmettre ces signaux repose sur un chemin de communication intermédiaire, utilisez le bus RTSI (Real Time System Integration).
Le bus RTSI (disponible sur un périphérique PCI en tant que connecteur à 34 broches ou inclus dans le connecteur de fond de panier sur PXI) expose 7 broches sur lesquelles vous pouvez envoyer des signaux de cadencement d'un périphérique à un autre (ou en interne sur un périphérique). Avant de pouvoir utiliser ce chemin de communication, informez le driver de la manière dont les périphériques du système sont connectés. Pour les périphériques PCI, connectez les périphériques appropriés avec un câble RTSI et enregistrez cette connexion dans Measurement & Automation Explorer (MAX). Avec MAX 3.0, cela se fait en cliquant avec le bouton droit sur Périphériques NI-DAQmx et en choisissant Créer un nouveau périphérique NI-DAQmx >>Câble RTSI. Cela ajoutera un câble RTSI à votre liste de Périphériques NI-DAQmx. Pour les systèmes PXI, il vous suffit d'identifier le système PXI en cliquant avec le bouton droit sur Système PXI >> Identifier comme. Le bus RTSI est appelé bus de déclenchement PXI dans les systèmes PXI. (La figure 5 montre un câble RTSI connecté à un périphérique DAQ.)
Pour voir quels signaux peuvent être acheminés dans un seul périphérique DAQ, vous pouvez afficher l'onglet Routage du périphérique dans MAX. Lorsque vous cliquez sur le périphérique DAQ dans MAX, vous verrez les attributs du périphérique apparaître dans la fenêtre à droite de l'arborescence de configuration. Si vous choisissez l'onglet Routage du périphérique en bas de cette fenêtre, chaque route de signal disponible est répertoriée. Les carrés verts indiquent les routes qui peuvent être effectuées directement, alors que les carrés jaunes indiquent les routes qui doivent passer par un type de sous-système sur le périphérique à effectuer. Les sous-systèmes intermédiaires nécessaires pour terminer la route sont répertoriés dans la boîte Sous-système utilisé lorsque vous placez votre curseur sur un carré jaune. Cela peut être utile car les routes indirectes peuvent parfois interférer avec d'autres opérations que vous effectuez (Figure 6).
Les VIs DAQmx - Cadencement et DAQmx - Déclenchement offrent des fonctionnalités de haut niveau pour configurer votre opération, mais il arrive que des informations de bas niveau deviennent importantes. Imaginons que vous ayez besoin de savoir sur quelle base de temps une opération de sortie analogique se met à jour ou pour quel niveau un déclenchement sur front analogique a été configuré. Ces informations sont exposées via les nœuds de propriété DAQmx - Cadencement et DAQmx - Déclenchement (voir Figure 7). À partir de ces nœuds de propriété, vous pouvez accéder à toutes les valeurs configurées de manière pertinente, soit pour les définir, soit pour les afficher.
Un exemple où le nœud de propriété DAQmx - Déclenchement expose des fonctionnalités complexes est l'option redéclenchable pour les compteurs. Dans les API précédentes, rendre un compteur redéclenchable changeait complètement le code de l'opération compteur. Avec l'API NI-DAQmx, la simple inclusion d'un nœud de propriété DAQmx - Déclenchement, défini à Démarrer.Redéclenchable, fait passer le compteur d'un déclenchement unique à une opération redéclenchable (voir Figure 8).
Les exemples précédents ont montré certaines des façons dont vous pouvez lier des opérations (par déclenchement ou cadencement) sur le même périphérique. Mais que se passe-t-il si la fonctionnalité d’un périphérique ne permet pas la caractérisation complète d’un système ? Il arrive certainement que le nombre de voies d'un système nécessite la combinaison de plusieurs périphériques. Si chaque périphérique contient une connectivité RTSI, nous disposons des mêmes options de synchronisation que sur un seul périphérique.
Pour afficher une connexion entre des périphériques, cliquez avec le bouton droit sur le câble RTSI dans MAX et sélectionnez chacun des périphériques appropriés sous Ajouter un périphérique au câble. Une fois que chacun des périphériques a été ajouté, NI-DAQmx tirera désormais parti de tous les chemins de routage disponibles entre les périphériques (la synchronisation sera transparente). S'il s'agit d'un périphérique PCI, vous devrez physiquement ajouter le câble RTSI entre les périphériques.
Vous pouvez maintenant référencer les broches de cadencement ou de déclenchement appropriées d'autres périphériques comme "source" de vos VIs DAQmx - Cadencement et déclenchement. (La gestion du bus RTSI est cachée à l'utilisateur par défaut, bien qu'il existe une option pour acheminer explicitement certains signaux vers des broches RTSI spécifiques en utilisant le VI Export Signal.vi.) L'exemple suivant montre comment partager des signaux de cadencement d'un périphérique à un autre pour une opération d'entrée analogique (voir Figure 10).
Notez que deux opérations distinctes ont lieu ici sur deux périphériques distincts. L'horloge d'échantillonnage du périphérique 1 a été configurée comme horloge d'échantillonnage du périphérique 2 simplement en disant à NI-DAQmx d'utiliser Dev1/ai/SampleClock comme horloge d'échantillonnage du périphérique 2. NI-DAQmx trouve comment réaliser cette route pour garantir que les données seront prises à la même vitesse sur les deux périphériques d’acquisition de données.
La plupart des périphériques DAQ de NI contiennent des fonctionnalités qui vous permettent de partager le cadencement et le déclenchement. Pour tirer parti de cette fonctionnalité, NI-DAQmx, avec sa facilité d’utilisation caractéristique, son analyse simplifiée et ses performances accrues, vous donne les outils pour vous assurer que vos mesures se produisent dans le même domaine temporel.