SCPI instruments

Strumenti da banco che parlano SCPI, come multimetri, alimentatori, carichi elettronici e unità di acquisizione dati, via TCP, su linea seriale, o via USB e GPIB tramite VISA: come si raggiunge ciascuno, la scheda Strumento, interrogazioni e comandi di scrittura, il rilevamento e due esempi completi.

Visualizza come Markdown

Il driver SCPI instruments legge e scrive strumenti da banco che parlano SCPI, il linguaggio di comando degli apparecchi di prova IEEE 488.2: multimetri, alimentatori, carichi elettronici, unità di acquisizione dati come il Fluke 1586A Super-DAQ, calibratori, di Keysight, Rigol, Tektronix, Siglent, GW Instek, B&K Precision, Fluke e degli altri. Ogni tag pone allo strumento un'interrogazione, come MEAS:VOLT:DC? o READ?, e ne legge la risposta; un tag che viene scritto invia un comando con dentro il valore, come VOLT 5. È lo scambio che un programma LabVIEW fa tramite VISA, impostato in un pannello invece che cablato in uno schema a blocchi, e i valori arrivano dove arrivano quelli di ogni altro tag: nella Logica, nelle dashboard, nelle prove di un banco di prova del Process.

Uno strumento si raggiunge in uno di tre modi, scelto quando si crea il suo dispositivo:

Trasporto Come si raggiunge lo strumento Per
TCP (socket LXI) Il socket SCPI dello strumento, al suo host e alla sua porta, 5025 sulla maggior parte degli strumenti LXI. Su questo computer non si installa nulla. Uno strumento con una porta di rete.
VISA (USB, GPIB, rete) Tramite il VISA installato su questo computer, con il nome di risorsa VISA dello strumento. Il prodotto non installa alcun VISA: usa NI-VISA o la Keysight IO Libraries Suite dove uno dei due è installato. Uno strumento su USB o su un'interfaccia GPIB, o uno strumento di rete che VISA raggiunge con il suo nome.
Su una linea seriale Una linea seriale di questo driver, condivisa con gli altri strumenti collegati, una richiesta alla volta. Uno strumento con una porta RS-232 o RS-485.

Uno strumento su una linea seriale sta sotto la sua linea, così quella parte dell'albero si legge Driver → Linea → Dispositivo → Tag, come sotto Generic serial and TCP. Uno strumento raggiunto via TCP o tramite VISA sta sotto il driver e può essere archiviato in cartelle come il dispositivo di qualsiasi altro driver, Driver → Cartella → Dispositivo → Tag. Un dispositivo resta dalla parte in cui è stato creato: TCP e VISA si scambiano, ma un dispositivo non passa mai da una linea alla rete né dalla rete a una linea.

La pagina del driver

La frase sotto l'intestazione dice « Le linee seriali portano gli strumenti che condividono un bus, e gli strumenti raggiunti via TCP o tramite VISA stanno sotto il driver. Aggiungere una linea o un dispositivo, poi aprirlo per indicarne le interrogazioni. » e la pagina porta, una sotto l'altra:

Parte Che cosa contiene
Linee seriali Le linee del driver, che crescono con Aggiungi linea, a destra del suo titolo: Linea, Parametri fisici (porta · baud · formato, senza timeout, perché una linea di questo driver non ne ha), Dispositivi, Stato, e le azioni Apri, Abilita, Disabilita ed Elimina. Vuota, dice « Nessuna linea seriale. »
Ambito della scansione L'indirizzo che Rileva interroga oltre agli strumenti che VISA elenca; vedi Rilevamento. Disegnato solo per Configurare il connector.
Dispositivi Tutti i dispositivi del driver, compresi quelli su una linea, con le colonne della tabella dei dispositivi di qualsiasi driver, che cresce con Aggiungi dispositivo, a destra del suo titolo, che crea un dispositivo TCP. Vuota, dice « Nessun dispositivo. »

