SCPI instruments

Instruments de banc qui parlent SCPI, comme les multimètres, les alimentations, les charges électroniques et les centrales d'acquisition, sur TCP, sur ligne série, ou en USB et GPIB par VISA : comment chacun est atteint, la carte Instrument de mesure, les requêtes et les commandes d'écriture, la découverte et deux exemples complets.

Afficher en Markdown

Le pilote SCPI instruments lit et écrit les instruments de banc qui parlent SCPI, le langage de commande des équipements de test IEEE 488.2 : multimètres, alimentations, charges électroniques, centrales d'acquisition comme la Fluke 1586A Super-DAQ, calibrateurs, de Keysight, Rigol, Tektronix, Siglent, GW Instek, B&K Precision, Fluke et des autres. Chaque tag pose une requête à l'instrument, comme MEAS:VOLT:DC? ou READ?, et lit sa réponse; un tag qui est écrit envoie une commande qui contient la valeur, comme VOLT 5. C'est l'échange qu'un programme LabVIEW fait par VISA, réglé dans un panneau au lieu d'être câblé dans un diagramme, et les valeurs arrivent là où arrivent celles de tout autre tag : dans la Logique, sur les tableaux de bord, dans les essais d'un banc de test de Process.

Un instrument est atteint de l'une de trois façons, choisie à la création de son équipement :

Transport Comment l'instrument est atteint Pour
TCP (socket LXI) Le socket SCPI de l'instrument, à son hôte et à son port, 5025 sur la plupart des instruments LXI. Rien n'est installé sur cet ordinateur. Un instrument doté d'un port réseau.
VISA (USB, GPIB, réseau) Par le VISA installé sur cet ordinateur, au nom de ressource VISA de l'instrument. Le produit n'installe aucun VISA : il utilise NI-VISA ou la Keysight IO Libraries Suite là où l'un d'eux est installé. Un instrument en USB ou sur une interface GPIB, ou un instrument réseau que VISA atteint par son propre nom.
Sur une ligne série Une ligne série de ce pilote, partagée avec les autres instruments qui s'y trouvent, une requête à la fois. Un instrument doté d'un port RS-232 ou RS-485.

Un instrument sur une ligne série est accroché sous sa ligne, si bien que cette partie de l'arborescence se lit Pilote → Ligne → Équipement → Tag, comme sous Generic serial and TCP. Un instrument atteint en TCP ou par VISA se trouve sous le pilote et peut être rangé dans des dossiers comme l'équipement de n'importe quel autre pilote, Pilote → Dossier → Équipement → Tag. Un équipement reste du côté où il a été créé : TCP et VISA s'échangent, mais un équipement ne passe jamais d'une ligne au réseau ni du réseau à une ligne.

La page du pilote

La phrase sous l'en-tête dit « Les lignes série portent les instruments qui partagent un bus, et les instruments atteints en TCP ou par VISA se trouvent sous le pilote. Ajoutez une ligne ou un équipement, puis ouvrez-le pour indiquer ses requêtes. » et la page porte, l'une sous l'autre :

Partie Ce qu'elle contient
Lignes série Les lignes du pilote, qui grandissent par Ajouter une ligne, à droite de son titre : Ligne, Réglages physiques (port · débit · format, sans délai, puisqu'une ligne de ce pilote n'en a pas), Équipements, État, et les actions Ouvrir, Activer, Désactiver et Supprimer. Vide, elle indique « Aucune ligne série pour l'instant. »
Portée du balayage L'adresse que Découvrir interroge en plus des instruments que VISA liste; voir Découverte. Dessinée pour Configurer le connector seulement.
Équipements Tous les équipements du pilote, ceux d'une ligne compris, avec les colonnes du tableau des équipements de n'importe quel pilote, qui grandit par Ajouter un équipement, à droite de son titre, qui crée un équipement TCP. Vide, il indique « Aucun équipement pour l'instant. »

