LabWindows/CVI Real-Time: accéder à la fiabilité et au déterminisme des applications critiques

Aperçu

Lorsque l'on aborde les solutions de test et mesure, il faut savoir distinguer les applications qui nécessitent des performances de traitement temps réel et les autres. Ce document définit les systèmes temps réel et traite des domaines d'application dans lesquels une solution de ce type est idéale. Si vous décidez qu'il vous faut un tel système, pensez au module LabWindows/CVI Real-Time, le logiciel C ANSI temps réel de National Instruments qui combine les bibliothèques de test et mesure intégrées de LabWindows/CVI avec la fiabilité et le déterminisme du temps réel.

NIDays 2010 : Introduction à la programmation textuelle pour l'instrumentation avec LabWindows/CVI

Contenu

Qu'est-ce qu'un système temps réel ?

Les systèmes temps réel sont définis comme des systèmes ayant des contraintes temporelles qui doivent être respectées pour éviter les erreurs. Ils sont conçus pour être plus fiables que les systèmes logiciels standards, tels que ceux sous Windows, et pour fournir des caractéristiques temporelles déterministes. Par exemple, le système d'airbag d'un véhicule nécessite un système temps réel qui reconnaît une collision et se déploie en un laps de temps déterminé. Si l'airbag ne se déploie pas à temps, le conducteur ou le passager risquent d'être sérieusement blessés. C'est pourquoi le système d'airbag doit être suffisamment fiable pour garantir une réponse à une collision et suffisamment déterministe pour garantir que cette réponse se produira dans un laps de temps déterminé. La méprise la plus répandue au sujet des performances temps réel est qu'il augmenterait la vitesse d'exécution d'un programme. Or, temps réel ne signifie nécessairement "rapidité". L'acquisition rapide de données à 1 Méch./s ne nécessite pas forcément le support d'un logiciel temps réel, mais le contrôle d'un système de pilotage automatique d'un avion exige un logiciel temps réel pour garantir des mises à jour précises de l'altitude, de la direction et de la vitesse de l'avion, même si la mise à jour de ces données ne doit avoir lieu que quelques fois par seconde.(Figure n°1). Certains systèmes temps réel sont bel et bien rapides, mais beaucoup sont spécialement conçus pour fonctionner de manière fiable sur de longues périodes. C'est le cas, par exemple, de ceux utilisés dans les tests environnementaux qui durent des semaines, des mois ou des années.


Figure n°1: Un système de pilotage automatique nécessite un système de contrôle temps réel en boucle fermée afin de mesurer et contrôler de manière fiable et déterministe le déroulement du vol de l'avion.

Il est possible d'atteindre des performances temps réel grâce au matériel ou aux logiciels, voire les deux. Pour mettre en œuvre un système temps réel basé seulement sur le matériel, il faut un circuit d'horloge précis. Par exemple, les matériels d'acquisition de données NI sont dotés d'un circuit de synchronisation intégré qui régule la vitesse d'acquisition. Avec ces technologies, le processeur du PC n'intervient pas dans la récupération des données ; de ce fait, l'application peut réaliser une synchronisation précise des E/S sur n'importe quel système d'exploitation. Autre possibilité : un environnement de programmation et un système d'exploitation temps réel (RTOS) peuvent créer une solution logicielle temps réel. Cette solution logicielle offre davantage de souplesse et d'outils de mise au point qu'une solution reposant uniquement sur du matériel. Avec une solution logicielle, il est possible d'incorporer de la prise de décision temps réel à une application à l'aide d'algorithmes pointus, telle que le contrôle PID (proportionnel, intégral, dérivé), au lieu de dépendre d'un circuit matériel défini une fois pour toutes. Par ailleurs, des systèmes hybrides allient matériels et logiciels temps réel, ce qui permet de réaliser la synchronisation précise du temps réel contrôlé par matériel combinée avec la souplesse du temps réel logiciel.

Voir aussi :
la page d'accueil de LabWindows/CVI Real-Time

Caractéristiques des systèmes d'exploitation

