luc desruelle's Blogue

Community Browser
cancel
Showing results for 
Search instead for 
Did you mean: 

Pilotage des instruments avec LabVIEW et VISA (driver d’instruments)

Trusted Enthusiast
Cet article est constitué d’extraits du livre français sur LabVIEW : « LabVIEW programmation et applications ». Il ne traite que de la réalisation d’un driver d’instrument en VISA. Pour des informations plus complètes sur DAQmx, IVI, les commandes E/S directes, dll externe, la réalisation de driver Plug & Play LabVIEW, la recherche de driver IDNet, etc… je vous conseille le chapitre 4 qui aborde cela en détail.

 

1      Rappel : Le driver (ou pilote) et le logiciel d’application

Les architectures des instruments et des cartes d'acquisition (DAQ) font apparaître deux éléments communs que sont le driver et le logiciel d’application.

 

Le logiciel d’application (ou l’application principale) est le code réalisé pour permettre à l’utilisateur de piloter la chaîne d’instrumentation, analyser, sauvegarder et présenter les données.

 

Le driver est le programme qui fait le lien entre le logiciel d’application et le matériel. Il est chargé de traduire les commandes LabVIEW pour les rendre compréhensibles par la carte ou l’instrument. Il facilite le travail des développeurs en évitant une programmation fastidieuse et spécifique dans les registres bas niveau de la carte. Voici quelques exemples :

  • Les cartes d’acquisition et de génération de signaux : National Instruments fournit un driver unique qui est compatible avec toutes les cartes, qui est NI-DAQmx.
  • Les instruments : nous utiliserons le driver VISA ou IVI ou un driver spécifique livré par le fabricant avec le matériel. Sous LabVIEW, un driver d’instrument est un ensemble de VIs contenant des fonctions de haut niveau qui permettent de contrôler cet instrument, telles que la configuration, la lecture des mesures, etc. Il inclut et rend donc transparent les commandes de l’appareil et le protocole de communication spécifique au bus. La liste des commandes est décrite dans le manuel de programmation de l’instrument et elle va permettre de coder le driver de l’instrument.

2      Rappel VISA - Virtual Instrumentation Software Architecture

Au début des années 1990 le consortium VXIplug&play Systems Alliance a développé la spécification du logiciel d’E/S VISA, pour Virtual Instrumentation Software Architecture. VISA définit des fonctions d’entrées/sorties standard pour la programmation d'instruments. Ces fonctions :

  • s’interfacent toujours de la même manière quel que soit le matériel de connexion (GPIB, Série, USB, Ethernet, PXI, VXI) ;
  • sont indépendantes de la plate-forme matérielle et système d’exploitation.

Par exemple, un programme développé sur PC Windows pour piloter un oscilloscope en liaison GPIB sera identique à un programme développé sous Linux pour le piloter par une liaison série.

Les drivers « LabVIEW Plug & Play » et « IVI » utilisent la puissante librairie d’entrées / sorties de VISA VISA I/O.

7.pngLes drivers LabVIEW plug&play et IVI s’appuient sur la puissante librairie VISA. VISA permet d’avoir des fonctions logiciels identiques quelle que soit la connexion (GPIB, Série, USB, Ethernet, etc.).

3      Zoom sur les fonctionnalités de VISA

L’API du driver VISA, Virtual Instrumentation Software Architecture, installe sous LabVIEW une bibliothèque de fonctions constituées de VIs et de propriétés.

Dans la réalité, seulement 6 fonctions sont nécessaires pour écrire la très grande majorité des drivers : Ouverture, fermeture, temps d'attente, lecture, écriture et paramètrage.

 

Ouverture, Fermeture de la communication et Timeout

Ces trois fonctions (ouverture, fermeture et timeout) sont disponibles dans la palette VISA avancée. Ce sont les trois paramètres de base de la communication avec un instrument de mesure :

1. Un driver commence toujours par un VISA Open qui permet d’ouvrir une session sur le périphérique spécifié, à faire une seule fois en début de programme ;

2. La fonction d’ouverture est toujours suivie par la configuration du TimeOut, qui est le temps d’attente maximum lors d’une interrogation sur l’instrument, par défaut 10 secondes. Elle est disponible au travers d’une propriété ;

3. Le code du driver se termine toujours par un VISA Close qui permet de fermer la session sur le périphérique (à faire une seule fois uniquement en fin de programme).

Écriture des données dans l’instrument

4. Pour écrire des données dans l’instrument, on utilise VI VISA Write. Nous utiliserons uniquement la communication basée sur des messages, c’est-à-dire avec l’envoi de chaînes de caractères ASCII, et pas celle basée sur l’écriture de registre.

Lecture des données dans l’instrument

