Vous pouvez concevoir des systèmes de déploiement temps réel avec des E/S EtherCAT programmables avec des FPGA (Field-Programmable Gate Arrays). Le châssis esclave modulaire EtherCAT RIO fournit des E/S d'extension intelligentes pour NI CompactRIO et d'autres contrôleurs d'automatisation programmables (PAC) qui prennent en charge EtherCAT. Utilisez le NI LabVIEW FPGA Module pour programmer le châssis esclave EtherCAT RIO, qui vous offre des périphériques distribués programmables capables de cadencement personnalisé, de contrôle en boucle fermée et de traitement en ligne.
Le besoin d’E/S d'extension apparaît souvent lors de la conception d’un système temps réel avec un grand nombre de voies ou une surface au sol étendue. Les E/S d'extension vous permettent d'ajouter des mesures distribuées ou d'étendre l'application d'origine. Cependant, construire votre propre architecture de synchronisation pour maintenir le déterminisme de ce système de contrôle peut rapidement devenir compliqué et inévolutif. Il existe aujourd’hui des technologies d’E/S Ethernet temps réel, telles que EtherNet/IP, EtherCAT et PROFINET, qui peuvent simplifier ces applications. Envisagez donc d’utiliser un réseau d’E/S distantes en temps réel conçu pour maintenir une communication déterministe avec le contrôleur principal.
Le châssis d'extension EtherCAT RIO ajoute des E/S EtherCAT à votre système CompactRIO, PXI ou à votre contrôleur industriel. Ce châssis robuste à 8 emplacements pour modules de la Série C communique de manière déterministe via un protocole Ethernet temps réel ouvert appelé EtherCAT. Vous pouvez étendre vos applications critiques en enchaînant plusieurs châssis d’extension EtherCAT RIO à partir du contrôleur maître EtherCAT. De plus, la configuration logicielle et l'expérience de programmation LabVIEW sont conçues pour être faciles à utiliser lors de l'ajout d'E/S EtherCAT temps réel.
Figure 1. Système EtherCAT typique utilisant des contrôleurs maîtres NI et des périphériques esclaves distribués
Vous pouvez programmer le châssis esclave EtherCAT RIO avec les modules LabVIEW Real-Time et LabVIEW FPGA. La programmation en mode balayage NI avec LabVIEW Real-Time offre une expérience pratique prête à l'emploi pour des E/S d'extension faciles. Le mode de balayage NI vous donne un accès instantané aux valeurs d'E/S physiques sur les périphériques esclaves EtherCAT RIO à l'aide de variables d'E/S simples par glisser-déposer, ainsi que de panneaux de test en direct pour surveiller les performances du système et effectuer un dépannage avancé. Alors, pourquoi ajouter de FPGA intelligence à vos E/S d’extension EtherCAT ?
La programmation du châssis esclave EtherCAT RIO en mode FPGA ouvre la voie à un nouveau niveau de personnalisation et de flexibilité pour votre application. En intégrant des capacités décisionnelles, il réduit le temps de réponse et réagit rapidement à l’environnement sans interaction avec l’hôte. Le périphérique intelligent peut également décharger le traitement du maître en effectuant une analyse en ligne, un déclenchement personnalisé et une manipulation du signal au nœud. De plus, l'utilisation de LabVIEW FPGA ouvre la voie à des experts du domaine pour prototyper et implémenter rapidement leurs idées sans avoir à être un programmeur VHDL.
Si vous connaissez la programmation dans LabVIEW FPGA pour CompactRIO et d'autres plates-formes d'E/S reconfigurables NI, il existe quelques différences entre la programmation du FPGA local et du FPGA pour EtherCAT RIO. Dans LabVIEW 2009, NI a introduit des variables d'E/S définies par l'utilisateur pour synchroniser les données FPGA de l'esclave avec le traitement temps réel du maître. Ces variables d’E/S définies par l’utilisateur sont également le seul moyen de transférer des données entre le programme temps réel du contrôleur et le programme FPGA du châssis d’extension.