Observons les différences entre un système d'exploitation d'usage général et un système d'exploitation temps réel. Les systèmes d'exploitation d'usage général tels que Windows, Mac OS et Linux sont conçus pour exécuter toute une variété d'applications en parallèle, tout en garantissant que chacune d'entre elles reçoive suffisamment de temps processeur. Ces systèmes d'exploitation doivent également répondre aux interruptions en provenance des périphériques tels que claviers ou souris, et l'utilisateur a un contrôle restreint de la façon dont ces tâches sont gérées et priorisées par le processeur. Par conséquent, des tâches haute priorité risquent d'être évincées par des tâches de priorité plus basse, avec pour effet un jitter illimité, ce qui signifie qu'une tâche logicielle spécifique risque de ne pas être achevée dans un laps de temps déterminé.

La fiabilité offerte par un système d'exploitation d'usage général par rapport à celle d'un OS temps réel varie elle aussi de façon considérable. Des millions de lignes de code sont requis pour la mise en œuvre d'un système d'exploitation d'usage général. De même, le grand nombre de programmes et de tâches parallèles en cours d'exécution (mises à jour automatiques, recherches de virus et actualisations de l'interface utilisateur) favorisent les "plantages" de l'ordinateur. En revanche, les systèmes d'exploitation temps réel mettent en œuvre une quantité minimale de code et de programmes de fond pour atteindre un niveau élevé de fiabilité. Cela est possible car le système d'exploitation temps réel se consacre exclusivement à l'exécution des applications critiques, et non aux activités périphériques telles que la gestion des interfaces utilisateurs, aux interruptions du clavier et de la souris ou encore la gestion des connexions.

Les systèmes d'exploitation d'usage général, cependant, sont idéaux pour bon nombre d'applications de test et mesure, telles que l'acquisition de données, l'analyse hors ligne et la présentation des données. Grâce aux technologies telles que le "bus mastering", le transfert DMA (direct memory access) et la mise en mémoire tampon des données, les matériels d'E/S peuvent collecter les données et les transférer automatiquement vers la mémoire vive sans intervention de l'unité centrale, ni du système d'exploitation. Lorsque l'application est prête à recevoir les données, celles-ci sont extraites de la mémoire vive sans interrompre le fonctionnement du matériel. Après avoir acquis les données, l'utilisateur peut normalement utiliser un système d'exploitation d'usage général pour effectuer l'analyse hors ligne de ces dernières, car il n'existe généralement aucune contrainte stricte de temps liée à la fin de l'opération. En fin de compte, le fait que ces systèmes d'exploitation se focalisent sur l'interface utilisateur en fait la solution idéale pour représenter visuellement les résultats des données, surtout grâce à la richesse des graphiques 3D des OS récents.

En revanche, les systèmes d'exploitation temps réel permettent de prioriser les tâches de façon à ce que la plus critique puisse toujours préempter les autres lorsque cela s'avère nécessaire. De plus, les systèmes temps réel sont souvent utilisés pour mettre en œuvre des applications nécessitant des temps d'exécution longs ou un fonctionnement autonome "headless" (sans écran, ni clavier, ni souris), car ils garantissent un certain uptime (temps pendant lequel il n'est pas nécessaire de rebooter). Les systèmes d'exploitation temps réel sont requis lorsque le processeur intervient dans des opérations comme le contrôle en boucle fermée. Ces applications ont besoin que des décisions soient prises "à temps" en fonction des données entrantes afin d'éviter les erreurs. Par exemple, les applications de contrôle PID courantes doivent acquérir une mesure (une vitesse), puis exécuter un algorithme PID qui utilise d'une part la valeur mesurée ainsi qu'une valeur de consigne (vitesse programmée du véhicule) pour générer la valeur de la réponse (pourcentage d'appuis sur l'accélérateur) qui sera envoyée au matériel d'E/S (Figure n°2). Dans ces applications, le logiciel doit intervenir dans la boucle ; de ce fait, il faut un système d'exploitation temps réel afin de garantir une réponse dans un laps de temps déterminé. Le jitter logiciel dans les systèmes d'exploitation temps réel est limité, borné, ce qui signifie qu'ils garantissent qu'une tâche s'achève en un temps défini.



Figure n°2: Un contrôleur PID simple pour le contrôle en boucle fermée.

Domaines d’application du temps réel