L'intestazione conta i dispositivi tra parentesi, e la riga del driver nell'albero conta entrambi i livelli appena esiste una linea (« 1 linea · 2 dispositivi »). La barra del driver porta Rileva. Il clic destro sulla riga del driver offre Aggiungi dispositivo, Aggiungi linea, Nuova cartella, Aggiorna e Rileva, poi, dopo un separatore, Rimuovi driver; nel menu Nuovo… della colonna la voce del driver offre Nuovo dispositivo, Nuova linea seriale e Nuova cartella, poi le sue linee, cartelle e dispositivi. Una volta aggiunto, il driver sta sotto la cartella Driver dell'albero, con o senza linea o dispositivo.

Linea seriale

Una linea di questo driver è la linea descritta in Linee seriali, con i campi di una linea del driver Generic serial and TCP. La sua pagina dice « Un solo bus seriale fisico: le impostazioni della porta condivise dai suoi strumenti, una richiesta alla volta. » e la sua scheda Linea fisica porta Nome, Porta seriale (con Aggiorna), Velocità (baud) e Formato seriale, con tutti e dieci i formati offerti, sei a 8 bit e quattro a 7 bit. Non ha modalità di trasmissione, timeout di risposta, intervallo minimo tra transazioni né la scheda di rilevamento delle unità: ogni strumento dice nella propria scheda Strumento che cosa chiude i suoi messaggi e quanto attende una risposta, e uno strumento si distingue per ciò che gli si chiede, non per un indirizzo, così la tabella Dispositivi della linea non ha la colonna ID unità.

Una linea creata qui nasce disabilitata, così le impostazioni della porta si scrivono prima che la porta si apra; porta, velocità e formato cambiano solo con la linea disabilitata. Aggiungi dispositivo sulla linea, o nel suo menu del clic destro, crea un dispositivo di questo driver su quella linea. Una linea appartiene per sempre al driver sotto cui è stata creata: nessun dispositivo di un altro driver ci va, e una porta appartiene a una linea, qualunque sia il driver della linea.

Il driver apre la porta una volta per tutti gli strumenti della linea e invia una richiesta alla volta, aspettando la sua risposta prima della successiva. Tiene DTR attivo finché la porta è aperta, perché uno strumento che cadenza la sua uscita con DTR e DSR, come il Keysight 34401A o un alimentatore E36xx, non invia nulla con DTR spento. Una porta che si guasta viene riaperta dopo una pausa che raddoppia da 1 secondo fino a 1 minuto finché continua a guastarsi, e ogni strumento collegato viene preparato di nuovo, con i comandi di preparazione inviati di nuovo, come alla sua prima connessione.

Dispositivo

Connessione

Campo Significato Predefinito
Trasporto di rete Un dispositivo creato sotto il driver: TCP (socket LXI), « La stazione si collega al socket SCPI dello strumento, al suo host e alla sua porta, 5025 sulla maggior parte degli strumenti LXI. », o VISA (USB, GPIB, rete), « La stazione apre lo strumento tramite il suo nome di risorsa VISA, con il VISA installato su questo computer. » I due si scambiano; un dispositivo su una linea mostra invece la sua linea. TCP (socket LXI)
Indirizzo host TCP: il nome host o l'indirizzo IP dello strumento. vuoto
Porta TCP: la porta su cui lo strumento risponde in SCPI, da 1 a 65535. Una casella vuota mostra 5025 in grigio e lo strumento viene chiamato su quella porta. 5025
Risorsa VISA VISA, al posto di host e porta: « Il nome dello strumento come lo elenca VISA, per esempio USB00x09570x1A07MY12345678INSTR o GPIB022INSTR. Rileva lo compila. » È il nome che NI MAX e Keysight Connection Expert mostrano per lo strumento. vuoto
Linea seriale · fissa Un dispositivo su una linea: il nome della linea sopra la sua porta, velocità e formato, in sola lettura. la linea sotto cui viene aggiunto