Tableau 1. Comparez les méthodes de transfert FPGA pour les châssis locaux et d'extension.
Après avoir ajouté la cible FPGA à l'esclave EtherCAT RIO dans la fenêtre de projet LabVIEW, vous pouvez créer une variable d'E/S définie par l'utilisateur en cliquant avec le bouton droit sur le périphérique EtherCAT RIO et en sélectionnant Ajouter»Variable définie par l'utilisateur. Vous pouvez définir le nom de la variable, le type de données et la direction des données (de l'hôte au FPGA ou vice versa) à partir de la fenêtre Propriétés. Il est important de noter qu'il existe une limite au nombre de variables d'E/S définies par l'utilisateur que vous pouvez créer en mode FPGA de l'esclave. Le RIO EtherCAT peut contenir au total 512 octets de données en entrée et 512 octets de données en sortie pour les variables d'E/S en mode balayage et les variables d'E/S définies par l'utilisateur en mode FPGA. Par exemple, si vous utilisez quatre modules 32 voies en mode balayage et que chaque voie prend 32 bits de données, les variables d'E/S en mode balayage utilisent 256 octets de données en entrée. Avec les 256 octets de données en entrée restants, vous pouvez créer jusqu'à 64 variables d'E/S définies par l'utilisateur en entrée (également de longueur 32 bits) en mode FPGA.

Figure 2. Créez des variables d'E/S définies par l'utilisateur pour communiquer entre le code temps réel du maître et le code FPGA de l'esclave.
Ces variables d'E/S définies par l'utilisateur transfèrent des données point par point vers et depuis le contrôleur maître à chaque cycle de balayage, de sorte qu'elles sont mieux utilisées pour transmettre les données traitées à partir du châssis d'extension EtherCAT RIO. Par exemple, dans une keynote NIWeek 2009, les présentateurs ont utilisé six châssis esclaves EtherCAT RIO pour faire sonner plusieurs carillons musicaux qui jouaient une chanson. Le code temps réel maître contrôlait le cadencement de chaque carillon distribué, mais le FPGA du châssis esclave enregistrait les mesures de forme d'onde audio à partir d'un microphone et effectuait une transformée de Fourier rapide (FFT) pour obtenir l'intensité sonore pour une fréquence de carillon spécifique. Le FPGA esclave a ensuite utilisé la modulation de largeur d'impulsion (MLI) pour contrôler la luminosité d'une série de LED pour correspondre à l'intensité du carillon. Même sans le programme temps réel en cours d'exécution, ces LED réagiraient également à d'autres sons forts aux mêmes fréquences de carillon en raison de la logique FPGA sur le châssis d'extension EtherCAT RIO.

Figure 3. Ce code EtherCAT RIO FPGA a été utilisé dans une démo principale de NIWeek 2009 pour faire retentir plusieurs carillons musicaux qui jouaient une chanson.
En plus d'utiliser les fonctions de l'algorithme LabVIEW FPGA, le châssis esclave fournit plusieurs signaux d'E/S de châssis pour aider à personnaliser et à synchroniser votre code. Par exemple, avec l'état EtherCAT, vous pouvez exécuter certaines logiques FPGA pendant l'un des sept états EtherCAT. Par conséquent, si la communication avec le contrôleur maître cesse, le châssis d'extension EtherCAT RIO passera à l'état sûr-opérationnel et le code FPGA pourra spécifier le comportement approprié de l'état sûr. Un autre ensemble de signaux utiles est le point virtuel de sortie et d'entrée. Ces deux signaux de cadencement indiquent exactement quand chaque esclave met à jour ses valeurs de sortie et d'entrée pendant chaque période de balayage. Par conséquent, leurs fronts montants peuvent être utilisés pour synchroniser le code FPGA sur plusieurs châssis d’extension EtherCAT RIO. Des exemples LabVIEW sont inclus dans le driver NI-Industrial Communications for EtherCAT pour démontrer plusieurs fonctionnalités FPGA avancées, telles que la synchronisation du moteur de balayage NI, les signaux numériques spécialisés et le suréchantillonnage asynchrone.
Figure 4. Synchronisez votre code FPGA d'E/S EtherCAT en utilisant des signaux de cadencement de points virtuels.
L’utilisation d’E/S distribuées déterministes telles que le châssis d’extension EtherCAT RIO garantit que vous pouvez maintenir le cadencement et la synchronisation serrés nécessaires pour les applications temps réel. De plus, l'ajout de code FPGA au niveau matériel à vos esclaves EtherCAT RIO vous permet de décharger le traitement du contrôleur et de réduire le temps de réponse en prenant des décisions intelligentes au nœud.