Les industries de l'automobile, de la défense et de l'aérospatiale ont fréquemment recours aux systèmes temps réel pour le test et le contrôle. Dans le domaine du test, les applications vont des tests d'endurance des composants avioniques aux tests destructifs, en passant par les instruments au fonctionnement autonome dans les zones éloignées. Dans ces applications critiques, une défaillance informatique est inacceptable car les données risquent de n'être disponibles que pendant quelques millisecondes lors des tests destructifs ou de nécessiter des mois entiers d'observation lors des tests environnementaux. Reconduire de tels tests risque de coûter très cher voire d'être impossible.

Figure n°3: Les solutions logicielles temps réel sont nécessaires dans un large éventail d'applications qui va du test fiable au contrôle, en passant par tout ce qui existe entre les deux.

Dans le domaine du contrôle, le déterminisme et la fiabilité sont essentiels. Par exemple, les applications de contrôle en boucle fermée, comme un régulateur de vitesse, nécessitent que des mises à jour soient transmises à des instants précis à l'accélérateur à partir de la vitesse mesurée et des résultats d'un algorithme de contrôle, tel qu'un algorithme PID. Pour les applications de contrôle industriel et d'automatisation, une synchronisation déterministe est requise pour s'assurer des plans de circulation et des réponses lors du processus de fabrication.

Bon nombre d'autres applications nécessitent que le test et le contrôle soient étroitement intégrés, comme le test opérationnel. Par exemple, le test d'un disque dur exige préalablement de vérifier le fonctionnement du contrôleur du disque dur, avec des paramètres de test tels que la vitesse de rotation et la position de la tête de lecture. Ce n'est qu'une fois que les signaux de contrôle appropriés ont été envoyés au disque dur que le test peut commencer en fonction de paramètres tels que la température et les erreurs sur les bits. L'intégration du test et du contrôle est également nécessaire pour le test HIL (hardware-in-the-loop). Par exemple, le test d'un dispositif de régulation du moteur (ECU) nécessite tout d'abord de simuler le monde réel, puis de mesurer et de valider la réponse de l'ECU.

Les défis du développement temps réel pour le test et la mesure

Lorsque l'on développe des systèmes temps réel, toutefois, il y a plusieurs défis à relever. La programmation de systèmes embarqués nécessite la connaissance et la maîtrise de chaînes d'outils spécialisés, de techniques de programmation et de l'intégration du matériel et du logiciel. Cela se traduit par une courbe d'apprentissage difficile pour les ingénieurs qui ont besoin de performances temps réel sans être pour autant des développeurs expérimentés. De plus, si il existe un nombre croissant de produits disponibles pour une utilisation temps réel, il reste encore aux développeurs beaucoup d'intégration et de programmation pour faire fonctionner le logiciel et le matériel ensemble de façon transparente.

Un autre obstacle au développement temps réel se dresse lorsque l'on travaille sur des applications qui requièrent à la fois du test et du contrôle déterministe. Le recours à des outils de test et de contrôle distincts nécessite une expertise supplémentaire et un travail d'intégration plus poussé afin de synchroniser ces éléments de l'application.

Les avantages de LabWindows/CVI Real-Time

LabWindows/CVI Real-Time fournit une plate-forme qui facilite la programmation temps réel, l'intégration matérielle et la combinaison du test et du contrôle. LabWindows/CVI a également une longue histoire de fiabilité qui commence avec la version A0 en 1987. Depuis lors, LabWindows/CVI n'a pas cessé d'intégrer les dernières technologies de programmation telles qu'ActiveX et .NET tout en se concentrant sur la stabilité et la compatibilité ascendante. LabWindows/CVI inclut des bibliothèques d'E/S, des bibliothèques d'analyse avancée et une suite complète de contrôles graphiques pour concevoir des interfaces utilisateurs scientifiques et techniques, ce qui en fait la plate-forme idéale pour les applications de test et de contrôle. Comme LabWindows/CVI s'appuie sur des standards C ANSI, l'utilisateur peut facilement créer de nouvelles applications et porter du code existant sur des cibles matérielles temps réel avec un minimum de modifications, tout en continuant d'utiliser l'environnement de développement intégré LabWindows/CVI. Cette capacité à incorporer du code existant réduit considérablement les temps de développement des applications temps réel.

