En faire plus avec LabVIEW FPGA et les modules numériques de la Série C à l’aide de CompactRIO

Aperçu

National Instruments propose plus de 20 Modules numériques de la Série C que vous pouvez utiliser pour entrer et sortir des signaux numériques dans un système NI CompactRIO. Les modules numériques de la Série C sont disponibles dans une variété de niveaux de signaux, de vitesses et de voies afin que vous puissiez construire un système répondant à vos spécifications. Les modules numériques constituent un excellent moyen d'accomplir des tâches de base telles que la surveillance des états ou l'allumage et l'arrêt des machines. Lorsque vous utilisez CompactRIO avec DAQmx , vous pouvez même implémenter des tâches de compteur à l'aide de l'API DAQmx, qui a l'avantage de simplifier la programmation. Cependant, vous pouvez étendre encore davantage les capacités de vos modules numériques lorsque vous utilisez LabVIEW FPGA.

Cet article examine sept façons d’augmenter les fonctionnalités de votre module numérique. Les exemples ci-dessous montrent comment programmer en utilisant LabVIEW FPGA et FPGA Interface. Pour que ces exemples fonctionnent correctement, ils doivent être configurés correctement pour votre châssis NI CompactRIO spécifique.

Remarque : Chaque module numérique de la Série C fournit des caractéristiques de cadencement différentes. Assurez-vous de sélectionner un module avec les caractéristiques de cadencement qui répondent aux besoins de votre application. De plus, les exemples de chemins de fichiers répertoriés ci-dessous concernent LabVIEW 2012. À partir de LabVIEW 2013, les exemples FPGA ont été remaniés et placés dans de nouveaux chemins de fichiers. Les chemins des fichiers pour les exemples LabVIEW 2013 et suivants sont les nouveaux exemples qui correspondent étroitement aux exemples utilisés dans cet article.

Contenu

Comptage d’événement

Le comptage d'événements est l'une des tâches les plus simples que vous pouvez accomplir avec un module numérique.  Le comptage d’événements, processus de comptage de chaque front montant et/ou descendant sur un signal numérique, est utile dans une grande variété d’applications, de la mesure d’un moteur à la prise en compte du volume de liquide circulant dans un tuyau. Pour programmer avec le driver NI-DAQmx, vous devez utiliser les compteurs embarqués dédiés ou un module compteur séparé pour effectuer des opérations de comptage, ce qui est suffisant pour de nombreuses applications.  Vous pouvez également créer vos propres applications de compteur en utilisant le FPGA, ce qui augmente le nombre de compteurs que vous pouvez implémenter sans avoir besoin d'un module de compteur supplémentaire.  Le nombre de compteurs n'est limité que par le nombre de lignes numériques dans votre système et la taille de votre FPGA.

L'exemple suivant montre comment implémenter un compteur d'événements en utilisant LabVIEW FPGA . L'exemple utilise la logique booléenne pour déterminer si un front montant ou descendant a eu lieu. Cet exemple se trouve dans l'Outil de recherche d'exemples LabVIEW et navigue vers : 

LabVIEW 2013 et versions ultérieures : Entrées et sorties matérielles»CompactRIO»Génération et traitement de signaux»Numérique»Compteurs»Compteur de fronts»Compteur de fronts.lvproj.

LabVIEW 2012 et versions antérieures : Entrées et sorties matérielles»CompactRIO»Principes de base FPGA»Compteurs»Compteurs d'événements»Ctr d'événements, chaque front – cRIO.lvproj

Configuration de votre VI de comptage d'événements

  1. Connectez la ligne que vous voulez compter à n'importe quelle ligne d'entrée numérique.
  2. Ouvrez et modifiez le diagramme du VI Quad Ctr pour que la voie d'entrée numérique du signal physique remplace les commandes booléennes A et B.
  3. Exécutez le VI pour le compiler et l'utiliser en mode interactif.

Figure 1. Modifiez votre code pour compter les signaux externes

 

