Construction d’un système temps réel avec le matériel et les logiciels NI

Aperçu

Les logiciels et les matériels temps réel de NI fonctionnent de façon transparente ensemble pour exécuter des applications, de manière fiable et déterministe, avec un cadencement précis. Cet article explique les différents éléments dont vous avez besoin pour créer un système temps réel NI. Il identifie les options matérielles et logicielles disponibles et il met en avant les meilleures options pour votre projet.

Pour construire un système temps réel NI, vous devez choisir à la fois votre logiciel de développement et votre plate-forme matérielle. Des informations détaillées sur les options de chacun sont fournies dans les sections suivantes. Avant de lire cet article, il est utile que vous ayez une compréhension élémentaire des systèmes temps réel et des avantages qu’ils peuvent représenter pour vos projets. Passez en revue ces informations en lisant l’article Do I Need a Real-Time System ? (Ai-je besoin d’un système temps réel ?)

Lors de la construction d’un système temps réel, le système d’exploitation sélectionné doit être compatible. Les outils de développement temps réel de NI sont vendus avec tous les logiciels de systèmes d’exploitation temps réel (RTOS) nécessaires, ce qui signifie que vous n’avez pas à choisir cet élément séparément. NI se base sur la plate-forme matérielle pour utiliser soit le système d’exploitationNI LinuxReal-Time soit les systèmes d’exploitation ETS Phar Lap. 

Choisissez un environnement de développement

Pour développer des programmes temps réel, vous pouvez utiliser la programmation graphique LabVIEW, l’environnement LabWindows™/CVI ANSI C (pour Phar Lap), ou un environnement de développement C/C++ compatible avec Linux de votre choix (pour NI Linux Real-Time).

Option de développement : Programmation graphique LabVIEW Real-Time

Figure 1. Programmation graphique avec LabVIEW.

Pour programmer graphiquement du matériel temps réel supporté par NI, vous devez utiliser LabVIEW avec le module LabVIEW Real-Time. LabVIEW Real-Time vous offre la possibilité de créer des applications temps réel fiables, les télécharger sur du matériel, les mettre au point et les exécuter en utilisant un outil.

Dans vos applications temps réel, vous pouvez utiliser la plupart des algorithmes mathématiques et de traitement du signal intégrés, vendus avec LabVIEW, dont plusieurs fonctions de contrôle proportionnel, intégral, dérivé (PID). De plus, vous pouvez exécuter des scripts mathématiques textuels sur votre système temps réel avec le nœud MATLAB ou intégrer des modèles que vous créez dans The MathWorks, Inc. Le logiciel Simulink® ou d’autres environnements de modélisation utilisant letoolkit LabVIEW Model Interfaceen option.

LabVIEW Real-Time : Développer, télécharger et exécuter des applications

Lors du développement d’applications temps réel dans LabVIEW, vous utilisez l’Explorateur de projets LabVIEW pour organiser vos programmes (VIs) et désigner la plate-forme matérielle sur laquelle ils seront exécutés. Vous développerez votre code sur un ordinateur hôte Windows à usage général, puis vous le déploierez sur votre matériel temps réel via Ethernet ou une connexion USB.

 

Figure 2. Gérez les programmes LabVIEW (VIs) et affectez-les à des cibles temps réel à l’aide de l’Explorateur de projets LabVIEW.

Le développement de programmes temps réel dans LabVIEW est presque identique au développement d’applications LabVIEW standard pour votre PC. Plusieurs fonctions supplémentaires spécifiques aux systèmes temps réel sont incluses dans la palette de VIs Real-Time, y compris :

  • Les fonctions Chien de garde permettant de redémarrer automatiquement certaines cibles matérielles si votre programme cesse de s’exécuter
  • Des fonctions permettant de communiquer des données de manière déterministe entre des parties d’un programme temps réel
  • Des utilitaires permettant de configurer l’équilibrage de la charge sur des systèmes ayant plusieurs cœurs de processeur
  • Des fonctions de cadencement permettant de contrôler avec précision l’exécution de boucles dans vos programmes temps réel

