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.
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 :
- 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.
- 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.
- 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 :
- 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. - 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,
*RSTpuisCONF: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. - 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. - Ajouter un tag; nommez-le
Voltage, Double, Lecture seule, avec la RequêteREAD?, 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 :
- Ajouter une ligne sur la page du pilote; nommez-la
PSU line, choisissezCOM4, réglez le Débit (bauds) sur 9600 et le Format série sur8N2, puis Activer la ligne. - 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, saisissezSYST:REMcomme 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. - Ajouter un tag
Setpoint, Double, Lecture et écriture, RequêteVOLT?, Commande d'écritureVOLT {value}. - Ajouter un tag
Output, Boolean, Lecture et écriture, RequêteOUTP?, Commande d'écritureOUTP {value}: écrire true envoieOUTP 1, falseOUTP 0, et l'alimentation répond àOUTP?par 1 ou 0. - Ajouter un tag
MeasuredCurrent, Double, Lecture seule, RequêteMEAS: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.