L'en-tête compte les équipements entre parenthèses, et la ligne du pilote dans l'arborescence compte les deux niveaux dès qu'une ligne existe (« 1 ligne · 2 équipements »). La barre du pilote porte Découvrir. Le clic droit sur la ligne du pilote propose Ajouter un équipement, Ajouter une ligne, Nouveau dossier, Actualiser et Découvrir, puis, après un séparateur, Retirer le pilote; dans le menu Nouveau… de la colonne, l'entrée du pilote propose Nouvel équipement, Nouvelle ligne série et Nouveau dossier, puis ses lignes, ses dossiers et ses équipements. Une fois ajouté, le pilote se range sous le dossier Pilotes de l'arborescence, avec ou sans ligne ni équipement.

Ligne série

Une ligne de ce pilote est la ligne décrite dans Lignes série, avec les champs d'une ligne du pilote Generic serial and TCP. Sa page dit « Un bus série physique : les réglages de port que partagent ses instruments, une requête à la fois. » et sa carte Ligne physique porte Nom, Port série (avec Actualiser), Débit (bauds) et Format série, les dix formats proposés, six à 8 bits et quatre à 7 bits. Elle n'a ni mode de transmission, ni délai de réponse, ni intervalle minimal entre transactions, ni carte de découverte des unités : chaque instrument dit sur sa propre carte Instrument de mesure ce qui termine ses messages et combien de temps il attend une réponse, et un instrument se distingue par ce qu'on lui demande, non par une adresse, si bien que le tableau Équipements de la ligne n'a pas de colonne ID d'unité.

Une ligne créée ici naît désactivée, pour que les réglages de port soient saisis avant que le port s'ouvre; le port, le débit et le format ne changent que ligne désactivée. Ajouter un équipement sur la ligne, ou dans son menu du clic droit, crée un équipement de ce pilote sur cette ligne. Une ligne appartient pour de bon au pilote sous lequel elle a été créée : aucun équipement d'un autre pilote n'y va, et un port appartient à une ligne, quel que soit le pilote de la ligne.

Le pilote ouvre le port une seule fois pour tous les instruments de la ligne et envoie une requête à la fois, en attendant sa réponse avant la suivante. Il garde DTR actif tant que le port est ouvert, car un instrument qui cadence sa sortie par DTR et DSR, comme le Keysight 34401A ou une alimentation E36xx, n'envoie rien tant que DTR est inactif. Un port qui tombe en panne est rouvert après une pause qui double de 1 seconde jusqu'à 1 minute tant qu'il continue d'échouer, et chaque instrument qui s'y trouve est préparé de nouveau, ses commandes de préparation renvoyées, comme à sa première connexion.

Équipement

Connexion

Champ Signification Par défaut
Transport réseau Un équipement créé sous le pilote : TCP (socket LXI), « La station se connecte au socket SCPI de l'instrument, à son hôte et à son port, 5025 sur la plupart des instruments LXI. », ou VISA (USB, GPIB, réseau), « La station ouvre l'instrument par son nom de ressource VISA, au moyen du VISA installé sur cet ordinateur. » Les deux s'échangent; un équipement sur une ligne montre sa ligne à la place. TCP (socket LXI)
Hôte TCP : le nom d'hôte ou l'adresse IP de l'instrument. vide
Port TCP : le port sur lequel l'instrument répond en SCPI, de 1 à 65535. Une case vide affiche 5025 en gris et l'instrument est appelé sur ce port. 5025
Ressource VISA VISA, à la place de l'hôte et du port : « Le nom de l'instrument tel que VISA le liste, par exemple USB00x09570x1A07MY12345678INSTR ou GPIB022INSTR. Découvrir le remplit. » C'est le nom que NI MAX et Keysight Connection Expert affichent pour l'instrument. vide
Ligne série · fixe Un équipement sur une ligne : le nom de la ligne au-dessus de son port, de son débit et de son format, en lecture seule. la ligne sous laquelle il est ajouté

Un nouvel équipement est un équipement TCP : il indique « Hôte pas encore saisi » et n'est pas connecté tant qu'il n'a pas d'hôte. Un équipement VISA n'appelle aucun hôte et n'en attend jamais. Passer à VISA garde l'hôte et le port pour le retour à TCP, et passer à TCP garde la ressource. Un équipement avec lequel le pilote ne peut pas travailler n'est pas enregistré, et le journal des actions dit pourquoi :