PWM

Utilisez la modulation de largeur d'impulsion (PWM) pour émettre une série d'impulsions numériques afin de contrôler un circuit analogique. Vous pouvez varier la longueur et la fréquence de ces impulsions pour déterminer la puissance totale fournie au circuit. Les signaux PWM sont le plus couramment utilisés pour contrôler des moteurs CC, mais s’appliquent à de nombreuses autres applications, telles que le contrôle de vannes ou de pompes ou le réglage de la luminosité d’une LED.

Le train d'impulsions numérique qui constitue un signal PWM a une fréquence fixe et varie la largeur d'impulsion pour modifier la puissance moyenne du signal. Le rapport largeur d'impulsion/période est appelé rapport cyclique du signal. Par exemple, si un signal PWM a une période de 10 ms et que ses impulsions sont de 2 ms, on dit que le signal a un rapport cyclique de 20 %. En contrôlant le rapport cyclique du PMW, vous pouvez contrôler la puissance utilisée par le circuit analogique. Vous pouvez utiliser les modules numériques NI pour générer votre PWM de contrôle ou mesurer le rapport cyclique d’une PWM existante.

Si votre contrôleur CompactRIO supporte la programmation NI-DAQmx, vous pouvez également implémenter des tâches PWM dans NI-DAQmx. Cependant, comme PWM requiert des compteurs, le nombre de tâches PWM est limité par le nombre de compteurs embarqués dans votre CompactRIO. Programmer cette tâche dans FPGA augmente le nombre de tâches PWM que vous pouvez implémenter.

Figure 2. Modulation de largeur d'impulsion

L'exemple suivant utilise le VI Loop Timer.vi pour contrôler la longueur des valeurs haute et basse d'une impulsion. Cet exemple se trouve dans l'Outil de recherche d'exemples et navigue vers :

LabVIEW 2012 et versions antérieures : Entrées et sorties matérielles»CompactRIO»FPGA Fundamentals»Compteurs»Compteurs d'événements»PWM Out, Simple - cRIO.lvproj

LabVIEW 2013 et versions ultérieures : Entrées et sorties matérielles»CompactRIO»Génération et traitement de signaux»Numérique»Modulation de largeur d'impulsion»Génération PWM»Projet PWM Generation.lv.

 

Configuration de votre VI PWM

  1. Connectez la ligne que vous voulez compter à n'importe quelle ligne d'entrée numérique.
  2. Modifiez le diagramme du VI PWM en sortie, simple avec la voie de sortie numérique sur laquelle vous voulez générer votre PWM.
  3. Exécutez le VI pour le compiler et l'utiliser en mode interactif.

Figure 3. Modifiez votre code pour générer un signal PWM

 

Encodeurs

Un encodeur est un dispositif électromécanique utilisé pour mesurer le mouvement ou la position, dans des applications telles que les tests de dispositifs médicaux ou de machines industrielles. La plupart des encodeurs utilisent des capteurs optiques pour fournir des signaux électriques sous forme de trains d'impulsions. Plusieurs trains d'impulsions fournissent plus d'informations sur le signal. Un module numérique tel que le NI 9401 peut capturer ces trains d’impulsions et utiliser le FPGA pour traduire les signaux en informations de mouvement, de direction ou de position. Vous pouvez également utiliser les modules numériques de la Série C pour imiter la sortie d’un encodeur pour d’autres applications telles que les tests HIL (Hardware in the Loop). Étant donné qu’ils desservent de nombreux types d’applications, les encodeurs peuvent avoir de nombreuses formes, tailles et niveaux de sortie différents.  NI propose plusieurs modules numériques que vous pouvez intégrer à l’encodeur spécifique requis par votre application. Utilisez le NI 9421 pour lire des signaux de 0 à 24 V dans un environnement industriel. Utilisez le NI 9401 pour lire la logique transistor à transistor (TTL) ou les signaux 0 – 5V dans un environnement de laboratoire propre.