Pour tester le code LabVIEW Real-Time sur votre matériel, cliquez simplement sur la flèche d’exécution pour que votre application soit déployée sur votre matériel temps réel et commence à s’exécuter. Vous pouvez utiliser des outils de mise au point standards NI, tels que l’animation de l’exécution, l’exécution en mode pas-à-pas et les points d’arrêt depuis votre ordinateur de développement, même si votre programme temps réel s’exécute en fait sur la cible temps réel.

Lorsque vous avez finalisé votre programme temps réel, vous pouvez construire un exécutable dans LabVIEW et le télécharger sur votre matériel temps réel en tant qu’application de démarrage. Après avoir redémarré votre matériel temps réel, votre programme s’exécutera automatiquement de façon fiable et autonome.

LabVIEW Real-Time : Définir les priorités des sections de code parallèles et du traitement multicœur

Le modèle de programmation par flux de données de LabVIEW vous libère de l’architecture séquentielle des langages de programmation textuels. Étant donné que l’ordre d’exécution est déterminé par le flux de données entre des nœuds, vous pouvez facilement créer des applications pouvant exécuter de multiples opérations en parallèle. De plus, LabVIEW facilite la définition de priorités de thread grâce à la structure de boucle cadencée. Comme indiqué ci-dessous, chaque boucle a une source de cadencement configurable, une période, une priorité, etc.

Figure 3. Spécifier la définition de la priorité et du traitement de différentes sections de code en utilisant la structure Boucle cadencée de LabVIEW. 

LabVIEW Real-Time supporte le traitement multicœur et mappe automatiquement les sections parallèles de votre code vers des threads de systèmes d’exploitation individuels, ce qui élimine le besoin de les créer et de les gérer manuellement. Par défaut, ces threads sont automatiquement équilibrés à travers les CPU disponibles sur votre matériel temps réel.

Pour accroître davantage les performances et la fiabilité d’un système temps réel, vous pouvez choisir d’affecter manuellement des boucles cadencées à des cœurs de processeurs spécifiques, si vous le souhaitez. Par exemple, vous pouvez dédier un cœur de processeur pour qu’il exécute une boucle à priorité critique et l’isoler des tâches moins importantes qui sont exécutées sur différents cœurs.

Option de dépannage : Mise au point avec l’afficheur de suivi en temps réel

Pour les mises au point multicœur avancées, vous pouvez utiliser l’afficheur de suivi en temps réel pour vérifier les performances de vos programmes temps réel LabVIEW ou LabWindows/CVI sans arrêter ni mettre en pause l’exécution du code. Avec des modifications minimales de votre code temps réel, vous pouvez enregistrer les performances de votre application dans un fichier et les envoyer à un ordinateur hôte pour le visualiser et l’analyser. L’afficheur d’outils de suivi représente graphiquement l’exécution du code multithread tout en mettant en évidence les permutations de threads, les mutex et les affectations de mémoire. Vous pouvez utiliser l’afficheur de suivi en temps réel pour optimiser les performances de l’application en identifiant les caractéristiques d’exécution non désirées ainsi que les situations de compétition difficiles à trouver.

Options de développement en C et C++

Si votre organisation se standardise sur C ou C++, vous pouvez utiliser l’environnement de développement LabWindows/CVI ou d’autres environnements de développement. Notez que LabWindows/CVI Real-Time ne supporte que les contrôleurs PXI temps réel, tandis que les cibles utilisant NI Linux Real-Time, telles que les contrôleurs CompactRIO, sont en source ouverte, vous pouvez donc utiliser l’outil de développement de votre choix. Pour en savoir plus sur l’utilisation des outils de développement C/C++ pour Linux-Real-Time, visitez Initiation au développement C/C++ pour NI Linux Real-Time.

Sélectionner une plate-forme matérielle et des modules d’E/S NI