Vous saisissez Le journal des actions dit
Un port hors de 1 à 65535 « Saisissez un port de 1 à 65535, ou laissez la case vide pour 5025. »
VISA sans ressource « Saisissez la ressource VISA de l'instrument, par exemple USB00x09570x1A07MY12345678INSTR, ou lancez Découvrir. »
Une ressource qui contient une espace ou un caractère hors de l'ASCII simple « La ressource VISA contient une espace ou un caractère hors de l'ASCII simple. Saisissez-la telle que VISA la liste. »

La Base URI qu'affiche l'en-tête est l'adresse d'exécution : scpi://tcp/<host>:<port>, scpi://visa/<resource> ou scpi://serial/<line id>/<port>/<baud>/<format>, suivie du terminateur (term), du délai de réponse (timeout), de la confirmation d'écriture (check) et des commandes de préparation (setup, l'une après l'autre, séparées par %0A). La copie d'un équipement sur une ligne reste sur cette ligne; la copie d'un équipement TCP ou VISA arrive au niveau du pilote lui-même.

La carte Instrument de mesure

Sous la carte Connexion, la carte Instrument de mesure dit ce qu'est l'instrument et comment la station lui parle.

Champ Signification Par défaut
Identité (*IDN?) En lecture seule : « Ce que l'instrument a répondu à *IDN? quand la station s'y est connectée : fabricant, modèle, numéro de série et micrologiciel. » Elle indique « Pas encore de réponse » jusqu'à ce que l'instrument réponde, et de nouveau dès que l'équipement n'est plus connecté. Un instrument qui ne répond pas à *IDN? est quand même lu, sans identité.
Terminateur LF (saut de ligne), CR LF (retour chariot, saut de ligne) ou CR (retour chariot) : « Termine chaque commande envoyée et chaque réponse lue. LF convient à presque tous les instruments; certains instruments série utilisent CR LF ou CR. » LF (saut de ligne)
Délai de réponse (ms) De 100 à 60000 : « Combien de temps une requête attend sa réponse, et une écriture la file d'erreurs de l'instrument. Une mesure lente en demande davantage. » 2000
Confirmation d'écriture « SCPI n'accuse réception d'aucune commande : une écriture se confirme donc en interrogeant l'instrument ensuite. » Ce qu'envoie chaque choix est sous Écriture : File d'erreurs (SYST:ERR?), Aucune : confirmée dès l'envoi, ou la file d'erreurs une fois la commande terminée, Achèvement, puis file d'erreurs (*OPC?, SYST:ERR?). File d'erreurs (SYST:ERR?)
Commandes de préparation Une commande par ligne, au plus 32 de 512 caractères au plus chacune : « Envoyées à chaque connexion de la station, dans l'ordre, une par ligne, par exemple *RST ou CONF:VOLT:DC 10. Les erreurs qu'elles causent sont écrites au journal technique. » vide

