I. Introduction▲
Consultez le premier tutoriel de la Série d'évaluation LabVIEW, « Acquérir et analyser des signaux avec LabVIEW Real-Time », pour apprendre à enregistrer des données sur disque sur des cibles temps réel - une tâche indispensable à bon nombre d'applications autonomes. Relisez le premier tutoriel avant de commencer celui-ci, car il aborde plusieurs opérations essentielles à la création de votre projet.
II. Ajouter une fonction d'enregistrement de données à un projet LabVIEW Real-Time▲
1. Ouvrez la solution finalisée du premier tutoriel, Acquérir et analyser des signaux avec LabVIEW Real-Time, ou téléchargez le fichier .zip sur cette page. Faites un double-clic sur le projet Real-Time Evaluation.lvproj pour l'ouvrir.
2. L'arborescence du projet par défaut contient le Poste de travail, où vous pouvez développer du code qui s'exécutera sur la machine Windows sur laquelle vous travaillez actuellement. Notez qu'une cible temps réel dispose d'un processeur qui exécute un système d'exploitation temps réel ; il s'agit donc d'un autre ordinateur à part entière. Le VI RT.vi contient le code qui s'exécute sur votre cible temps réel. Étant donné que vous avez installé le driver NI-RIO avec votre logiciel d'évaluation, la cible enregistrée dans ce projet est un CompactRIO temps réel, qui se présente sous la forme d'un châssis cRIO-9068. Vous remarquerez que vous communiquez avec votre cible après avoir entré son adresse IP valide, et après l'avoir correctement configurée sur le même réseau que votre ordinateur de développement.
3. Faites un double-clic pour ouvrir le VI RT.vi et appuyez sur < Ctrl-E > pour ouvrir le diagramme. Un VI se compose de deux fenêtres : la face-avant, grisée, qui sert d'interface utilisateur, et le diagramme, en blanc, qui contient le code. Le code développé jusque-là acquiert des données dans une boucle cadencée haute priorité, les enregistre dans un buffer et les transfère de manière déterministe dans une boucle de priorité inférieure pour les afficher dans l'interface utilisateur. Ce tutoriel a pour objectif de vous aider non seulement à afficher vos données dans l'interface utilisateur, mais également à les enregistrer localement sur la cible temps réel. Des commentaires et une fonction de gestion d'erreurs ont été ajoutés à la solution du premier tutoriel, comme vous pouvez le voir dans la capture d'écran ci-dessous. La propagation d'erreurs tient un rôle particulièrement important dans les processeurs embarqués, car elle permet un arrêt en toute sécurité.
Il est recommandé de distinguer l'acquisition de données haute priorité de la présentation ou de l'enregistrement de données. De cette façon, le jitter est limité, la boucle cadencée peut atteindre des performances « temps réel » et ainsi finir toujours dans les temps. Vous pouvez augmenter l'efficacité de l'unité centrale en exécutant des tâches dans des boucles distinctes et à des fréquences différentes, puisque chaque tâche n'est exécutée qu'en cas de nécessité. Dans la boucle basse priorité, les données sont extraites du buffer de variables partagées, afin qu'elles soient affichées dans l'interface utilisateur et qu'elles soient enregistrées sur disque.
4. Placez un VI TDMS - Ouvrir dans la structure Séquence d'initialisation (cherchez la palette des fonctions ou faites un clic droit dans une zone blanche du diagramme pour l'afficher, puis naviguez jusqu'à Programmation » E/S sur fichiers »TDM en continu » Ouvrir). Le format de fichiers TDMS de NI vous permet d'organiser vos données par groupes et par voies.
5. Cliquez avec le bouton droit sur le terminal d'entrée chemin du fichier et sélectionnez Créer » Constante. Entrez le chemin de fichier /c/test1.txt. Cette syntaxe est adaptée au cRIO-9068 qui exécute le système d'exploitation temps réel NI Linux. Pour les cibles qui exécutent d'autres systèmes d'exploitation temps réel, comme VxWorks ou Phar Lap ETS, vous pouvez entrer le chemin c:\test1.txt. LabVIEW devrait contraindre la syntaxe correcte. Créez une nouvelle constante pour l'entrée opération et changez la valeur en create or replace (créer ou remplacer).
Vous pouvez également écrire sur une clé USB ou sur une carte de stockage SD connectée en indiquant le lecteur U: comme emplacement du fichier.
6. Câblez la sortie d'erreur de la variable Data Buffer au terminal entrée d'erreur du VI TDMS - Ouvrir. Câblez ensuite les sorties sortie d'erreur et fichier tdms en sortie à travers la structure Séquence jusqu'au bord de la boucle While comme indiqué ci-dessous.
7. Créez une bifurcation dans le fil d'erreur et reliez-la au nœud entrée d'erreur sur la boucle cadencée pour que les erreurs soient propagées dans les deux boucles.
8. Pour écrire sur le fichier qui vient d'être créé, déposez une instance du VI TDMS - Écrire (Programmation » E/S sur fichiers » TDM en continu » Écrire) à l'intérieur de la boucle While et câblez les entrées de référence d'erreur et de fichier comme il convient.
9. Pour écrire des données issues de la première voie sur le fichier, déposez une fonction Sous-ensemble d'un tableau (Programmation » Tableau » Sous-ensemble de tableau). Câblez la variable partagée Data Buffer à l'entrée tableau. Cliquez avec le bouton droit sur les entrées indice et longueur puis sélectionnez Créer » Constante. La valeur de l'indice de la première voie est 0, celui de sa longueur est 1. Câblez à présent la sortie sous-tableau à l'entrée données du VI TDMS - Écrire.
10. Déposez une fonction Ou (Programmation » Booléen » Ou) dans le diagramme, à côté de la commande Stop. Créez ensuite une bifurcation dans le fil partant du terminal sortie d'erreur du VI TDMS - Écrire dans une entrée, puis supprimez et recâblez la valeur du bouton Stop à l'autre entrée, comme le montre l'image ci-dessous. Cela permet de s'assurer que le programme s'arrêtera soit en appuyant sur le bouton, soit en cas d'erreur.
11. À l'extérieur de la boucle While, à droite, placez un VI TDMS - Fermer (Programmation » E/S sur fichiers » TDM en continu » Fermer) pour vous assurer que la référence et le fichier sur disque seront correctement fermés. Câblez les entrées de référence de fichier et d'erreur comme il convient.
12. Enfin, cliquez avec le bouton droit sur les tunnels de référence de fichier et d'erreur sur le bord gauche de la boucle While et sélectionnez Remplacer par un registre à décalage dans le menu déroulant. Un registre à décalage permet de faire passer des données d'un cycle d'itération au suivant. LabVIEW remplace le tunnel sur lequel vous avez cliqué par un terminal de registre à décalage, et le curseur prend la forme du symbole correspondant.(). Faites passer votre curseur sur le tunnel de l'autre côté de la boucle jusqu'à ce qu'il clignote, puis cliquez sur le tunnel pour le remplacer par un registre à décalage.
13. Une fois complète, votre boucle While devrait ressembler à cela :
14. Terminez le câblage du diagramme en ajoutant des étiquettes pour désigner clairement les groupes et les voies de données. Cliquez avec le bouton droit sur les entrées nom du groupe en entrée et nom des voies en entrée du VI TDMS - Écrire puis sélectionnez Créer » Constante. Vous trouverez un exemple ci-dessous.
Votre application d'acquisition, d'analyse et d'enregistrement est maintenant terminée. Une fois votre matériel CompactRIO connecté, vous pouvez exécuter le code sur la cible.
III. Ressources supplémentaires▲
IV. Remerciements▲
Nous remercions Claude LeLoup pour la relecture et Zoom61 pour sa mise au gabarit.