Figure n°4: LabWindows/CVI fournit un environnement de développement intégré, idéal pour la création d'applications qui combinent logiciel et matériel.

Par ailleurs, comme LabWindows/CVI Real-Time est étroitement intégré avec le matériel de National Instruments, développer des applications pour des cibles matérielles temps réel est aussi simple que de développer des applications pour des cibles Windows. En ayant recours à des drivers tels que NI-DAQmx et NI-VISA, l'utilisateur peut accéder à des milliers d'instruments et de matériels d'acquisition de données, sans perdre de temps à créer ses propres drivers pour la cible temps réel ni se soucier de la programmation bas niveau.

Comme il a été souligné plus haut, combiner des fonctionnalités de test et de contrôle au sein du même système peut s'avérer difficile. Cependant, grâce à son expertise du test et du contrôle depuis près de 30 ans, National Instruments fournit une plate-forme temps réel qui intègre des logiciels et des matériels étroitement liés et contribue à développer des composants de test et de contrôle en utilisant un environnement de développement unique. Les solutions temps réel de NI permettent de combiner le déterminisme et la fiabilité d'un logiciel temps réel avec les mesures haute précision des matériels PXI et PCI.

E/S et cibles matérielles temps réel

Cibles LabWindows/CVI Real-Time

Un système temps réel classique comprend une machine de développement, appelée ordinateur hôte, et une machine de déploiement, appelée cible temps réel. En règle générale, l'utilisateur développe son application avec LabWindows/CVI sur l'ordinateur hôte sous un système d'exploitation d'usage général tel que Windows, le télécharge sur la cible temps réel via Ethernet, et exécute l'application sur la cible temps réel (Figure n°5).

Figure n°5: Utilisez LabWindows/CVI Real-Time pour développer, télécharger et déployer des systèmes temps réel.

LabWindows/CVI Real-Time supporte actuellement deux cibles temps réel – le PXI (PCI eXtensions for Instrumentation) et les PC. Le PXI est une plate-forme basée PC, durcie pour les systèmes de mesure et d'automatisation. Le PXI allie les caractéristiques électriques du bus PCI et le conditionnement Eurocard durci et modulaire du CompactPCI ; il propose aussi des bus de synchronisation spécialisés. Cela fait de lui une plate-forme de déploiement à la fois hautes performances et économique dédiée aux systèmes de mesure et d'automatisation. Un système classique est composé d'un châssis, d'un contrôleur embarqué et des modules d'E/S de votre choix. Le contrôleur remplit la même fonction qu'une unité centrale de bureau, mais dans un facteur de forme industriel et durci. Lorsqu'il est utilisé comme système temps réel, l'application LabWindows/CVI est téléchargée vers le processeur embarqué sur le contrôleur PXI. Pendant que l'application s'exécute, elle accède aux données des modules d'E/S dans le système. Lorsque l'utilisateur est prêt pour le déploiement, il peut déconnecter la machine de développement et exécuter son système "headless", c'est-à-dire sans écran, ni clavier, ni souris.

Figure n°6: Les systèmes PXI existent en versions 4, 8 et 18 emplacements.

LabWindows/CVI Real-Time permet également d'avoir pour cible des PC de bureau standards. Grâce à cette option, il est possible d'utiliser du matériel PC existant pour créer des applications fiables et déterministes. Cette solution permet de tirer parti des dernières technologies PC, y compris du PCI Express et des processeurs Pentium 4, pour atteindre des performances temps réel sur un large éventail de matériels PCI.

Figure n°7: Transformez des PC standards en cibles temps réel.

E/S supportées

Afin de tirer pleinement parti du support temps réel, il faut ajouter des E/S au système. LabWindows/CVI supporte toute une variété d'E/S de National Instruments, y compris des matériels d'acquisition de données, des matériels série, des numériseurs, des générateurs de fonctions, des matériels numériques haute vitesse, des multimètres numériques, des matrices de commutation et des contrôleurs CAN. La communication avec ces matériels se fait via des drivers tels que NI-DAQmx, NI-VISA, NI-CAN, NI-DMM, NI-Scope, NI-HSDIO et NI-Switch.

Figure n°8: Il existe toute une variété d'options d'E/S de National Instruments pour LabWindows/CVI Real-Time.

Caractéristiques clés