Chaque fois que la station se connecte à l'instrument, et chaque fois qu'une ligne série rouvre son port, elle envoie, dans l'ordre : *CLS quand la confirmation d'écriture lit la file d'erreurs, les commandes de préparation, puis lit la file d'erreurs dans le journal technique (une erreur qu'une commande de préparation a causée y est écrite et n'arrête pas l'équipement) et demande *IDN?, dont la réponse est ce qu'affiche le champ Identité. Une valeur que la carte ne peut pas prendre n'est pas enregistrée, et le journal des actions dit pourquoi : « Le délai de réponse doit être compris entre 100 et 60000 ms. », « Une commande de préparation contient un caractère hors de l'ASCII simple, comme un guillemet typographique, qu'aucun instrument ne lit. » ou « Envoyez au plus 32 commandes de préparation, de 512 caractères au plus chacune. » SCPI est de l'ASCII simple, si bien qu'une commande copiée d'un manuel avec un guillemet typographique ou une espace insécable est refusée là où elle est saisie au lieu d'être envoyée à un instrument qui ne peut pas la lire.

VISA sur cet ordinateur

Le produit n'embarque aucun VISA et n'en installe aucun. Un équipement VISA ouvre son instrument par la bibliothèque VISA 64 bits (visa64.dll) déjà présente sur cet ordinateur, que NI-VISA, que LabVIEW installe, et la Keysight IO Libraries Suite y déposent toutes deux. Seuls les équipements VISA en ont besoin : un instrument en TCP ou sur une ligne série se connecte sans elle. La station vérifie d'elle-même si la bibliothèque se charge, sans attendre un équipement : la première fois que la page du pilote, la page d'un équipement VISA ou l'agent le demande, puis toutes les 30 secondes tant qu'elle manque. Tant que le Connector n'a pas démarré, on ne sait pas si VISA est là, et rien n'en est dit. Tant qu'il manque :

Où Ce qui est dit
La page d'un équipement VISA Un avis de prudence, « VISA n'est pas installé sur cet ordinateur », avec les étapes ci-dessous. Ses deux liens ouvrent les pages de NI et de Keysight dans le navigateur de l'ordinateur.
La page du pilote Le même avis, tant que le pilote a au moins un équipement VISA, avec la phrase « Jusqu'à l'installation, les équipements de ce pilote en VISA restent hors ligne et gardent leur configuration; ceux en TCP ou sur une ligne série ne sont pas touchés. » Un pilote qui n'a que des équipements TCP et série n'en montre aucun.
La dernière erreur d'un équipement VISA Les mêmes étapes, en anglais, comme sont écrites les causes propres du pilote. L'équipement reste hors ligne et garde sa configuration.
La liste Transport réseau Propose toujours VISA, pour qu'un équipement puisse être préparé avant que VISA soit installé.
Découvrir N'interroge que l'hôte saisi dans la carte Portée du balayage, et le dit avec les deux pages : « VISA n'est pas installé sur cet ordinateur : le balayage ne liste par lui aucun instrument USB, GPIB ou réseau et n'interroge qu'un hôte saisi. Pour les lister, installez un VISA 64 bits en tant qu'administrateur », suivi des adresses de NI-VISA et de la Keysight IO Libraries Suite. La phrase reste dans la ligne qui clôt le balayage.
L'agent driver_capabilities donne les étapes sous prerequisite du pilote Scpi, avec installed à false et neededBy qui nomme les équipements VISA; device_discover dit la même chose dans cut.

Pour l'installer :

  1. Téléchargez NI-VISA depuis la page de NI NI-VISA Download, ou la Keysight IO Libraries Suite depuis la page de Keysight IO Libraries Suite Downloads.
  2. L'une ou l'autre convient, et un ordinateur doté de LabVIEW a déjà NI-VISA. La page de NI demande d'ouvrir une session avec un compte NI avant le téléchargement; celle de Keysight donne directement le programme d'installation. Prenez le programme d'installation Windows le plus récent : sous Windows 64 bits, les deux installent le VISA 64 bits, le seul que Ganter Lab voit.
  3. Exécutez le programme d'installation en tant qu'administrateur, depuis un dossier du lecteur C: (celui de Keysight ne s'installe pas depuis un autre lecteur), et redémarrez l'ordinateur quand il le demande.

Un VISA qui n'a installé que sa bibliothèque 32 bits (visa32.dll), comme un VISA prévu pour Windows 32 bits, n'est pas vu : Ganter Lab ne lit que la visa64.dll 64 bits.

Au plus tard 30 secondes après l'installation, l'avis disparaît et les équipements VISA se connectent avec la configuration qu'ils ont, sans redémarrer Ganter Lab. Un instrument doté d'un port réseau peut aussi être atteint en TCP, sans VISA.

Adressage du tag

Un tag de ce pilote pose une requête à son instrument. Sa carte Source de la valeur porte :

Champ Signification Par défaut
Requête Ce que le tag demande, tel que le manuel de programmation de l'instrument l'écrit : MEAS:VOLT:DC?, READ?, SOUR:VOLT?, OUTP?. De l'ASCII simple, 512 caractères au plus. Un tag en Écriture seule ne demande rien et n'en a pas besoin. obligatoire
Valeur de la réponse Les tags qui sont lus. « Vide, la réponse entière est lue. Un nombre lit cette valeur d'une réponse séparée par des virgules, comptée à partir de 1, par exemple 3 pour la troisième voie de READ?. » La case affiche « Réponse entière » tant qu'elle est vide. De 1 à 1000. vide
Commande d'écriture Les tags qui sont écrits : « Ce qu'envoie une écriture, avec là où va la valeur, par exemple VOLT ou CURR . Un Boolean est envoyé comme 1 ou 0. Sur un tag Boolean, une commande sans , comme *TRG, est envoyée quand on écrit true. » obligatoire

Un champ que l'accès du tag n'utilise pas n'est pas dessiné, et garde sa valeur pour le moment où il sert de nouveau. Les types de donnée sont Boolean, Int32, Int64, Float, Double et String, Float par défaut. Un tag dont les champs ne peuvent pas fonctionner n'est pas enregistré, et la page du tag dit ce qui lui manque :

Vous saisissez La page du tag dit
Aucune requête sur un tag qui est lu « Saisissez la requête posée à l'instrument, par exemple MEAS:VOLT:DC?, ou passez le tag en Écriture seule. »
Une requête qui contient un guillemet typographique ou un autre caractère hors de l'ASCII simple « La requête contient un caractère hors de l'ASCII simple, comme un guillemet typographique, ou dépasse 512 caractères. »
Une valeur de la réponse au-delà de 1000 « La valeur de la réponse se compte de 1 à 1000. Laissez-la vide pour lire la réponse entière. »
Aucune commande d'écriture sur un tag qui est écrit « Saisissez la commande qu'envoie une écriture, par exemple VOLT , ou passez le tag en Lecture seule. »
Une accolade qui n'est ni {value} ni {value:FORMAT}, ou la valeur deux fois « La commande d'écriture contient un caractère hors de l'ASCII simple, une accolade qui n'est ni ni , ou la valeur deux fois. »
Une commande sans {value} sur un tag qui n'est pas Boolean « Placez là où va la valeur dans la commande d'écriture. Seul un tag Boolean envoie une commande sans lui. »
Un format qui ne met en forme aucun nombre, ou un format sur un tag Boolean ou String « Le format après value: doit mettre en forme un nombre, par exemple 0.000 ou F2, et seul un tag numérique en accepte un. »

La ligne en lecture seule Adresse source (bus) montre ce que reçoit le pilote : ask=READ? pour un tag qui lit la réponse entière, ask=READ?&field=3 pour sa troisième valeur, ask=VOLT?&write=VOLT {value} pour un tag lu et écrit, et write=*TRG pour un tag en Écriture seule.

Lecture

À l'intervalle de scrutation du tag, la station envoie la requête et lit une réponse, jusqu'au terminateur, dans le délai de réponse. Le texte pris, la réponse entière ou la valeur que le tag désigne, est lu dans le type du tag avant que les propres étapes du tag le convertissent, comme pour tout pilote (voir La chaîne de conversion) :

La réponse contient Lue comme
+1.23456789E+00, -0.5, 12 Float ou Double : le nombre, avec un point comme séparateur décimal quelle que soit la langue de la station.
9.91E37 Le non-nombre de SCPI, ce qu'un instrument répond quand il n'a pas de mesure : NaN sur un tag Float ou Double, dont répond son étape Lecture invalide; refusé sur un tag Int32 ou Int64. 9.9E37, le dépassement de gamme, reste ce nombre.
+1.20000000E+01 Int32 ou Int64 : 12. Une fraction est refusée.
1, ON, 0, OFF Boolean : vrai pour 1 et ON, faux pour 0 et OFF; true, false, yes et no sont lus aussi.
"Ready, armed" String : les caractères sans leurs guillemets, un guillemet doublé redevenant simple. Une virgule entre les guillemets ne sépare pas de valeurs.
Situation Ce que fait la lecture
Des tags d'un équipement qui posent la même requête Ils partagent une réponse pendant la moitié du plus court intervalle de scrutation entre eux, si bien que les tags qui lisent chaque voie d'un READ? multivoie coûtent une seule mesure. Une écriture oublie toute réponse gardée.
Aucune réponse dans le délai de réponse Une lecture en échec. Quand l'équipement lit sa file d'erreurs, la station demande alors SYST:ERR?, si bien qu'une requête mal saisie échoue avec l'entrée de l'instrument lui-même, comme -113,"Undefined header", dans sa raison. La règle du tag pour un équipement qui n'a pas répondu décide de ce qu'il affiche.
Une réponse avec moins de valeurs que le numéro du tag Une lecture en échec, qui dit combien de valeurs la réponse contient.
Un texte que le type du tag ne peut pas contenir Une lecture en échec, qui nomme le texte.

Écriture

Une écriture passe par le même entonnoir que celle de n'importe quel autre pilote : la case d'écriture prend la valeur physique, et les étapes de conversion sont inversées avant que la valeur brute soit envoyée (voir Connector). La commande est la commande d'écriture avec la valeur là où se trouve {value} : un nombre en culture invariante, le texte le plus court qui relit le même nombre, ou mis en forme par {value:FORMAT} selon un format numérique .NET (CURR {value:0.000} envoie 1,5 sous la forme CURR 1.500); un Boolean sous la forme 1 ou 0, que tout paramètre Boolean de SCPI accepte; un texte tel quel, la commande portant les guillemets dont elle a besoin (DISP:TEXT "{value}"). Le non-nombre et l'infini sont refusés avant tout envoi. Sur un tag Boolean, une commande sans {value}, comme *TRG, est envoyée quand on écrit true, et écrire false est refusé.

Confirmation d'écriture Ce qui est envoyé Ce que l'écriture rapporte
File d'erreurs (SYST:ERR?) *CLS, la commande, SYST:ERR? Faite quand la file ne répond aucune erreur (0 ou +0,"No error"). Toute autre entrée refuse l'écriture avec les mots de l'instrument lui-même, comme -222,"Data out of range". Aucune réponse est une absence de réponse : on ne sait pas si l'instrument a pris la valeur.
Achèvement, puis file d'erreurs (*OPC?, SYST:ERR?) *CLS, la commande, *OPC?, SYST:ERR? Pareil, une fois que l'instrument a terminé la commande : pour une sortie qui se stabilise ou un relais qui commute.
Aucune : confirmée dès l'envoi La commande seule Faite dès l'envoi, pour un instrument sans file d'erreurs. Une requête restée sans réponse est alors rapportée sans l'erreur de l'instrument.

Les écritures attendent leur tour dans la file de l'équipement avec les lectures : sur une ligne, elles partagent la requête unique à la fois de la ligne, en TCP et par VISA la connexion propre de l'équipement.

Découverte

La page du pilote porte une carte Portée du balayage avec une case facultative, « Adresse d'un instrument pour un sondage TCP, par exemple 192.168.0.20 ou 192.168.0.20:5025 (vide = les instruments que VISA liste) ». Découvrir pose alors deux questions, l'une après l'autre :

Question Quand Ce qu'elle propose
Chaque ressource d'instrument que VISA liste, en USB, en GPIB ou sur le réseau, ouverte à son tour et interrogée par *IDN?. La ligne de progression nomme chacune : « Interrogation de USB00x09570x1A07MY12345678INSTR sur son identité… ». Quand VISA est installé sur cet ordinateur. Sans lui, le balayage le dit, avec où télécharger VISA, et la phrase reste dans la ligne qui clôt le balayage (VISA sur cet ordinateur). Chaque instrument qui répond, comme équipement VISA avec sa ressource remplie.
*IDN? en TCP à l'hôte de la case, sur son port ou sur 5025 : « Interrogation de 192.168.0.20:5025 sur son identité… ». Seulement quand la case contient une adresse. L'instrument, comme équipement TCP à cet hôte et à ce port.

Chaque instrument a 1,5 seconde pour répondre, et celui qui ne répond pas n'est pas proposé. Un candidat est nommé d'après le fabricant et le modèle qu'il a répondus (Keysight Technologies 34461A), porte toutes les valeurs par défaut de la carte Instrument de mesure, et aucun tag, puisqu'un instrument ne publie aucune liste de ses requêtes : « Aucun tag signalé. Ajoutez l'équipement pour configurer ses tags dans son éditeur. » Un candidat VISA dont un équipement du pilote a déjà la ressource est marqué comme déjà configuré et propose Ouvrir au lieu d'Ajouter; un instrument trouvé en TCP n'est jamais apparié, parce qu'un hôte n'est que l'endroit où l'on atteint un instrument. VISA liste chaque port série de l'ordinateur comme une ressource (ASRL3::INSTR), qu'un équipement y soit branché ou non, et l'interroger écrirait sur ce qui s'y trouve : le balayage les laisse de côté, et un instrument série va sur une ligne série de ce pilote. Une ressource série saisie à la main sur un équipement VISA est quand même ouverte. Ce qui, dans la case, n'est pas un hôte est refusé sous elle, et Découvrir grise : « Un balayage SCPI demande à l'instrument écrit ici de s'identifier sur TCP : son adresse IP ou son nom, avec le port au besoin (par exemple 192.168.0.20 ou 192.168.0.20:5025). Laissez-le vide pour n'interroger que les instruments que VISA liste. » Le reste du comportement du balayage se trouve dans Découverte.

Exemple : un multimètre en TCP

Un Keysight 34461A sur le réseau répond en SCPI sur son socket LXI, port 5025. Pour lire sa tension continue :

  1. Sur la page du pilote, Ajouter un équipement; nommez-le DMM, gardez TCP (socket LXI), saisissez l'Hôte 192.168.0.20 et gardez le Port 5025.
  2. Sur la carte Instrument de mesure, gardez LF (saut de ligne), un Délai de réponse (ms) de 2000 et File d'erreurs (SYST:ERR?), et saisissez deux Commandes de préparation, *RST puis CONF:VOLT:DC 10 : le multimètre est réinitialisé et mis en volts continus sur sa gamme de 10 V à chaque connexion de la station.
  3. Une fois connecté, le champ Identité affiche ce que le multimètre a répondu, par exemple Keysight Technologies,34461A,MY53212345,A.02.14-02.40-02.14-00.49-02-01.
  4. Ajouter un tag; nommez-le Voltage, Double, Lecture seule, avec la Requête READ?, la Valeur de la réponse vide et l'Unité V. READ? prend une mesure dans la fonction réglée et la donne en réponse.

La Base URI se lit scpi://tcp/192.168.0.20:5025?term=lf&timeout=2000&check=errorqueue&setup=*RST%0ACONF:VOLT:DC 10. Un agent fait de même en deux appels d'outils :

device_upsert driver=Scpi name=DMM transport=Tcp host=192.168.0.20 port=5025 setupCommands='*RST\nCONF:VOLT:DC 10'
tag_upsert device=DMM name=Voltage opcUaType=Double address='READ?' unit=V

Exemple : une alimentation en RS-232

Une Keysight E3631A répond en SCPI sur son port RS-232, à 9600 bauds avec 8 bits de données, sans parité et 2 bits d'arrêt, et en RS-232 elle n'accepte de commandes qu'une fois passée en mode distant. Pour régler sa tension, commuter sa sortie et lire son courant :

  1. Ajouter une ligne sur la page du pilote; nommez-la PSU line, choisissez COM4, réglez le Débit (bauds) sur 9600 et le Format série sur 8N2, puis Activer la ligne.
  2. Ajouter un équipement sur la ligne; nommez-le PSU. Sur la carte Instrument de mesure, réglez le Délai de réponse (ms) sur 3000, saisissez SYST:REM comme seule ligne des Commandes de préparation, et réglez la Confirmation d'écriture sur Achèvement, puis file d'erreurs (*OPC?, SYST:ERR?), pour qu'une écriture ne soit faite qu'une fois que la sortie l'a suivie.
  3. Ajouter un tag Setpoint, Double, Lecture et écriture, Requête VOLT?, Commande d'écriture VOLT {value}.
  4. Ajouter un tag Output, Boolean, Lecture et écriture, Requête OUTP?, Commande d'écriture OUTP {value} : écrire true envoie OUTP 1, false OUTP 0, et l'alimentation répond à OUTP? par 1 ou 0.
  5. Ajouter un tag MeasuredCurrent, Double, Lecture seule, Requête MEAS:CURR?, Unité A.

L'adresse de bus du tag Setpoint est ask=VOLT?&write=VOLT {value}. Une alimentation à plusieurs sorties, comme celle-ci, agit sur la sortie qu'elle a sélectionnée; une deuxième commande de préparation comme INST:SEL P6V la choisit. La même chose avec les outils de l'agent :

serial_line_upsert driver=Scpi name='PSU line' serialPort=COM4 baudRate=9600 serialFormat=8N2
device_upsert driver=Scpi name=PSU transport=SerialLine serialLineId=<id> responseTimeoutMs=3000 setupCommands='SYST:REM' writeCheck=CompletionAndErrorQueue
tag_upsert device=PSU name=Setpoint opcUaType=Double accessType=ReadAndWrite address='VOLT?' writeTemplate='VOLT {value}'
tag_upsert device=PSU name=Output opcUaType=Boolean accessType=ReadAndWrite address='OUTP?' writeTemplate='OUTP {value}'
tag_upsert device=PSU name=MeasuredCurrent opcUaType=Double address='MEAS:CURR?' unit=A

Outils de l'agent

driver_capabilities décrit ce pilote sous scpi : ses trois transports, si cet ordinateur a VISA (sous prerequisite, avec chaque étape pour l'installer), les terminateurs, le délai de réponse, les confirmations d'écriture, les commandes de préparation, comment s'écrivent une requête et une commande d'écriture, comment les réponses sont lues, la découverte et les deux exemples ci-dessus. device_upsert driver=Scpi prend transport (Tcp, par défaut, Visa, ou SerialLine, qu'implique serialLineId), host et port en TCP, visaResource par VISA, serialLineId pour une ligne de ce pilote, terminator (Lf, CrLf ou Cr; \n, \r\n et \r sont lus aussi), responseTimeoutMs (de 100 à 60000), writeCheck (ErrorQueue, CompletionAndErrorQueue ou None) et setupCommands (une par ligne, ou séparées par \n; '' les efface). tag_upsert prend la requête en address, valueField (de 1 à 1000; 0 ou omis lit la réponse entière) et writeTemplate ('' l'efface). serial_line_upsert driver=Scpi crée une ligne de ce pilote, avec serialPort, baudRate et serialFormat seulement. device_discover driver=Scpi lance le balayage, avec target pour le sondage TCP. Un équipement que les outils renvoient porte scpi, avec l'identité de l'instrument une fois qu'il a répondu, et un tag aussi. Les autres outils sont dans Outils de l'agent.

Limites à connaître

  • Les Fluke NetDAQ 2640A, 2645A, 2680A et 2686A parlent un protocole propre à Fluke, qui n'est pas SCPI : ce pilote ne les lit pas. La Fluke 1586A Super-DAQ et la 2638A Hydra Series III parlent SCPI, et il les lit.
  • Les réponses envoyées en bloc binaire IEEE 488.2 (un #, une longueur et des octets bruts), comme une forme d'onde ou une image de l'écran, ne sont pas lues : un tag lit une réponse écrite en texte.
  • Le produit n'installe pas VISA. Sans NI-VISA ni la Keysight IO Libraries Suite sur cet ordinateur, les instruments USB et GPIB ne sont pas atteints; les instruments TCP et série le sont.
  • Le balayage ne liste pas les ressources série de VISA (ASRL…::INSTR) : un instrument série va sur une ligne série de ce pilote.
  • Chaque valeur est scrutée : le pilote n'attend ni les demandes de service (SRQ) ni l'octet d'état.
  • Un équipement ne peut pas être déplacé entre une ligne série et le réseau, ni vers une autre ligne : créez-le là où il doit être et supprimez l'ancien.