Encore une fois, si votre contrôleur CompactRIO supporte la programmation NI-DAQmx, vous pouvez aussi implémenter des tâches d'Encodeurs dans NI-DAQmx, mais le nombre de tâches d'Encodeur sera plus limité. Programmer cette tâche dans FPGA augmente le nombre de tâches d'Encodeur que vous pouvez avoir.

L'exemple suivant montre comment utiliser LabVIEW FPGA et votre système CompactRIO pour implémenter des mesures d'encodeur. L'exemple utilise la logique booléenne pour déterminer si un encodeur en quadrature AB tourne et dans quelle direction il tourne. Cet exemple se trouve dans l'Outil de recherche d'exemples et navigue vers : 

LabVIEW 2013 et versions ultérieures : Toolkits et modules»FPGA»CompactRIO»Génération et traitement de signaux»Numérique»Encodage en quadrature»Quadrature Decoder»Quadrature Decoder.lvproj.

LabVIEW 2012 et versions antérieures : Entrée et sortie matérielle»CompactRIO»Principes de base FPGA»Compteurs»Entrée en quadrature»Quad Ctr – cRIO.lvproj.

Configuration de votre application d'encodeur

    1. Connectez vos signaux A et B à deux lignes numériques.
    2. Modifiez le diagramme du VI Quad Ctr.vi avec la voie d'entrée numérique du signal physique pour remplacer les commandes booléennes A et B.
    3. Exécutez le VI pour le compiler et l'utiliser en mode interactif.

Figure 4. Utiliser la logique booléenne dans le FPGA pour suivre la position

 

Fréquence

La fréquence d’un signal numérique est la vitesse à laquelle la période se produit ; où la période est simplement définie comme le temps entre les fronts montants ou descendants, ou l’inverse de la période avec une unité de Hertz (Hz). La fréquence d'un signal numérique peut être extrêmement utile dans une grande variété d'applications, de la détermination de la vitesse ou de la vitesse angulaire au décodage de l'intensité d'une source de lumière. Utilisez LabVIEW et CompactRIO pour programmer votre module numérique de la Série C afin de transférer le signal numérique vers le FPGA, qui utilise un algorithme de décodage de période. La période est ensuite transférée à une application hôte, qui extrapole la fréquence. Après avoir acquis la fréquence, vous pouvez la mapper à un phénomène physique connu.  

Encore une fois, en programmant des tâches d'entrée de fréquence dans LabVIEW FPGA, vous pouvez augmenter le nombre de tâches d'entrée FPGA par rapport à NI-DAQmx. Cela peut être particulièrement utile, car certaines tâches d'entrée de fréquence nécessitent deux compteurs.

image.jpg

Figure 5. Période et fréquence d'un signal numérique

L'exemple suivant décrit comment implémenter des mesures de fréquence en utilisant LabVIEW FPGA et un système CompactRIO. L'exemple utilise la logique booléenne pour déterminer quand un front se produit, puis utilise l'horloge FPGA pour déterminer le temps entre les impulsions. Vous trouverez cet exemple dans l'Outil de recherche d'exemples en allant dans LabVIEW et en naviguant vers :

LabVIEW 2013 et versions ultérieures : Entrées et sorties matérielles»CompactRIO»Génération et traitement de signaux»Numérique»Mesure de période et de phase»Mesure de période et de phase.lvproj.

LabVIEW 2012 et versions antérieures : Entrées et sorties matérielles»CompactRIO»Principes de base FPGA»Compteurs»Mesure de fréquence»Nombre et période – cRIO.lvproj.

Configuration de votre mesure de fréquence

  1. Connectez physiquement le signal d'intérêt à une ligne numérique.
  2. Modifiez le diagramme du VI Compte et période (FPGA) avec la voie d'entrée numérique du signal physique pour remplacer les commandes booléennes A et B.
  3. Exécutez le VI pour le compiler et l'utiliser en mode interactif.
     