Le Module LabWindows/CVI Real-Time permet d'utiliser les fonctionnalités de LabWindows/CVI avec de nouvelles caractéristiques temps réel, notamment l'intégration étroite entre matériel et logiciel, la génération de code, le déploiement automatique sur les cibles temps réel via Ethernet, des bibliothèques de threading temps réel, l'utilitaire File Copy pour la gestion de configuration, la mise au point à distance du code, des configurations avec Measurement & Automation Explorer (MAX) et le Toolkit PID Control.

Intégration étroite du matériel et du logiciel

National Instruments propose une plate-forme temps réel parfaitement intégrée et homogène offrant des composants logiciels et matériels standards qui fonctionnent ensemble de manière transparente pour créer des solutions complètes. Chaque cible temps réel utilise des composants standards tels que microprocesseurs, RAM, ROM, bus d'E/S et système d'exploitation temps réel. Le logiciel embarqué est composé d’un système d'exploitation temps réel, de drivers et d’une version temps réel du moteur d'exécution LabWindows/CVI. Étant donné que toutes les plates-formes de déploiement LabWindows/CVI Real-Time reposent sur cette architecture, l'intégration est grandement facilitée.

Figure n°9: National Instruments propose une plate-forme logicielle et matérielle standard complète pour le temps réel.

Outre le driver d'acquisition de données NI-DAQmx mentionné plus haut, LabWindows/CVI fournit le DAQ Assistant, une application qui facilite la conception des applications d'acquisition de données. Le DAQ Assistant définit de manière interactive une tâche de mesure, détermine les capacités de mesure du matériel DAQ spécifié et génère des modules de code C qui effectuent l'acquisition. L'intégration étroite du DAQ Assistant et de NI-DAQmx avec LabWindows/CVI offre aux ingénieurs qui effectuent l'acquisition de données le moyen le plus efficace et le plus productif pour prendre des mesures dans un environnement en C ANSI.

Figure n°10: Création d'une tâche d'acquisition de données avec le DAQ Assistant

LabWindows/CVI est un logiciel phare dans le domaine du contrôle d'instruments, et ce grâce à un réseau de plus de 4000 drivers d'instruments provenant de plus de 200 fournisseurs. Vous pouvez utiliser ces bibliothèques de fonctions afin de faciliter la programmation et la conception des applications de contrôle d'instruments. Pour finir, l'Instrument I/O Assistant permet de générer du code pour communiquer avec des matériels tels que des instruments série, Ethernet et GPIB pour lesquels il n'existerait pas de driver d'instrument.

L'Instrument I/O Assistant offre une interface simple pour prototyper rapidement les applications et analyser automatiquement les données en provenance des instruments. Il est facile d'importer le code généré dans n'importe quelle application existante, ce qui dispense d'écrire le code de gestion et de communication avec les instruments de mesure.


La génération du code de la fonction RTmain( )

Utilisez la génération de code de la fonction RTmain pour créer automatiquement un modèle de code pour vos applications temps réel. Le modèle fournit un point de départ facile à comprendre et à adapter. C'est un élément important puisque c'est la fonction RTmain qui se charge automatiquement et qui s'exécute lors du déploiement vers une cible matérielle temps réel (voir le menu Edit » Insert Construct » RTmain).

Figure n°11: Utilisez l'élément de menu Insert Construct pour créer automatiquement le code d'initialisation RTmain et un modèle permettant de commencer à écrire votre code.


Déploiement temps réel via Ethernet

L'utilisateur peut déployer automatiquement son application vers sa cible matérielle temps réel via Ethernet en utilisant la fenêtre "Select Target with Options" de LabWindows/CVI Real-Time. Cette option permet de spécifier la cible par le nom de la machine ou son adresse IP sans jamais quitter l'environnement de développement LabWindows/CVI. Si l'utilisateur a des doutes sur les cibles disponibles ou s'il a besoin de modifier les configurations matérielles, il peut également lancer MAX (Measurement and Automation Explorer) afin de visualiser toutes les cibles disponibles sur le sous-réseau. Une fois que l'utilisateur a appuyé sur le bouton "flèche" pour lancer l'exécution de sa tâche temps réel, LabWindows/CVI compile le code et le copie sur la cible temps réel via Ethernet.