Un dispositivo nuovo è un dispositivo TCP: dice « Indirizzo host non ancora inserito » e non viene collegato finché non ha un host. Un dispositivo VISA non chiama alcun host e non ne aspetta mai uno. Passare a VISA conserva host e porta per quando torna il TCP, e passare a TCP conserva la risorsa. Un dispositivo con cui il driver non può lavorare non viene salvato, e il registro delle azioni dice perché:

Inserisci Il registro delle azioni dice
Una porta fuori da 1 a 65535 « Inserire una porta da 1 a 65535, o lasciare la casella vuota per 5025. »
VISA senza risorsa « Inserire la risorsa VISA dello strumento, per esempio USB00x09570x1A07MY12345678INSTR, o usare Rileva. »
Una risorsa con uno spazio o un carattere fuori dall'ASCII semplice « La risorsa VISA contiene uno spazio o un carattere fuori dall'ASCII semplice. Inserirla come la elenca VISA. »

La Base URI che mostra l'intestazione è l'indirizzo di runtime: scpi://tcp/<host>:<port>, scpi://visa/<resource> o scpi://serial/<line id>/<port>/<baud>/<format>, seguito dal terminatore (term), dal timeout di risposta (timeout), dalla conferma di scrittura (check) e dai comandi di preparazione (setup, uno dopo l'altro, separati da %0A). La copia di un dispositivo su una linea resta su quella linea; la copia di un dispositivo TCP o VISA finisce al livello del driver stesso.

La scheda Strumento

Sotto la scheda Connessione, la scheda Strumento dice che cos'è lo strumento e come la stazione gli parla.

Campo Significato Predefinito
Identità (*IDN?) Sola lettura: « Ciò che lo strumento ha risposto a *IDN? quando la stazione si è collegata: costruttore, modello, numero di serie e firmware. » Dice « Ancora nessuna risposta » finché lo strumento non risponde, e di nuovo quando il dispositivo non è più collegato. Uno strumento che non risponde a *IDN? viene letto comunque, senza identità.
Terminatore LF (avanzamento riga), CR LF (ritorno a capo, avanzamento riga) o CR (ritorno a capo): « Chiude ogni comando inviato e ogni risposta letta. LF va bene per quasi tutti gli strumenti; alcuni seriali usano CR LF o CR. » LF (avanzamento riga)
Timeout di risposta (ms) Da 100 a 60000: « Quanto attende un'interrogazione la sua risposta, e una scrittura la coda degli errori dello strumento. Una misura lenta ne richiede di più. » 2000
Conferma di scrittura « SCPI non conferma alcun comando, quindi una scrittura si conferma interrogando lo strumento dopo. » Che cosa invia ogni scelta è in Scrittura: Coda degli errori (SYST:ERR?), Nessuna: confermata all'invio, o la coda degli errori una volta finito il comando, Completamento, poi coda degli errori (*OPC?, SYST:ERR?). Coda degli errori (SYST:ERR?)
Comandi di preparazione Un comando per riga, al massimo 32 di al massimo 512 caratteri ciascuno: « Inviati ogni volta che la stazione si collega, in ordine, uno per riga, per esempio *RST o CONF:VOLT:DC 10. Gli errori che causano finiscono nel diario tecnico. » vuoto

Ogni volta che la stazione si collega allo strumento, e ogni volta che una linea seriale riapre la sua porta, invia in ordine: *CLS quando la conferma di scrittura legge la coda degli errori, i comandi di preparazione, poi legge la coda degli errori nel diario tecnico (un errore causato da un comando di preparazione viene scritto lì e non ferma il dispositivo) e chiede *IDN?, la cui risposta è ciò che mostra il campo Identità. Un valore che la scheda non può prendere non viene salvato, e il registro delle azioni dice perché: « Il timeout di risposta deve essere compreso tra 100 e 60000 ms. », « Un comando di preparazione contiene un carattere fuori dall'ASCII semplice, come una virgoletta tipografica, che nessuno strumento legge. » o « Inviare al massimo 32 comandi di preparazione, di al massimo 512 caratteri ciascuno. » SCPI è ASCII semplice, quindi un comando copiato da un manuale con una virgoletta tipografica o uno spazio unificatore viene rifiutato dove lo si scrive, invece di essere inviato a uno strumento che non lo può leggere.

