Ce document, qui décrit les normes et les pratiques des drivers Plug-and-Play LabVIEW, est destiné aux développeurs de drivers et décrit les normes de structuration des VIs, les E/S d’instrument, le style et les rapports d’erreurs. Il décrit également les composants du driver d’instruments et la manière d’intégrer ces composants. De plus, ce document décrit un processus de développement de drivers d’instruments utiles.
D’autres ressources incluent les modèles de drivers d’instruments et le manuel Instrument Driver Guidelines, tous deux disponibles sur le réseau de drivers d’instruments NI (ni.com/idnet).
Pour utiliser ce document, vous devez avoir une connaissance de base du contrôle des instruments et vous familiariser avec le fonctionnement de LabVIEW. Vous devez également vous familiariser avec l’interface de programmation d’application (API) VISA (Virtual Instrument Software Architecture).
Un driver d’instruments LabVIEW Plug and Play est un ensemble de VIs qui contrôlent un instrument programmable. Chaque VI correspond à une opération d’instrument, tel que la configuration, le déclenchement et la lecture de mesures de l’instrument. Les drivers d’instruments vous aident à utiliser votre instrument depuis votre ordinateur. En outre, ils vous font gagner du temps et vous font faire des économies en matière de développement car vous n’avez pas besoin d’apprendre le protocole de programmation de chaque instrument. Avec des drivers d’instruments open-source et bien documentés, vous pouvez personnaliser leur fonctionnement pour obtenir de meilleures performances. Une conception modulaire facilite la personnalisation du driver.
L’utilisation d’une architecture standard pour tous les drivers d’instruments LabVIEW présente les avantages suivants :
Le LabVIEW Instrument Driver Network contient des drivers d’instruments pour divers instruments programmables, y compris les instruments GPIB, USB, TCP/IP, VXI, RS-232 et PXI. Les drivers d’instruments contiennent des VIs de haut niveau avec des interfaces intuitives, ce qui vous permet de tester et de vérifier rapidement les capacités à distance de votre instrument. Vous n’avez pas besoin de connaître le contrôle des instruments de bas niveau et les commandes et syntaxes spécifiques à l’instrument. Vous créez des applications de contrôle d’instruments en construisant des VIs à l’aide des VI de driver d’instruments en tant que sous-VIs sur vos diagrammes.
De nombreux instruments programmables ont un grand nombre de fonctions et de modes. En raison de cette complexité, il est nécessaire de fournir un modèle de conception cohérent qui vous aide, ainsi que les développeurs de drivers d’instruments, à développer des applications de contrôle d’instruments. Le modèle de driver d’instruments LabVIEW Plug and Play contient à la fois des règles de structure externe et de structure interne. La structure externe montre comment le driver d’instruments s’interface avec l’utilisateur et avec les autres composants logiciels du système. La structure interne montre l’organisation interne du module logiciel du driver d’instruments.
Un driver d’instruments est constitué des VIs API que vous appelez à partir d’une application de niveau supérieur. La figure ci-dessous illustre comment le driver d’instruments interagit avec le reste du système.
Figure 1 : Structure externe du driver d’instruments LabVIEW
La structure externe illustre comment le driver d’instruments présente à la fois une interface interactive et une interface de programmation. L’interface de programmation d’application (Application Programming Interface - API) est l’ensemble des VIs de driver d’instruments appelables par l’utilisateur utilisés dans les systèmes centrés sur l’utilisateur final. Par exemple, un système de test du fabricant peut faire des appels de driver d’instruments pour communiquer avec un multimètre ou un oscilloscope.
Vous vous familiarisez avec l’API via les interfaces du driver d’instruments. En exécutant de manière interactive les interfaces des VIs driver d’instruments, vous êtes amené à comprendre comment chaque commande affecte l’instrument. Une fois que vous vous êtes familiarisé avec les paramètres, vous pouvez incorporer les VIs de driver d’instruments dans votre application.
L’interface d’E/S Virtual Instrument Software Architecture (VISA) est l’ensemble des fonctions LabVIEW que le driver utilise pour communiquer avec le matériel de l’instrument. VISA est une interface de programmation standard largement utilisée qui contrôle les bus d’instruments GPIB, USB, série et autres. Reportez-vous à l’Aide LabVIEW pour obtenir une description des fonctions et commandes VISA.
Les VIs de support sont des VIs auxquels vous n’avez pas directement accès. Par conséquent, les VIs de support ne font pas partie de l’API de driver d’instruments. Par exemple, les drivers d’instruments appellent souvent le VI de configuration par défaut lors de l’initialisation pour configurer l’instrument dans un état permettant un contrôle robuste de l’instrument par le reste des VIs de driver d’instruments. Seuls les VIs Initialize et Reset utilisent le VI de configuration par défaut en tant que sous-VI ; il est donc considéré comme un VI de support.
La structure interne du driver d’instruments définit l’organisation des VIs de driver d’instruments. Tous les VIs API accessibles sont organisés en une hiérarchie modulaire basée sur la fonctionnalité de l’instrument.
La figure ci-dessous illustre la structure interne des drivers d’instruments LabVIEW. Vous obtenez la granularité nécessaire pour contrôler correctement les instruments dans les applications. Par exemple, vous pouvez initialiser tous les instruments une fois au début, configurer plusieurs instruments, puis déclencher plusieurs instruments simultanément. En outre, vous pouvez initialiser et configurer un instrument une fois, puis déclencher et lire plusieurs fois à partir de l’instrument.
Le modèle fournit un modèle de driver d’instruments cohérent. Une fois que vous vous êtes familiarisé avec un driver d’instrument, vous pouvez appliquer vos connaissances à d’autres drivers d’instruments LabVIEW.
Figure 2 : Structure interne du driver d’instruments LabVIEW
Les VIs API de driver d’instruments sont divisés en six catégories :
Initialisation — Tous les drivers d’instruments LabVIEW doivent inclure un VI Initialize. Le VI Initialize établit la communication avec l’instrument ; c’est le premier VI de driver d’instruments appelé. Facultativement, le VI effectue une demande d’identification de l’instrument et des opérations de réinitialisation. Il peut également placer l’instrument à l’état de mise sous tension par défaut ou dans un autre état.
Configuration — Les VIs de configuration regroupent des sous-programmes servant à configurer l’instrument en vue de réaliser des opérations spécifiques. Habituellement, les API de driver d’instruments incluent plusieurs VIs de configuration. Le nombre de VIs de configuration pour un driver d’instruments dépend des capacités uniques de l’instrument. Une fois que vous avez appelé ces VIs, l’instrument est prêt à prendre des mesures ou à stimuler un système.
Action/État -- Il existe deux types de VIs d’action et d’état. Les VIs d’action commencent ou terminent des opérations de test et de mesure. Ces opérations comprennent l’armement d’un système de déclenchement ou la génération d’un stimulus. Ces VIs diffèrent des VIs de configuration car ils ne modifient pas les paramètres de l’instrument. Au lieu de cela, ils contrôlent l’instrument pour qu’il exécute une action en fonction de sa configuration actuelle. Les VIs d’état obtiennent l’état actuel de l’instrument ou l’état des opérations en cours. Les VIs d’état sont généralement créés lorsqu’ils sont requis par d’autres fonctions.
Données — Les VIs de données transfèrent des données vers ou depuis l’instrument. Les exemples comprennent les VIs utilisés pour lire une valeur ou une waveform mesurée et les VIs pour télécharger des waveforms ou des patterns numériques vers un instrument source. Les sous-programmes spécifiques de cette catégorie dépendent de l’instrument.
Utilitaire -- Les VIs d’utilitaires effectuent diverses opérations auxiliaires, telles que la réinitialisation et l’auto-test, et peuvent inclure d’autres routines personnalisées, telles que l’étalonnage ou le stockage et le rappel de configurations d’instruments.
Fermeture -- Le VI de fermeture arrête la connexion logicielle à l’instrument. Tous les drivers d’instruments LabVIEW doivent inclure un VI de fermeture.
Chaque catégorie de VIs, à l’exception des VIs Initialize et Close, contient plusieurs VIs modulaires. Une grosse partie du travail lors du développement d’un driver d’instruments réside dans la conception et l’organisation initiales des VIs API de driver d’instruments.
Vous pouvez télécharger des VIs modèles à partir de NI et les personnaliser pour effectuer des opérations communes à presque tous les instruments, telles que l’initialisation, la fermeture, la réinitialisation, l’auto-test et la demande de révision (Initialize, Close, Reset, Self-Test et Revision Query). Les VIs modèles contiennent des instructions de modification pour leur utilisation dans un driver d’instruments spécifique pour un instrument particulier. Reportez-vous à la section Modèles de drivers d’instruments LabVIEW pour en savoir plus sur la personnalisation des VIs modèles.
En plus de ces fonctions courantes, vous pouvez ajouter des VIs supplémentaires pour effectuer des opérations spécifiques aux instruments. Les VIs spécifiques que vous développez dépendent des capacités uniques de votre instrument. Toutefois, dans la mesure du possible, respectez les six catégories de VI de driver d’instruments.
En utilisant la structure de conception interne illustrée à la Figure 2, vous pouvez combiner des VIs de driver d’instruments pour créer des applications. Le diagramme de la figure ci-dessous illustre comment les VIs API des drivers d’instruments contrôlent par programmation le système d’acquisition HP34970A.
Figure 3 : Diagramme du VI Exemple de mesure du courant HP34970A
La figure 4 illustre le diagramme d’un des VIs API de driver d’instruments, qui utilisent des fonctions LabVIEW intégrées et des fonctions VISA pour construire des chaînes de commande et les envoyer à l’instrument. Les fonctions VISA assurent la gestion des appareils, les E/S d’instrumentation normalisées et la gestion des erreurs. Le VI spécifique de la figure 4 ci-dessous crée une chaîne de commande en combinant des opérations de formatage de chaîne, puis en câblant la chaîne résultante dans la fonction VISA Write. La fonction VISA Write envoie la chaîne de commande à l’instrument. La fonction VISA Read renvoie la chaîne de réponse de l’instrument. La chaîne de réponse est ensuite formatée en un tableau numérique à utiliser dans l’application. Le reformatage de la chaîne de réponse est bénéfique car elle permet de visualiser les données de réponse dans le format voulu. Le VI Error Query recherche les erreurs et met à jour le cluster d’erreurs.
Figure 4 : Créer une chaîne de commande
En plus des VIs API décrits par la structure interne, un driver d’instruments comprend également des exemples de VIs et un VI VI Tree.
Tous les drivers d’instruments incluent des exemples de VIs. Ces exemples illustrent comment combiner les VIs de driver d’instruments pour les opérations de test et de mesure de base avec l’instrument. Ils illustrent la fonctionnalité de test et de mesure en configurant l’instrument pour un mode de fonctionnement commun, le déclenchement et les mesures. Les VIs d’exemple vérifient également la communication avec l’instrument. Ces exemples doivent être ajoutés à l’outil de recherche d’exemples NI via la création d’un fichier *.bin3. La figure ci-dessous illustre la face-avant du VI d’exemple de mesure de courant HP34970A.
Figure 5 : Face-avant du VI d’exemple de mesure de courant HP34970A
Vous pouvez accéder aux VIs de driver d’instruments depuis la palette Fonctions de LabVIEW. Toutefois, les VIs VI Tree vous permettent d’afficher simultanément la hiérarchie complète des drivers d’instruments. Le VI VI Tree est un VI non exécutable conçu pour illustrer la structure fonctionnelle du driver d’instruments, comme l’illustre la figure suivante.
Figure 6 : Diagramme du VI VI Tree HP34970A
Cette section décrit la procédure de développement d’un driver d’instruments Plug and Play LabVIEW. Le driver d’instruments LabVIEW idéal vous permet de contrôler toutes les fonctionnalités de l’instrument. Comme il n’est pas possible de spécifier la fonctionnalité requise de tous les différents types d’instruments, tels que les multimètres, les compteurs/timers, cette section se concentre sur les règles architecturales pour tous les drivers. Utilisez ces informations pour vous aider à organiser et à conditionner vos drivers de manière cohérente tout en implémentant les fonctionnalités propres à votre instrument.
Suivez un processus en trois étapes pour développer un driver d’instruments LabVIEW. À l’étape 1, vous concevez la structure du driver d’instruments. À l’étape 2, vous utilisez l’Assistant de projet de driver d’instruments pour créer de nouveaux VIs de driver d’instruments. À l’étape 3, vous ajoutez des VIs définis par le développeur et vous créez des exemples de VIs.
Le driver d’instruments idéal répond aux besoins de l’utilisateur, ni plus ni moins. Aucun type particulier de conception de driver n’est parfait pour tout le monde, mais en étudiant attentivement l’instrument et en regroupant les commandes en VIs modulaires, vous pouvez satisfaire la plupart de vos utilisateurs.
Lorsque le nombre de commandes programmables dans un instrument augmente, le besoin d’une conception de driver d’instruments modulaire augmente également. N’essayez pas d’implémenter toutes les fonctionnalités d’un instrument avec un seul VI. Cependant, ne concevez pas un driver d’instruments dans lequel chaque VI contrôle une seule entité. Cette approche pourrait résulter en une API avec des centaines de VIs. En outre, cela pourrait obliger l’utilisateur final à devoir comprendre les règles spécifiques aux instruments en matière d’ordre et d’interaction des commandes. La conception modulaire simplifie la programmation nécessaire pour contrôler l’instrument.
Envisagez d’abord la structure globale de votre driver d’instruments avant de créer les VIs individuels. Concevez un driver d’instruments en tenant compte de l’application et de l’utilisateur final.
Les étapes suivantes décrivent une approche pour développer la structure d’un driver d’instruments LabVIEW.
L’organisation d’un driver d’instruments définit la hiérarchie et la relation globale des VIs des composants du driver d’instruments.
Il existe deux types de VIs API dans un driver d’instruments : ceux qui sont communs à tous les instruments et ceux qui présentent les capacités uniques de l’instrument. Les VIs modèle de driver d’instruments (Initialize, Close, Reset, Self-Test, Revision Querry et Error Query) exécutent ces opérations communes. Vous, en tant que développeur de drivers d’instruments, définissez les VIs qui présentent les capacités uniques de l’instrument. Certains drivers d’instruments peuvent définir des catégories supplémentaires, telles que « routage » ou « balayage » pour les instruments de commutation.
Regroupez les VIs communs et définis par le développeur par catégories. Une catégorie est un groupe de VIs effectuant des opérations similaires. Les catégories de VIs les plus courantes sont la configuration, l’action/l’état, les données et l’utilitaire.
Le tableau suivant montre un exemple d’organisation de driver d’instruments pour un oscilloscope simple. Au niveau le plus élevé de la hiérarchie, vous voyez les VIs modèle (Initialize et Close) et les catégories de VI types.
Tableau 1 : Exemple d’organisation pour un oscilloscope simple.
Hiérarchie du VI | Type |
---|---|
VI Initialize | (Modèle) |
Exemples de VIs Configuration automatique et Exemple Lire une waveform | (Développeur défini) |
VIs de configuration Configuration automatique Configurer la verticale Configurer l’horizontale Configurer le déclenchement Configurer le mode d’acquisition | (Développeur défini) (Développeur défini) (Développeur défini) (Développeur défini) (Développeur défini) |
VIs de données Lire la waveform Lire une mesure VIs avancés Initialiser Récupérer une waveform Récupérer les mesures | (Développeur défini) (Développeur défini) (Développeur défini) (Développeur défini) (Développeur défini) |
VIs d’Utilitaires Réinitialiser Auto-tester Requête de révision Requête d’erreur | (Modèle) (Modèle) (Modèle) (Modèle) |
VI Fermer | (Modèle) |
Consultez les informations sur l’organisation disponibles dans la plupart des manuels d’instruments pour vous aider à déterminer les paramètres à inclure dans un VI de driver d’instruments. En particulier, la section de programmation du manuel peut regrouper les commandes en sections, telles que la configuration d’une mesure, le déclenchement, la lecture de mesures, etc. Utilisez ces regroupements comme modèle pour la hiérarchie des drivers. Recherchez les commandes utilisées ensemble pour exécuter une tâche ou une fonction unique afin de vous aider à développer une structure pour le driver. Un driver modulaire contient des VIs individuels pour chaque groupe de commandes.
Le tableau ci-dessous illustre comment les commandes d’instrument pour un simple DMM peuvent correspondre à des VIs de driver d’instruments définis par le développeur.
Tableau 2 : Relations entre les sections du manuel et les commandes avec les VIs de drivers d’instruments.
Instrument virtuel Terminaux | Commandes d’instruments |
---|---|
Initialiser Requête d’ID ? Réinitialiser ? | Configuration entrée/sortie *IDN ? *RST |
Configuration de mesure Fonction de mesure | Configuration de mesure SENS:FUNC <sélection de fonction> <sélection de fonction>:RANGE ; <sélection de fonction>:RES ; <sélection de fonction>:NPLC ; |
Configuration de déclenchement Source de déclenchement | Opérations de déclenchement TRIG:SOUR TRIG:DEL TRIG:COUN SAMP:COUN |
Lectures de Lire les mesures | Lire les mesures Utilisez les commandes suivantes pour récupérer les mesures INIT; FETCH; |
Alors que le manuel de l’instrument peut fournir de nombreuses informations sur la manière de structurer le driver d’instruments, ne vous y fiez pas exclusivement. Votre connaissance de l’utilisation de l’instrument devrait être votre principal guide. Vous devez souvent placer des commandes provenant de plusieurs groupes de commandes différents dans un même VI. À d’autres moments, vous devez prendre un groupe de commandes du manuel et le diviser en deux VIs ou plus. Examinez comment le manuel d’un instrument regroupe les commandes de configuration de déclenchement avec les commandes qui exécutent réellement l’armement et l’exécution de déclenchement. Dans ce cas, séparez les commandes en deux VIs -- un qui configure le déclenchement et un qui arme ou déclenche l’instrument.
Étape 2. Utiliser l’Assistant de projet de driver d’instruments pour créer un nouveau driver d’instruments
Après avoir conçu la structure du driver d’instruments LabVIEW, utilisez l’Assistant de projet de driver d’instruments pour créer un nouveau driver d’instruments, puis modifiez les nouveaux VIs de driver d’instruments pour qu’ils fonctionnent avec votre instrument.
Dans LabVIEW 8.x et versions ultérieures, l’Assistant de projet de driver d’instruments peut être utilisé pour créer un nouveau projet de driver d’instruments.
Suivez les étapes suivantes pour créer un driver d’instruments en utilisant l’Assistant de driver d’instruments.
Ajoutez les VIs d’API définis par le développeur qui définissent la fonctionnalité du driver d’instruments et accèdent aux capacités uniques de l’instrument.
L’Assistant de VI driver d’instruments peut créer des VIs supplémentaires supportés par l’instrument. Si vous avez créé un driver à partir d’un modèle source, comme le modèle Multimètre numérique, l’instrument supporte probablement des fonctionnalités supplémentaires qui ne sont pas couvertes par le modèle. Vous devez créer des VIs supplémentaires pour chaque fonctionnalité supportée, en utilisant des structures et des VIs existants comme modèle. Par exemple, les oscilloscopes possèdent généralement plusieurs types de déclenchement mais le modèle Oscilloscope intègre uniquement le déclenchement par front. Si l’instrument supporte d’autres types de déclenchement, ajoutez cette fonctionnalité avec des VIs drivers d’instruments supplémentaires.
Suivez les étapes suivantes pour créer un driver d’instruments en utilisant l’Assistant de driver d’instruments.
• VIs : Noms et propriétés
• Commandes/Indicateurs : Nommage et représentation des données
• Faces-avant de VIs
• Icônes et connecteurs
• Diagrammes
• Documentation
Après avoir modifié chaque VI, créez les menus de la palette Fonctions afin de pouvoir installer et utiliser les drivers d’instruments et y accéder à partir de la palette Fonctions. Par souci de cohérence, les drivers d’instruments doivent apparaître dans la sous-palette VI de driver d’instruments. Dans la sous-palette, les VIs d’instruments doivent avoir la même organisation que le modèle de conception interne, comme le montre la figure ci-dessous.
Figure 7 : Exemple de sous-palette pour le FL45
Outre les commandes nécessaires pour faire fonctionner l’instrument, la face-avant doit inclure la commande Nom de ressource VISA, l’indicateur Nom de ressource VISA en sortie, la commande entrée d’erreur et l’indicateur sortie d’erreur. Reportez-vous à la section Bibliothèques de support de drivers pour en savoir plus sur les handles de session VISA. Dans LabVIEW 7.1 ou versions antérieures, reportez-vous au chapitre 6 du Manuel de l’utilisateur LabVIEW (lien ci-dessous) pour de plus amples informations sur les paramètres d’entrée d’erreur et de sortie d’erreur. Dans LabVIEW 8.0 ou versions ultérieures, reportez-vous à la rubrique Gestion des erreurs de l’Aide LabVIEW (ci-dessous).
Respectez les règles de style suivantes pour vous assurer de l’uniformité avec les autres faces-avant de LabVIEW lors de la conception des faces-avant. Reportez-vous aux sections Commandes/Indicateurs : Nom et représentation des données et Face-avant du manuel Instrument Driver Guidelines pour toutes les indications et les recommandations quant à la création des faces-avant du driver d’instruments.
Réservez le terminal supérieur gauche du connecteur pour la commande Nom de ressource VISA et le terminal supérieur droit pour l’indicateur Nom de ressource VISA en sortie. Réservez le terminal inférieur gauche pour la commande entrée d’erreur et le terminal inférieur droit pour l’indicateur de sortie d’erreur pour simplifier le câblage vers les terminaux d’erreur suivants. Sélectionnez un modèle de connecteur qui a plus de terminaux que le nombre de commandes et d’indicateurs car vous pouvez ajouter des commandes ou des indicateurs au connecteur ultérieurement. Cette précaution vous empêche de modifier le modèle et de remplacer toutes les instances d’appels vers un sous-VI modifié. Placez les entrées sur la gauche et les sorties sur la droite pour promouvoir un flux de données de gauche à droite sur le diagramme.
Utilisez des icônes pertinentes pour chaque VI. Utilisez les icônes du Glossaire des graphiques dans la mesure du possible. En outre, vous pouvez emprunter des icônes à partir de VIs similaires dans d’autres drivers d’instruments ou utiliser la bibliothèque d’icônes Icon256.vi située dans le répertoire labview\examples\instr\insticon.llb. Incluez le préfixe du driver d’instruments en haut de l’icône afin que les utilisateurs puissent identifier les VIs à partir de l’API de driver. Créez une icône en utilisant des glyphes et des images qui représentent la fonctionnalité du VI. La figure ci-dessous montre des exemples d’icônes de configuration de Icon256.vi.
Figure 8 : Exemple d’icône
Reportez-vous à la section Icône et connecteur du manuel Instrument Driver Guidelines pour connaître les indications et recommandations pour créer des icônes ayant un sens et concevoir des connecteurs.
Après avoir conçu la face-avant, créez le diagramme. Utilisez la fonction Formater en chaîne pour créer des chaînes de commande d’instrument. Cette fonction extensible formate plusieurs valeurs et plusieurs types de données dans une chaîne. Double-cliquez sur la fonction pour entrer les commandes de format à l’aide de la boîte de dialogue Formater en chaînes. Utilisez également les fonctions Ajouter la chaîne Vrai/Faux et Ajouter une chaîne multiligne pour manipuler des chaînes. Par exemple, utilisez la fonction Ajouter la chaîne Vrai/Faux pour convertir la valeur d’une chaîne booléenne de la face-avant en chaîne. Cette fonction sélectionne la chaîne appropriée et la concatène à la chaîne de commande en une seule étape. Utilisez la fonction Ajouter une chaîne multiligne pour convertir une valeur menu déroulant texte en chaîne. Cette fonction sélectionne la chaîne appropriée en fonction de la valeur de l’étiquette et la concatène avec la chaîne de commande. Reportez-vous à l’Aide LabVIEW (ci-dessous) pour obtenir des descriptions de ces fonctions. Le diagramme de la figure ci-dessous illustre les meilleures méthodes pour créer des chaînes de commande.
Figure 9 : Techniques de construction de chaînes
De nombreux instruments sont conformes à l’ensemble des commandes et à la syntaxe de programmation SCPI (Standard Commands for Programmable Instruments). Ces instruments basés sur SCPI vous permettent de relier plusieurs commandes ensemble pour envoyer une opération d’écriture d’E/S. Les fonctions de chaîne décrites ci-dessus vous permettent de créer des chaînes qui incluent plusieurs commandes. Connectez la chaîne combinée à la fonction VISA Write.
Le fonctionnement du VI se comprend principalement à partir du diagramme. Il est donc essentiel que les diagrammes soient aussi lisibles que possible. La plupart des recommandations pour les diagrammes de drivers d’instruments sont similaires aux meilleures pratiques pour toutes les applications LabVIEW, qui incluent une disposition de gauche à droite du diagramme, minimisant les coudes des fils et utilisant des techniques de codage efficaces et cohérentes. Reportez-vous à la section Diagramme du manuel Instrument Driver Guidelines pour connaître les indications et les recommandations spécifiques pour la création d’un diagramme de driver d’instruments.
Le diagramme de la figure ci-dessous respecte les indications et les recommandations détaillées dans le manuel Instrument Driver Guidelines.
Figure 10 : Diagramme simple respectant les règles de style
Les outils LabVIEW pour le développement de drivers d’instruments incluent une bibliothèque de VIs servant de point de départ pour créer vos propres drivers, l’Assistant de projet de driver d’instruments qui personnalise ces modèles, les fonctions VISA pour effectuer les E/S d’instrument, les bibliothèques d’icônes pour créer des icônes ayant un sens et les fonctions et fichiers de support. Cette section décrit les fonctions VISA et les VIs modèle de driver d’instruments.
VISA
Les fonctions VISA contiennent l’interface E/S utilisée par les drivers d’instruments pour communiquer avec des instruments programmables. VISA fournit une bibliothèque d’interface unique permettant de contrôler les instruments VXI, GPIB, Serial, TCP/IP et autres. Reportez-vous à la rubrique VIs et fonctions VISA de l’Aide LabVIEW (ci-dessous) pour obtenir une description des fonctions et des commandes VISA.
La face-avant de la plupart des VIs de drivers d’instruments comprend une commande Nom de ressource VISA et un indicateur Nom de ressource VISA en sortie. Ces commandes et indicateurs transmettent des informations de session entre les sous-VIs de driver d’instruments. Le nom de ressource VISA identifie la ressource sur laquelle le VI fonctionne. Il fait aussi la distinction entre les différentes sessions du driver d’instruments.
Nom de ressource VISA est une référence d’identifiant unique à une session d’E/S de périphérique (à l’exception du VI Initialize). Il identifie le périphérique avec lequel le VI communique et transmet toutes les informations de configuration nécessaires pour effectuer l’opération d’E/S.
Nom de ressource VISA en sortie contient les mêmes informations sur l’identificateur que Nom de ressource VISA. Cette commande transmet la référence du VI vers d’autres VIs qui accèdent au même instrument. Câbler des noms de ressources VISA entre eux établit une dépendance des données.
Vous pouvez également passer le nom de ressource VISA dans et hors des fonctions VISA sur le diagramme.
VIs modèle de driver d’instruments
Les modèles de drivers d’instruments LabVIEW, situés dans le dossier instr.lib, contiennent un ensemble de VIs communs à la plupart des instruments. NI met à jour ces modèles périodiquement et les inclut dans la dernière version de LabVIEW. Utilisez ces VIs comme point de départ pour le développement de votre driver d’instruments. Les modèles ont une structure simple et flexible. Ils établissent un format standard pour tous les drivers LabVIEW.
Les VIs modèle contiennent des instructions pour modifier les VIs d’un instrument particulier. Utilisez les VIs modèle avec des instruments basés sur des messages (GPIB, VXI et série) et des instruments basés sur des registres VXI. Étant donné que les modèles ont été conçus pour des instruments compatibles IEEE 488.2, des modifications minimes sont nécessaires pour les instruments conformes à la norme IEEE 488.2. Pour les autres instruments, utilisez les VIs modèle comme modèle pour vos VIs en substituant vos commandes spécifiques à l’instrument le cas échéant.
Documentation des VIs
Documentez les VIs que vous créez afin que les informations apparaissent dans la fenêtre d’Aide contextuelle LabVIEW pour chaque driver d’instruments. Reportez-vous à la rubrique Documenter les VIs de l’Aide LabVIEW (ci-dessous) pour en savoir plus sur la documentation des VIs.
Sélectionnez Aide»Afficher l’aide contextuelle pour accéder à la fenêtre d’Aide contextuelle. Lorsque vous déplacez le curseur sur des objets de la face-avant ou du diagramme, ou sur l’icône dans le coin supérieur droit de la face-avant ou du diagramme, une description de cet objet apparaît dans la fenêtre d’Aide contextuelle.
En outre, utilisez des étiquettes libres sur la face-avant et le diagramme pour aider l’utilisateur. Sur le diagramme, affichez toutes les étiquettes de terminal (texte brut) et coloriez les bordures transparentes. Utilisez du texte en gras dans les étiquettes libres qui apparaissent dans les structures Condition et Séquence pour faire ressortir le commentaire et faciliter la compréhension et la modification du VI.
Rapport d’erreurs
Les rapports d’erreurs des drivers d’instruments sont similaires aux rapports d’erreurs de la plupart des autres applications LabVIEW. Les fonctions VISA vérifient l’état booléen du cluster entrée d’erreur pour déterminer si un VI ou une fonction précédemment exécuté a généré une erreur. Si le VI ou la fonction détecte une erreur, la fonction VISA ne fonctionne pas normalement. Au lieu de cela, il transmet les informations au cluster sortie d’erreur sans modification. Si le VI ou la fonction ne détecte pas d’erreur, la fonction VISA s’exécute normalement et détermine si elle a généré une erreur. Si c’est le cas, la fonction renvoie de nouvelles informations sur l’erreur dans le cluster sortie d’erreur. Sinon, la fonction renvoie les informations d’entrée d’erreur dans le cluster sortie d’erreur. La première erreur empêche les VIs suivants (ou toute autre action définie par l’utilisateur) de s’exécuter et le code d’erreur et la source de l’erreur se propagent sur la face-avant de niveau supérieur. De plus, les avertissements (codes d’erreur et messages source avec l’erreur booléenne définie sur FAUX) passent sans déclencher d’actions d’erreur.
En plus des codes d’erreur VISA, les codes d’erreur et d’avertissement répertoriés dans le tableau ci-dessous sont réservés aux drivers d’instruments. Les VIs de drivers d’instruments doivent renvoyer ces codes lorsque les conditions appropriées se présentent. Vous pouvez voir des codes d’erreur comme -1300 pour des erreurs spécifiques aux instruments dans les anciens drivers d’instruments et les anciens modèles de drivers d’instruments. Toutefois, utilisez les codes du tableau suivant pour garantir la conformité aux normes de driver d’instruments.
Tableau 3 : Code décimal des codes d’erreur du driver d’instruments
Code décimal | Code hexa | Signification |
---|---|---|
0 | 0 | Pas d’erreur : l’appel a réussi |
1073481728 à 1073483775 | 3FFC0800 à 3FFC0FFF | AVERTISSEMENT : Avertissements définis par le développeur |
-1074003951 | BFFC0011 | ERREUR : La demande d’identification a échoué |
-1074000000 | BFFC0F80 | ERREUR : Erreur définie par l’instrument |
-1073999873 à -1074001919 | BFFC0801 à BFFC0FFF | ERREUR : Erreurs définies par le développeur |
Le VI Initialize utilise l’erreur « La demande d’identification a échoué. » Le VI Error Query utilise le « Code d’erreur défini par l’instrument ».
État de la demande d’instrument
Presque tous les instruments ont un mécanisme pour signaler les erreurs définies par l’instrument. Les erreurs définies par l’instrument comprennent les erreurs de commande, les erreurs d’exécution et les erreurs de requête. De nombreux instruments récemment fabriqués incluent une commande de requête pour déterminer si une erreur d’instrument s’est produite. Pour les instruments SCPI, la commande standard pour récupérer les erreurs de l’instrument est « SYST:ERR? ». La réponse à cette commande inclut un code d’erreur et un message d’erreur. Si aucune erreur ne s’est produite, la réponse est « 0, « Pas d’erreur ».
Si l’instrument ne prend pas en charge la commande « SYST:ERR? », mais prend en charge les registres d’état IEEE 488.2, vous pouvez interroger le Registre des événements standard pour déterminer si une erreur s’est produite.
Utilisez le VI Error Query dans les VIs de driver d’instruments pour implémenter le mécanisme de rapport d’erreur de l’instrument afin de signaler les erreurs d’instrument à l’utilisateur. Les drivers d’instruments ne redéfinissent pas les erreurs d’instrument dans le driver d’instruments. Au lieu de cela, le VI Error Query signale le code d’erreur et le message associé que l’instrument rapporte.
Si vous n’utilisez pas le VI Error Query pour rechercher des erreurs dans l’instrument, vous risquez de ne pas savoir que les utilisateurs finaux ont commis une erreur, même s’ils utilisent le Gestionnaire d’erreur simple. Il est possible d’envoyer et de recevoir des données de l’instrument sans provoquer d’erreur d’E/S, mais cela ne signifie pas nécessairement une erreur de l’instrument.
Pour obtenir rapidement des informations sur les erreurs d’instrument, la plupart des VIs API appellent le VI Error Query après toutes les opérations d’E/S. Lorsqu’une erreur d’instrument se produit, les techniques standard de gestion des erreurs LabVIEW, telles que l’appel du VI Gestionnaire d’erreur simple, vous notifient automatiquement de l’erreur. Le VI Error Query met à jour le cluster d’erreurs avec le code de code d’erreur -1074000000 (Hex : BFFC0F80) si une erreur est détectée et place les informations d’erreur renvoyées par l’instrument dans le message source. Les VIs Gestionnaire d’erreurs LabVIEW identifient le code de code d’erreur -1074000000 comme une erreur spécifique à l’instrument et génèrent un message d’erreur approprié. La figure ci-dessous montre la face-avant du VI Error Query.
Figure 11 : Face-avant du VI Error Query
Les VIs API de bas niveau n’appellent pas le VI Error Query. De nombreux VIs API de bas niveau sont conçus principalement pour améliorer les performances ou pour mieux contrôler les opérations de l’instrument. Par exemple, un driver d’instruments d’oscilloscope peut implémenter un VI Read Waveform pour renvoyer des données de waveform basées sur des canaux. Pour avoir plus de contrôle, vous devez implémenter les VIs Initiate et Fetch. Les VIs Initiate et Fetch de bas niveau vous permettent de mieux contrôler le moment où les opérations se produisent. Par conséquent, ces VIs de bas niveau n’appellent pas le VI Error Query.
Certains instruments ont une file d’attente d’erreurs qui stocke les erreurs et les événements au fur et à mesure qu’ils sont détectés. Cette file d’attente est de type « premier entré, premier sorti » (FIFO), avec une longueur minimale de deux messages. En cas de débordements, l’instrument conserve les erreurs/événements les plus récents et remplace l’erreur/événement le moins récent par un message de dépassement de file d’attente. Dans votre driver d’instruments, utilisez cette file d’attente pour détecter et signaler les erreurs d’instrument en interrogeant l’instrument après l’envoi des commandes. En émettant la commande :SYST:ERR?, les instruments SCPI renvoient une entrée de la file d’attente qui peut être une erreur, un avertissement de dépassement de capacité ou le message 0, « Aucune erreur ». Vous pouvez vouloir récupérer la file d’attente d’erreurs complète, de sorte que de nombreux drivers d’instruments incluent également un VI Error Query (Multiple). Ce VI interroge l’instrument avec la commande :SYST:ERR? jusqu’à ce que la file d’attente d’erreurs soit vide.
Le code généré par l’Assistant de projet de driver d’instruments inclut le VI Error Query.
Les VIs de driver d’instruments n’effectuent généralement pas de vérification de la gamme sur les paramètres d’entrée. Si un utilisateur passe une valeur non valide, l’instrument doit signaler une erreur spécifique à l’instrument. Le VI Error Query détecte cette erreur de l’instrument et signale la condition de dépassement de gamme. Les informations de gamme de documents dans le VI et l’aide de la commande vous permettent de ne pas rencontrer d’erreurs de dépassement de gamme.
Règles supplémentaires de style
La cohérence entre les drivers d’instruments est de mise. Le développement de faces-avant simples et de diagrammes avec une mise en page facile à comprendre est moins intimidante quand il s’agit de modifier le code ultérieurement. Vous pouvez avoir besoin de modifier le code pour l’optimiser en fonction de vos besoins particuliers. Reportez-vous au manuel Instrument Driver Guidelines pour en savoir plus sur les règles de style.
Tester l’opération
Testez votre driver d’instruments au fur et à mesure que vous le développez. Bien que la fenêtre d’Aide contextuelle peut être utilisée pour déterminer les entrées des VIs, vous pouvez décider ne pas l’utiliser pour déterminer les entrées des VIs et transmettre des données non valides aux VIs. Par conséquent, testez vos VIs avec des données non valides, des conditions et des gammes aux limites et des combinaisons inhabituelles d’entrées. Si un sous-VI requiert des informations de chaîne ou de tableau, connectez un tableau vide ou une chaîne vide à l’entrée du VI.
Définir la structure des VIs est l’étape la plus importante dans le développement d’un driver d’instruments. Regroupez les commandes d’instruments associées en VIs modulaires, chacune effectuant une tâche de la même manière que vous utiliseriez l’instrument à partir de sa face-avant. Avec ce type de structure, chaque VI fournit aux utilisateurs exactement ce dont ils ont besoin pour effectuer un fonctionnement particulier de l’instrument. Déterminer quelles commandes appartiennent à chaque VI est le plus grand défi dans le développement de drivers d’instruments.
La structure logique, la documentation et le rapport d’erreurs sont les caractéristiques les plus importantes du driver d’instruments. Incluez les commentaires appropriés dans toutes les zones de description et documentez votre code avec des commentaires dans les diagrammes. Générez des rapports d’erreurs utiles dans vos VIs en utilisant les techniques décrites dans ce document. Testez soigneusement tous vos VIs pour vous assurer qu’ils fonctionnent correctement.
Le développement de drivers d’instruments va au-delà de la construction et de l’envoi de chaînes aux instruments. Utilisez l’Assistant de projet de driver d’instruments et les milliers de drivers d’instruments disponibles sur le réseau de drivers d’instruments NI (ni.com/idnet). Les modèles contiennent des VIs communs à la plupart des instruments et illustrent le style et la structure souhaités des VI de driver d’instruments. Utilisez les drivers d’instruments existants pour vous aider à créer votre propre driver d’instruments. Suivez la structure de conception interne et gardez à l’esprit les catégories de VIs API lors de la création de vos VIs. Utilisez le manuel Instrument Driver Guidelines tout au long de votre processus de développement de driver pour vous assurer de créer des drivers d’instruments de haute qualité. Ces outils vous aident à concevoir des drivers d’instruments acceptables pour un large éventail d’utilisateurs.