Figure n°12. Il est possible de cibler et déployer une application temps réel directement depuis LabWindows/CVI.

 

Bibliothèques de threading temps réel

L'un des aspects importants du temps réel est la capacité à contrôler les priorités des threads de sorte que les tâches de priorité plus haute ne soient pas interrompues par les tâches de priorité plus basse. Cette capacité à définir la priorité des threads dans LabWindows/CVI Real-Time donne à l'utilisateur le contrôle de l'exécution des tâches dans son application. L'API de gestion des threads de LabWindows/CVI propose sept priorités différentes pour les threads, qui correspondent à trois niveaux différents : élevé, normal et bas. Afin de simplifier le threading, LabWindows/CVI inclut également des fonctions de groupe de threads (thread pool) facilitant la création, le transfert et la disposition des threads (Figure n°13).
LabWindows/CVI inclut aussi des files d'attente "thread-safe" afin de transmettre les données en toute sécurité entre les différents threads, prévenant ainsi des concurrences critiques. Une file d'attente thread-safe est communément utilisée dans les applications de contrôle PID afin de transmettre les données entre la boucle temps critique et la boucle de communication qui est de plus basse priorité.

Figure n°13: Définissez les priorités des threads pour garantir que vos tâches critiques d'un point de vue temporel ne seront pas évincées par des tâches de priorité plus basse.


Utilitaire File Copy

Une fois les applications temps réel créées, LabWindows/CVI les télécharge automatiquement sur la cible. Toutefois, si l'utilisateur souhaite télécharger manuellement d'autres fichiers, comme les fichiers de configuration ou des DLL appelées dynamiquement, il peut utiliser l'utilitaire File Copy. Cet utilitaire permet également de spécifier les DLL censées s'exécuter au démarrage du système temps réel.

Figure n°14: Utilisez l'utilitaire File Copy de LabWindows/CVI pour copier des fichiers sur la cible matérielle.


Débogage distant

Une fois que l'utilisateur a développé une application temps réel, il peut vouloir la déboguer pendant son exécution sur la cible temps réel. Cette tâche n'est généralement pas anodine. Avec LabWindows/CVI, il est possible de déboguer le code de la tâche temps réel à partir d'une machine distante via Ethernet. Toutes les caractéristiques disponibles lors du débogage local, comme les points d'arrêt, les fonctions d'exécution détaillée, ou l'inspection des variables, sont disponibles. Il est possible de changer à la volée les valeurs des variables sur la cible temps réel depuis votre machine locale. Toutes les informations de débogage sont automatiquement transmises via TCP entre l'application temps réel et l'instance locale de LabWindows/CVI.

Figure n°15: Déboguez à distance votre application temps réel via Ethernet.

Configuration avec MAX

MAX facilite la localisation et la configuration de la cible temps réel. MAX trouve automatiquement toutes les cibles supportées sur votre réseau local ; autre possibilité, l'utilisateur peut spécifier une adresse IP ou un nom de réseau. À partir de MAX, il est possible de télécharger sur la cible le moteur d'exécution LabWindows/CVI Real-Time et les drivers matériels (NI-DAQmx par exemple). L'utilisateur peut aussi configurer de manière interactive le matériel sur la cible, et notamment définir les tâches d'acquisition de données, la configuration des cartes d'acquisition de données et même exécuter les panneaux de test afin de vérifier le bon fonctionnement des modules.


Toolkit PID Control

Le Toolkit PID Control, inclus avec LabWindows/CVI Real-Time, permet de créer des applications complexes de contrôle en boucle fermée. Ce toolkit comprend des fonctions dédiées au contrôle et aux algorithmes PID.

Figure n°16: Ajoutez des algorithmes PID complexes à vos applications de contrôle.

Conclusion

Une fois que l'utilisateur a déterminé que son application nécessitait la fiabilité du contrôle temps réel, LabWindows/CVI Real-Time facilite son développement et son déploiement. Grâce à des caractéristiques telles que le déploiement automatique sur les cibles, la gestion des threads et l'intégration avec le matériel de mesure et de contrôle, le développement d'un système temps réel s'avère aussi simple que celui d'un système non temps réel.

Liens :
Page d'accueil de LabWindows/CVI Real-Time