VISA su questo computer

Il prodotto non porta alcun VISA e non ne installa. Un dispositivo VISA apre il suo strumento tramite la libreria VISA a 64 bit (visa64.dll) già presente su questo computer, che NI-VISA, che LabVIEW installa, e la Keysight IO Libraries Suite mettono entrambi lì. Ne hanno bisogno solo i dispositivi VISA: uno strumento su TCP o su una linea seriale si collega senza. La stazione controlla da sé se la libreria si carica, senza aspettare un dispositivo: la prima volta che la pagina del driver, la pagina di un dispositivo VISA o l'agente lo chiede, e di nuovo ogni 30 secondi finché manca. Finché il Connector non è avviato, non si sa se VISA c'è, e non se ne dice nulla. Finché manca:

Dove Che cosa dice
La pagina di un dispositivo VISA Un avviso di cautela, « VISA non è installato su questo computer », con i passi qui sotto. I suoi due collegamenti aprono le pagine di NI e di Keysight nel browser del computer.
La pagina del driver Lo stesso avviso, finché il driver ha almeno un dispositivo VISA, con la frase « Fino all'installazione, i dispositivi di questo driver su VISA restano offline e conservano la loro configurazione; quelli su TCP o su una linea seriale non ne risentono. » Un driver con soli dispositivi TCP e seriali non ne mostra nessuno.
L'ultimo errore di un dispositivo VISA Gli stessi passi, in inglese, come sono scritte le cause proprie del driver. Il dispositivo resta offline e conserva la sua configurazione.
L'elenco Trasporto di rete Offre ancora VISA, così si può preparare un dispositivo prima di installare VISA.
Rileva Interroga solo l'host inserito nella scheda Ambito della scansione, e lo dice con le due pagine: « VISA non è installato su questo computer, quindi la scansione non elenca tramite VISA nessuno strumento USB, GPIB o di rete e interroga solo un host inserito. Per elencarli, installare un VISA a 64 bit come amministratore », seguito dagli indirizzi di NI-VISA e della Keysight IO Libraries Suite. La frase resta nella riga che chiude la scansione.
L'agente driver_capabilities dà i passi sotto prerequisite del driver Scpi, con installed a false e neededBy che nomina i dispositivi VISA; device_discover dice lo stesso in cut.

Per installarlo:

  1. Scaricare NI-VISA dalla pagina di NI NI-VISA Download, oppure la Keysight IO Libraries Suite dalla pagina di Keysight IO Libraries Suite Downloads.
  2. Va bene l'uno o l'altro, e un computer con LabVIEW ha già NI-VISA. La pagina di NI chiede di accedere con un account NI prima del download; quella di Keysight collega direttamente il programma di installazione. Prendere il programma di installazione per Windows più recente: su Windows a 64 bit entrambi installano il VISA a 64 bit, l'unico che Ganter Lab vede.
  3. Eseguire il programma di installazione come amministratore, da una cartella dell'unità C: (quello di Keysight non si installa da un'altra unità), e riavviare il computer quando lo chiede.

Un VISA che ha installato solo la sua libreria a 32 bit (visa32.dll), come uno fatto per Windows a 32 bit, non viene visto: Ganter Lab legge solo la visa64.dll a 64 bit.

Entro 30 secondi dall'installazione l'avviso scompare e i dispositivi VISA si collegano con la configurazione che hanno, senza riavviare Ganter Lab. Uno strumento con una porta di rete si può raggiungere anche via TCP, senza VISA.