Toutes les plates-formes matérielles temps réel sont construites à partir d’une architecture commune, ce qui signifie que les programmes que vous écrivez avec LabVIEW Real-Time fonctionneront sur divers matériels NI avec seulement des modifications mineures, ou sans aucune modification. Plus particulièrement, chaque plate-forme matérielle offre des composants informatiques prêts à l’emploi, dont un processeur, de la RAM, une mémoire de stockage non volatile et une interface de bus d’E/S. Certaines plates-formes matérielles disposent d’un FPGA programmable par l’utilisateur que vous pouvez programmer à l’aide du module LabVIEW FPGA.

PXI (Extensions PCI pour l’instrumentation).

La plate-forme PXI standard comprend un châssis à coque dure avec des lignes de cadencement et de déclenchement intégrées, un contrôleur embarqué et des modules d’E/S enfichables. Des ports en série, USB, Gigabit Ethernet et GPIB sont également intégrés au contrôleur. Du matériel temps réel PXI peut être programmé en utilisant soit LabVIEW Real-Time soit LabWindows/CVI Real-Time.

Avez-vous un contrôleur PXI existant s’exécutant sous Windows et que vous aimeriez changer en contrôleur temps réel ? Vous pouvez acheter une licence LabVIEW Real-Time Deployment pour convertir votre contrôleur ou même définir un système qui permette deux types de démarrage.

Vous pouvez assembler votre propre système PXI temps réel, y compris le contrôleur, le châssis, les modules d’E/S et les logiciels en utilisant le Guide PXI en ligne


Figure 4. Le matériel PXI offre un système durci et hautes performances à vos projets temps réel.

Le matériel PXI de NI est souvent utilisé pour les systèmes temps réel hautes performances, comme par exemple lors du test HIL (hardware-in-the-loop) d’unités de contrôle électronique et d’analyse des vibrations pour les applications de surveillance de l’état des machines. Lorsqu’elles utilisent un système PXI temps réel, vos applications ont accès à des fonctionnalités matérielles de cadencement et de synchronisation avancées qui simplifient le déclenchement d’E/S et la synchronisation multi-modules précis.

CompactRIO

CompactRIO regroupe un processeur temps réel, un FPGA et des modules d’E/S de la Série C et est disponible dans les deux formats embarqué et niveau carte. De plus, des ports en série, USB et Ethernet sont intégrés au contrôleur.

Vous pouvez assembler votre propre système CompactRIO, y compris le contrôleur, les modules d’E/S et les logiciels en utilisant le Guide CompactRIO en ligne.

 

Figure 5. Les contrôleurs CompactRIO embarqués offrent la flexibilité, la robustesse et la portabilité aux applications temps réel.

Vous pouvez programmer le processeur sur les contrôleurs CompactRIO à l’aide de LabVIEW Real-Time ou de votre outil de développement C/C++ préféré. Vous pouvez également développer du code FPGA à l’aide de LabVIEW FPGA. Pour accéder aux données d’E/S sur le processeur, vous pouvez utiliser l’API NI-DAQmx, l’API de programmation de NI des mesures ou le moteur de balayage NI. Vous pouvez alternativement accéder aux données directement à partir du FPGA via LabVIEW FPGA. 

 

Figure 6. L’architecture hétérogène de CompactRIO comprend un processeur temps réel, un FPGA reconfigurable et des E/S.

Le matériel CompactRIO est souvent utilisé pour des applications industrielles, notamment la surveillance d’état, le test hardware-in-the-loop, le test de systèmes physiques et le contrôle des machines.

Les contrôleurs CompactRIO niveau carte, tels que les contrôleurs CompactRIO Single-Board (sbRIO), ont la même architecture que les contrôleurs CompactRIO embarqués, mais sont livrés sans emballage robuste et présentent un format plus petit.

Figure 7. Les contrôleurs CompactRIO niveau carte présentent la même architecture que les contrôleurs CompactRIO embarqués, mais dans un format plus petit.

Les applications à volume élevé qui nécessitent souplesse, fiabilité et hautes performances peuvent tirer parti des contrôleurs CompactRIO Single-Board ou des modules System On.