5. Pour la lecture des données retournées par l’instrument, on utilise VI VISA Read. Il est très important de comprendre que cette fonction retourne les données contenues dans le buffer dès qu’une de ces 3 conditions est présente :

      • Un caractère de terminaison est arrivé ;
      • Le nombre d’octets dans le buffer de réception est égal à celui passé en paramètre à la fonction VISA Read ;
      • Le temps d’attente a dépassé le TimeOut. Dans ce cas LabVIEW retourne un code d’erreur, 0xBFFF0015, le délai d’attente (timeout) a expiré avant que l’opération ne soit achevée.

Paramétrage du port série

6. Il faut configurer les paramètres du port série de l’ordinateur pour être en adéquation avec la configuration du protocole de l’instrument, via la fonction VISA Configure Serial Port.vi de la sous-palette Série. En effet, la communication série autorise des options de paramétrages, comme le baud rate, le nombre de bits de données, la parité, le timeout mais également l’activation et la définition du type de caractères de fin de communication.

Nom de la ressource VISA

L’API VISA est une interface capable d’appeler automatiquement les fonctions bas niveau de communication appropriées, grâce à un seul paramètre Nom de la Ressource VISA.

Nom de la Ressource VISA

Exemple

Description du BUS

GPIB ::adresse ::INSTR

1.png

GPIB

Alias VISA

 2.png

Série, ALIAS configuré dans MAX.

TCPIP ::adresse ::INSTR

 3.png

LXI sur le LAN Ethernet

4.pngseulement 6 fonctions sont nécessaires pour écrire la très grande majorité des drivers.

4      Exemples Pilotage d’un instrument avec lecture d’un nombre fixe d’octets

Dans cet exemple, nous allons illustrer la lecture du nom d’indentification d’un appareil. L’appareil est à l’adresse GPIB 12 sur le bus et il répond « 73 octets » à la commande « *IDN ? » :

  1. Ouverture d’une communication avec l’appareil de mesure sur le port GPIB à l’adresse 12 (GPIB ::12 ::INSTR) ;
  2. Configuration du timeout de communication à 2 000 ms ;
  3. Écriture de la commande « *IDN ? » qui permet de demander le nom d’identification à l’appareil ;
  4. Attente de la réponse de l’appareil. Cette réponse est composée de 73 octets et sera disponible au format ASCII dans le « buffer de lecture ». Si l’appareil ne répond pas 73 octets en 2 secondes, nous aurons une erreur LabVIEW ;
  5. Fermeture de la session.

5.pngExemple du pilotage d’un instrument GPIB via VISA.

5      Exemple Pilotage d’un instrument Série avec caractère de fin de communication

Dans cet exemple, nous allons illustrer la lecture du nom d’indentification d’un appareil sur le bus série. Le port série utilisé sera le port « COM2 », les réponses de l’instrument seront formatées avec un caractère de fin de communication :

  1. Permet l’ouverture d’une communication avec l’appareil de mesure sur le port COM2 ;
  2. La configuration des paramètres du port série est réalisée par la fonction VISA Configure Serial Port.vi de la sous-palette Série. Elle permet de définir le baud rate, le nombre de bits, la parité, le timeout mais également l’activation et la définition du type de caractère de fin de communication. Dans cet exemple, le caractère de fin est le code ASCII 0xA, soit le code « LF » pour « retour à la ligne » ;
  3. Écriture de la commande « *IDN ? » qui demande à l’instrument son nom d’identification ;
  4. Attente de la réponse de l’instrument. Nous avons configuré le driver pour attendre un caractère de fin de transmission. Nous allons donc paramétrer un nombre d’octets à attendre supérieur au nombre réellement attendu. En effet, si nous nous rappelons les 3 conditions d'arrêt possibles (nombre de caractères attendus reçus, time-out et caractère de fin présent), le code dans cet exemple stoppera uniquement sur le caractère de fin ou le time out. Dans le cas du time-out, si l’instrument ne retourne pas une réponse en 2 secondes, nous aurons une erreur LabVIEW. ;
  5. Fermeture de la session.

 

6.pngFigure 4.57– Exemple du pilotage d’un instrument série via VISA.

L’encapsulation dans un VI LabVIEW des fonctions de pilotage d’instrument permet de réaliser un driver d’instrument. Dans ces exemples simples, nous avons mis en évidence la facilité avec laquelle la palette VISA permet de piloter un instrument. Cependant, et comme toujours, facilité ne veut pas dire qu’il n’y a aucune règle à suivre.

banniere Luc Livre NXG Champion.png

Luc Desruelle | Mon profil | Mon blog LabVIEW
Auteur livre LabVIEW : Programmation et applications - Introduction à LabVIEW NXG
Certified LabVIEW Architect (CLA) & Certified TestStand Developper (CTD)
LabVIEW Champion