Indirizzamento del tag

Un tag di questo driver pone un'interrogazione al suo strumento. La sua scheda Sorgente porta:

Campo Significato Predefinito
Interrogazione Ciò che il tag chiede, come lo scrive il manuale di programmazione dello strumento: MEAS:VOLT:DC?, READ?, SOUR:VOLT?, OUTP?. ASCII semplice, al massimo 512 caratteri. Un tag di Sola scrittura non chiede nulla e non ne ha bisogno. obbligatoria
Valore nella risposta Tag che vengono letti. « Vuoto legge la risposta intera. Un numero legge quel valore di una risposta separata da virgole, contato da 1, per esempio 3 per il terzo canale di READ?. » La casella mostra « Risposta intera » finché è vuota. Da 1 a 1000. vuoto
Comando di scrittura Tag che vengono scritti: « Ciò che invia una scrittura, con dove va il valore, per esempio VOLT o CURR . Un Boolean è inviato come 1 o 0. Su un tag Boolean un comando senza , come *TRG, è inviato quando si scrive true. » obbligatorio

Un campo che l'accesso del tag non usa non viene disegnato, e conserva il suo valore per quando torna a servire. I tipi di dati sono Boolean, Int32, Int64, Float, Double e String, Float come predefinito. Un tag i cui campi non possono funzionare non viene salvato, e la pagina del tag dice che cosa manca:

Inserisci La pagina del tag dice
Nessuna interrogazione su un tag che viene letto « Inserire l'interrogazione posta allo strumento, per esempio MEAS:VOLT:DC?, o rendere il tag di Sola scrittura. »
Un'interrogazione con una virgoletta tipografica o un altro carattere fuori dall'ASCII semplice « L'interrogazione contiene un carattere fuori dall'ASCII semplice, come una virgoletta tipografica, o supera 512 caratteri. »
Un valore nella risposta oltre 1000 « Il valore nella risposta si conta da 1 a 1000. Lasciarlo vuoto per leggere la risposta intera. »
Nessun comando di scrittura su un tag che viene scritto « Inserire il comando che invia una scrittura, per esempio VOLT , o rendere il tag di Sola lettura. »
Una graffa che non è {value} né {value:FORMAT}, o il valore due volte « Il comando di scrittura contiene un carattere fuori dall'ASCII semplice, una graffa che non è né , o il valore due volte. »
Un comando senza {value} su un tag che non è Boolean « Mettere dove va il valore nel comando di scrittura. Solo un tag Boolean invia un comando senza. »
Un formato che non formatta alcun numero, o un formato su un tag Boolean o String « Il formato dopo value: deve formattare un numero, per esempio 0.000 o F2, e solo un tag numerico ne accetta uno. »

La riga in sola lettura Indirizzo di origine (bus) mostra ciò che il driver riceve: ask=READ? per un tag che legge la risposta intera, ask=READ?&field=3 per il suo terzo valore, ask=VOLT?&write=VOLT {value} per un tag letto e scritto, e write=*TRG per un tag di Sola scrittura.

Lettura

All'intervallo di polling del tag la stazione invia l'interrogazione e legge una risposta, fino al terminatore, entro il timeout di risposta. Il testo preso, la risposta intera o il valore che il tag indica, viene letto come il tipo del tag prima che le fasi del tag stesso lo convertano, come per ogni driver (vedi La catena di conversione):