Figure 6. Déterminer la période et la fréquence d'un signal numérique

En savoir plus sur l'utilisation du matériel NI pour les mesures de fréquence https://www.ni.com/fr/shop/data-acquisition/measurement-fundamentals/frequency-measurements-how-to-guide.html

Filtrage numérique

Des facteurs environnementaux tels que le bruit ambiant ou le « rebond » mécanique d’un commutateur ou d’un capteur industriel peuvent compliquer la réception de signaux clairs par votre système d’acquisition de données. Un système CompactRIO avec FPGA vous permet de mettre en œuvre une technique appelée filtrage numérique ou anti-rebond numérique. Le filtrage numérique consiste à vérifier qu'un signal est resté à son nouveau niveau pendant une période de temps spécifiée avant de permettre au changement de signal de se propager à l'aspect traitement du système. Cette méthode filtre les impulsions transitoires ou le bruit sur la ligne et réduit le comportement indésirable dans le système.

L'exemple suivant montre comment filtrer des lignes numériques en utilisant la logique booléenne, LabVIEW FPGA et un système CompactRIO.  Le signal doit rester à son nouveau niveau pendant la durée spécifiée pour que l'entrée filtrée reflète le changement. Vous trouverez cet exemple dans l'Outil de recherche d'exemples en allant dans LabVIEW et en naviguant vers :

LabVIEW 2012 et versions antérieures : Entrées et sorties matérielles»CompactRIO»Principes de base FPGA»Filtre numérique»Filtre numérique – continu – cRIO.lvproj. 

LabVIEW 2013 et versions ultérieures : Un exemple équivalent n'existe plus. Vous pouvez faire glisser l'extrait ci-dessous dans un VI vide.

 

Filtrage de votre ligne numérique

  1. Connectez physiquement le signal d'intérêt à une ligne numérique.
  2. Modifiez le diagramme du VI Filtre numérique – continu avec la voie d’entrée numérique du signal physique pour remplacer la commande d’entrée.
  3. Exécutez le VI pour le compiler et l'utiliser en mode interactif.

Figure 7. Filtrez votre signal numérique en utilisant le FPGA

Communication

Les systèmes CompactRIO et les modules de la Série C incluent de nombreux protocoles de communication standard, qui varient du protocole série et Ethernet aux protocoles industriels tels que PROFIBUS et MODBUS. Cependant, ces protocoles standard peuvent être limités dans leur capacité à communiquer avec des périphériques qui utilisent des protocoles ou des connecteurs différents.  Un système CompactRIO vous permet de toujours communiquer avec ces périphériques, en utilisant un module numérique et LabVIEW FPGA.

Figure 8. Implémenter le protocole de communication SPI avec LabVIEW et LabVIEW FPGA

Reportez-vous à Comprendre le bus SPI avec NI LabVIEW pour une explication plus approfondie de ce protocole, et à Implémenter le protocole de communication SPI dans LabVIEW FPGA pour un exemple détaillé d'implémentation du protocole de bus SPI avec LabVIEW FPGA.

Déclenchement personnalisé

Le déclenchement est une fonctionnalité essentielle dans tout système d’acquisition ou de contrôle de données. Utilisez le déclenchement pour la synchronisation, les alarmes ou les tâches de démarrage/arrêt. Cependant, les fonctions de déclenchement standard de NI-DAQmx n'offrent pas de fonctionnalités personnalisées, telles que la possibilité d'utiliser plusieurs déclenchements d'entrée ou de déclencher sur l'un des fronts ou les deux.  Utilisez le FPGA avec un système CompactRIO pour créer des applications de déclenchement personnalisées.

Reportez-vous à Creating Triggers and Counters (Module FPGA) pour voir un exemple montrant comment générer un déclenchement uniquement lorsqu'un pattern numérique se produit. 

Figure 9. Générer un déclenchement uniquement lorsqu'un pattern numérique se produit

Étapes suivantes