La risposta contiene Letta come
+1.23456789E+00, -0.5, 12 Float o Double: il numero, con il punto come separatore decimale qualunque sia la lingua della stazione.
9.91E37 Il non-numero di SCPI, ciò che uno strumento risponde quando non ha una lettura: NaN su un tag Float o Double, di cui risponde la sua fase Lettura non valida; rifiutato su un tag Int32 o Int64. 9.9E37, il fuori scala, resta quel numero.
+1.20000000E+01 Int32 o Int64: 12. Una frazione viene rifiutata.
1, ON, 0, OFF Boolean: vero per 1 e ON, falso per 0 e OFF; si leggono anche true, false, yes e no.
"Ready, armed" String: i caratteri senza le virgolette, una virgoletta raddoppiata resa singola. Una virgola tra le virgolette non separa valori.
Situazione Che cosa fa la lettura
Tag di un dispositivo che pongono la stessa interrogazione Condividono una risposta per metà del più breve intervallo di polling tra loro, così i tag che leggono ogni canale di un READ? multicanale costano una sola misura. Una scrittura dimentica ogni risposta conservata.
Nessuna risposta entro il timeout di risposta Una lettura fallita. Quando il dispositivo legge la coda degli errori, la stazione chiede allora SYST:ERR?, così un'interrogazione scritta male fallisce con la voce dello strumento stesso, come -113,"Undefined header", nel suo motivo. La regola del tag per un dispositivo che non ha risposto decide che cosa mostra.
Una risposta con meno valori del numero del tag Una lettura fallita, che dice quanti valori ha la risposta.
Un testo che il tipo del tag non può contenere Una lettura fallita, che nomina il testo.

Scrittura

Una scrittura passa per lo stesso imbuto di quella di qualsiasi altro driver: la casella di scrittura riceve il valore ingegneristico, e le fasi di conversione vengono invertite prima di inviare il valore grezzo (vedi Connector). Il comando è il comando di scrittura con il valore dove sta {value}: un numero in cultura invariante, il testo più breve che si rilegge come lo stesso numero, o formattato da {value:FORMAT} con un formato numerico .NET (CURR {value:0.000} invia 1,5 come CURR 1.500); un Boolean come 1 o 0, che ogni parametro Boolean di SCPI accetta; un testo così com'è, con il comando che porta le virgolette di cui ha bisogno (DISP:TEXT "{value}"). Il non-numero e l'infinito vengono rifiutati prima di inviare qualsiasi cosa. Su un tag Boolean un comando senza {value}, come *TRG, viene inviato quando si scrive true, e scrivere false viene rifiutato.

Conferma di scrittura Che cosa viene inviato Che cosa riporta la scrittura
Coda degli errori (SYST:ERR?) *CLS, il comando, SYST:ERR? Fatta quando la coda risponde nessun errore (0 o +0,"No error"). Ogni altra voce rifiuta la scrittura con le parole dello strumento stesso, come -222,"Data out of range". Nessuna risposta è una mancata risposta: non si sa se lo strumento ha preso il valore.
Completamento, poi coda degli errori (*OPC?, SYST:ERR?) *CLS, il comando, *OPC?, SYST:ERR? Lo stesso, una volta che lo strumento ha finito il comando: per un'uscita che si stabilizza o un relè che commuta.
Nessuna: confermata all'invio Il solo comando Fatta appena inviata, per uno strumento senza coda degli errori. Un'interrogazione rimasta senza risposta viene allora riportata senza l'errore dello strumento.

Le scritture aspettano il loro turno nella coda del dispositivo insieme alle letture: su una linea condividono l'unica richiesta alla volta della linea, via TCP e tramite VISA la connessione propria del dispositivo.

Rilevamento

La pagina del driver porta una scheda Ambito della scansione con una casella facoltativa, « Indirizzo di uno strumento per un sondaggio TCP, per esempio 192.168.0.20 o 192.168.0.20:5025 (vuoto = gli strumenti che VISA elenca) ». Rileva fa allora due domande, una dopo l'altra:

Domanda Quando Che cosa offre
Ogni risorsa di strumento che VISA elenca, su USB, GPIB o in rete, aperta a turno e interrogata con *IDN?. La riga di avanzamento nomina ciascuna: « Richiesta di identità a USB00x09570x1A07MY12345678INSTR… ». Quando VISA è installato su questo computer. Senza, la scansione lo dice, con dove scaricare VISA, e la frase resta nella riga che chiude la scansione (VISA su questo computer). Ogni strumento che risponde, come dispositivo VISA con la risorsa compilata.
*IDN? via TCP all'host della casella, sulla sua porta o su 5025: « Richiesta di identità a 192.168.0.20:5025… ». Solo quando la casella contiene un indirizzo. Lo strumento, come dispositivo TCP a quell'host e porta.

Ogni strumento ha 1,5 secondi per rispondere, e quello che non risponde non viene offerto. Un candidato prende il nome dal costruttore e dal modello che ha risposto (Keysight Technologies 34461A), porta tutti i predefiniti della scheda Strumento e nessun tag, perché uno strumento non pubblica l'elenco delle sue interrogazioni: « Nessun tag segnalato. Aggiungere il dispositivo per configurarne i tag nel suo editor. » Un candidato VISA la cui risorsa è già di un dispositivo del driver viene segnato come già configurato e offre Apri invece di Aggiungi; uno strumento trovato via TCP non viene mai abbinato, perché un host è solo il luogo dove si raggiunge uno strumento. VISA elenca ogni porta seriale del computer come una risorsa (ASRL3::INSTR), che ci sia qualcosa collegato o no, e interrogarla scriverebbe su ciò che vi si trova: la scansione le lascia fuori, e uno strumento seriale va su una linea seriale di questo driver. Una risorsa seriale scritta a mano su un dispositivo VISA viene comunque aperta. Ciò che nella casella non è un host viene rifiutato sotto di essa, e Rileva diventa grigio: « Una scansione SCPI chiede allo strumento scritto qui di identificarsi su TCP: il suo indirizzo IP o il suo nome, con la porta se serve (per esempio 192.168.0.20 o 192.168.0.20:5025). Lasciarlo vuoto per interrogare solo gli strumenti che VISA elenca. » Il resto del comportamento della scansione è in Rilevamento.

Esempio: un multimetro via TCP

Un Keysight 34461A in rete risponde in SCPI sul suo socket LXI, porta 5025. Per leggerne la tensione continua:

  1. Sulla pagina del driver, Aggiungi dispositivo; chiamarlo DMM, lasciare TCP (socket LXI), inserire Indirizzo host 192.168.0.20 e lasciare Porta 5025.
  2. Nella scheda Strumento lasciare LF (avanzamento riga), un Timeout di risposta (ms) di 2000 e Coda degli errori (SYST:ERR?), e scrivere due Comandi di preparazione, *RST e poi CONF:VOLT:DC 10: il multimetro viene azzerato e messo in volt continui sulla portata da 10 V a ogni connessione della stazione.
  3. Una volta collegato, il campo Identità mostra ciò che il multimetro ha risposto, per esempio Keysight Technologies,34461A,MY53212345,A.02.14-02.40-02.14-00.49-02-01.
  4. Aggiungi tag; chiamarlo Voltage, Double, di sola lettura, con l'Interrogazione READ?, il Valore nella risposta vuoto e l'Unità V. READ? prende una misura nella funzione impostata e la dà in risposta.

La Base URI si legge scpi://tcp/192.168.0.20:5025?term=lf&timeout=2000&check=errorqueue&setup=*RST%0ACONF:VOLT:DC 10. Un agente fa lo stesso con due chiamate di strumenti:

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

Esempio: un alimentatore su RS-232

Un Keysight E3631A risponde in SCPI sulla sua porta RS-232, a 9600 baud con 8 bit di dati, senza parità e 2 bit di stop, e su RS-232 accetta comandi solo dopo essere stato messo in modalità remota. Per impostarne la tensione, commutarne l'uscita e leggerne la corrente:

  1. Aggiungi linea sulla pagina del driver; chiamarla PSU line, scegliere COM4, impostare Velocità (baud) a 9600 e Formato seriale a 8N2, poi Abilita la linea.
  2. Aggiungi dispositivo sulla linea; chiamarlo PSU. Nella scheda Strumento impostare il Timeout di risposta (ms) a 3000, scrivere SYST:REM come unica riga dei Comandi di preparazione e impostare la Conferma di scrittura a Completamento, poi coda degli errori (*OPC?, SYST:ERR?), così una scrittura è fatta solo quando l'uscita l'ha seguita.
  3. Aggiungi tag Setpoint, Double, lettura e scrittura, Interrogazione VOLT?, Comando di scrittura VOLT {value}.
  4. Aggiungi tag Output, Boolean, lettura e scrittura, Interrogazione OUTP?, Comando di scrittura OUTP {value}: scrivere true invia OUTP 1, false OUTP 0, e l'alimentatore risponde a OUTP? con 1 o 0.
  5. Aggiungi tag MeasuredCurrent, Double, di sola lettura, Interrogazione MEAS:CURR?, Unità A.

L'indirizzo di bus del tag Setpoint è ask=VOLT?&write=VOLT {value}. Un alimentatore con più uscite, come questo, agisce sull'uscita che ha selezionato; un secondo comando di preparazione come INST:SEL P6V la sceglie. Lo stesso con gli strumenti dell'agente:

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

Strumenti dell'agente

driver_capabilities descrive questo driver sotto scpi: i suoi tre trasporti, se questo computer ha VISA (sotto prerequisite, con ogni passo per installarlo), i terminatori, il timeout di risposta, le conferme di scrittura, i comandi di preparazione, come si scrivono un'interrogazione e un comando di scrittura, come si leggono le risposte, il rilevamento e i due esempi sopra. device_upsert driver=Scpi prende transport (Tcp, il predefinito, Visa, o SerialLine, che serialLineId implica), host e port via TCP, visaResource tramite VISA, serialLineId per una linea di questo driver, terminator (Lf, CrLf o Cr; si leggono anche \n, \r\n e \r), responseTimeoutMs (da 100 a 60000), writeCheck (ErrorQueue, CompletionAndErrorQueue o None) e setupCommands (uno per riga, o separati da \n; '' li svuota). tag_upsert prende l'interrogazione come address, valueField (da 1 a 1000; 0 o omesso legge la risposta intera) e writeTemplate ('' lo svuota). serial_line_upsert driver=Scpi crea una linea di questo driver, solo con serialPort, baudRate e serialFormat. device_discover driver=Scpi avvia la scansione, con target per il sondaggio TCP. Un dispositivo che gli strumenti restituiscono porta scpi, con l'identità dello strumento una volta che ha risposto, e così un tag. Gli altri strumenti sono in Strumenti dell'agente.

Limiti da conoscere

  • I Fluke NetDAQ 2640A, 2645A, 2680A e 2686A parlano un protocollo proprio di Fluke, che non è SCPI: questo driver non li legge. Il Fluke 1586A Super-DAQ e il 2638A Hydra Series III parlano SCPI, e lui li legge.
  • Le risposte inviate come blocco binario IEEE 488.2 (un #, una lunghezza e byte grezzi), come una forma d'onda o un'immagine dello schermo, non vengono lette: un tag legge una risposta scritta come testo.
  • Il prodotto non installa VISA. Senza NI-VISA o la Keysight IO Libraries Suite su questo computer, gli strumenti USB e GPIB non vengono raggiunti; gli strumenti TCP e seriali sì.
  • La scansione non elenca le risorse seriali di VISA (ASRL…::INSTR): uno strumento seriale va su una linea seriale di questo driver.
  • Ogni valore viene letto in polling: il driver non attende le richieste di servizio (SRQ) né il byte di stato.
  • Un dispositivo non può essere spostato tra una linea seriale e la rete, né su un'altra linea: crealo dove deve stare ed elimina il vecchio.