Comunicazione SCPI
Descrizione
La comunicazione con l'applicazione smartCORE tramite protocollo SCPI è resa possibile da un server SCPI integrato.
Interfacce e protocolli utilizzati
- SCPI
Set di comandi SCPI
Di seguito viene illustrato il set di comandi SCPI supportato. IMPORTANTE: se per la comunicazione si utilizza ad es. telnet, l'ingresso/uscita è limitato al limite massimo di lunghezza della riga (in genere 4096 caratteri). In tal caso si raccomanda di ricorrere ad altri client.
*IDN?
Identificazione del dispositivo di misura
Parametri
NESSUNO
Valore restituito
Lista SCPI (separata da virgole) di valori SCPI nel seguente ordine
| Parametro | Tipo di dati |
|---|---|
| Produttore | STRING |
| Prodotto | STRING |
| Applicazione | STRING |
| Versione del protocollo | INT |
| Numero di serie del dispositivo | STRING |
| Hostname dell'interfaccia SCPI (in comunicazione) | STRING |
| Porta dell'interfaccia SCPI (in comunicazione) | INT |
| Versione dell'applicazione | STRING |
| Data di produzione del dispositivo | STRING |
| Nome del dispositivo | STRING |
| Commento | STRING |
Esempio
< *IDN?
> "optiMEAS GmbH", "smartCORE", "smartcore", 0, "10000012345", "::ffff:127.0.0.1", 5024, "0.174", "19700101", "", "",
CONFIG:GET?
Interrogazione dei contenuti dei file di configurazione
Parametri
| Opz. | Parametro | Tipo di dati | Intervallo di valori | Significato |
|---|---|---|---|---|
| Tipo di configurazione | STRING | "STAT", "DYN" | Selezione della configurazione statica/dinamica |
Valore restituito
Configurazione JSON codificata in BASE64
Esempio
< config:get? stat
> <BASE64 Konfiguration>
CONFIG:SCHEMA?
Interrogazione dello schema JSON dei file di configurazione
Parametri
| Opz. | Parametro | Tipo di dati | Intervallo di valori | Significato |
|---|---|---|---|---|
| Tipo di configurazione | STRING | "STAT", "DYN" | Selezione dello schema di configurazione statico/dinamico |
Valore restituito
Schema di configurazione JSON codificato in BASE64
Esempio
< config:schema? stat
> <BASE64 Konfigurationsschema>
CONFIG:SET
Sostituzione dei file di configurazione
Parametri
| Opz. | Parametro | Tipo di dati | Intervallo di valori | Significato |
|---|---|---|---|---|
| Tipo di sorgente | STRING | "BASE64", "FILE", "URL" | Selezione della sorgente della configurazione | |
| Tipo di configurazione | STRING | "STAT", "DYN" | Selezione della configurazione statica/dinamica da sostituire | |
| Configurazione | STRING | vedere sotto | Descrizione della configurazione |
Valore restituito
OK oppure ERR
Esempi
< config:set base64,stat,<BASE64 Konfiguration>
> OK
< config:set file,dyn,/sde/smartcore_dynamic.json.new
> OK
< config:set url,dyn,http://myserver/smartcore_dynamic.json.new
> OK
DATA:COUNT?
Interrogazione del numero di canali configurati
Parametri
| Opz. | Parametro | Tipo di dati | Intervallo di valori | Significato |
|---|---|---|---|---|
| SÌ | Selezione dei canali | STRING | Espressione regolare per la selezione dei canali |
Valore restituito
INT
Esempi
< data:count?
> 42
< data:count? ^gps.*$
> 6
DATA:INFOS?
Interrogazione delle descrizioni dei canali
Parametri
| Opz. | Parametro | Tipo di dati | Intervallo di valori | Significato |
|---|---|---|---|---|
| SÌ | Selezione dei canali | STRING[] | Elenco di nomi di canale |
Valore restituito
Descrizione dei canali codificata in BASE64
Esempi
< data:infos?
> <BASE64 kodierte Beschreibung der Kanäle>
< data:infos? Kanalname 1,Kanalname 2
> <BASE64 kodierte Beschreibung der Kanäle>
DATA:INFOS:REGEX?
Interrogazione delle descrizioni dei canali
Parametri
| Opz. | Parametro | Tipo di dati | Intervallo di valori | Significato |
|---|---|---|---|---|
| SÌ | Selezione dei canali | STRING[] | Elenco di nomi di canale (come RegEx) |
Valore restituito
Descrizione dei canali codificata in BASE64
Esempi
< data:infos:regex?
> <BASE64 kodierte Beschreibung der Kanäle>
< data:infos:regex? ^can.*$,^modbus.*$
> <BASE64 kodierte Beschreibung der Kanäle>
DATA:NAMES?
Interrogazione dei nomi dei canali
Parametri
| Opz. | Parametro | Tipo di dati | Intervallo di valori | Significato |
|---|---|---|---|---|
| SÌ | Selezione dei canali | STRING[] | Elenco di nomi di canale |
Valore restituito
STRING[] di nomi di canale esistenti
Esempi
< data:names?
> "temperature 1","canbus 2","modbus 3"
< data:names? canbus 2,modbus 3
> "canbus 2","modbus 3"
DATA:NAMES:REGEX?
Interrogazione dei nomi dei canali
Parametri
| Opz. | Parametro | Tipo di dati | Intervallo di valori | Significato |
|---|---|---|---|---|
| SÌ | Selezione dei canali | STRING[] | Elenco di nomi di canale (come RegEx) |
Valore restituito
STRING[] di nomi di canale esistenti
Esempi
< data:names:regex?
> "temperature 1","canbus 2","modbus 3"
< data:names:regex? ^can.*$,^modbus.*$
> "canbus 2","modbus 3"
DATA:VALUES?
Interrogazione dei valori correnti dei canali
Parametri
| Opz. | Parametro | Tipo di dati | Intervallo di valori | Significato |
|---|---|---|---|---|
| SÌ | Selezione dei canali | STRING[] | Elenco di nomi di canale |
Valore restituito
Array JSON codificato in BASE64 di oggetti JSON che contengono il timestamp "t" e il valore "v" per tutti i valori dei canali.
Esempi
< data:values?
> <BASE64 kodiertes JSON Array>
< data:values? Kanalname 1,Kanalname 2
> <BASE64 kodiertes JSON Array>
DATA:VALUES:REGEX?
Interrogazione dei valori correnti dei canali e dei timestamp dell'ultimo aggiornamento
Parametri
| Opz. | Parametro | Tipo di dati | Intervallo di valori | Significato |
|---|---|---|---|---|
| SÌ | Selezione dei canali | STRING[] | Elenco di nomi di canale (come RegEx) |
Valore restituito
Array JSON codificato in BASE64 di oggetti JSON che contengono il timestamp "t" e il valore "v" per tutti i valori dei canali.
Esempi
< data:values:regex?
> <BASE64 kodiertes JSON Array>
< data:values:regex? ^can.*$,^modbus.*$
> <BASE64 kodiertes JSON Array>
DATA:VALUES:SET
Produzione di un valore di canale (ad es. impostazione di una variabile di processo)
Parametri
| Opz. | Parametro | Tipo di dati | Intervallo di valori | Significato |
|---|---|---|---|---|
| Sample | STRING | vedere sotto | Descrizione del sample da produrre |
Il sample viene definito sotto forma di oggetto JSON con le chiavi "channelName" e "value". Questo oggetto deve poi essere codificato in BASE64. Il canale specificato tramite "channelName" deve già esistere.
Valore restituito
OK oppure ERR
Esempio
< data:values:set <BASE64 kodiertes JSON Objekt mit Sample-Beschreibung>
> OK
ERROR?
Interrogazione dell'ultimo errore SCPI
Parametri
NESSUNO
Valore restituito
Lista (separata da virgole) di INT,STRING composta da un codice di errore (diverso da 0 in caso di errore) e da una descrizione dell'errore
Esempio
< err?
> 0, "No Error!"
GPS:DATETIME?
Restituzione dell'ora GPS del primo modulo GPS configurato.
Parametri
NESSUNO
Valore restituito
Ora ZULU
Esempio
< gps:datetime?
> 0000-00-00T00:00:00.000Z
GPS:LOCATION?
Restituzione della posizione GPS del primo modulo GPS configurato.
Parametri
NESSUNO
Valore restituito
FLOAT[] composto da latitudine, longitudine e altitudine sul livello del mare.
Esempio
< gps:location?
> 0.00000000, 0.00000000, 0
MODULES:CALL:FACTORY?
Chiamata di una funzione call-interface (statica) dalla factory (~"classe") di un modulo
Parametri
Lista (separata da virgole) dei seguenti argomenti:
| Opz. | Parametro | Tipo di dati | Intervallo di valori | Significato |
|---|---|---|---|---|
| Factory | STRING | |||
| Funzione | STRING | |||
| SÌ | Parametri | STRING[] | vedere sotto |
I parametri denominati "Parametri" sono opzionali. Vengono indicate coppie chiave-valore.
Valore restituito
Oggetto JSON codificato in BASE64 che rappresenta il valore restituito della funzione call-interface
Esempio
< modules:call:factory? factory,function
> <BASE64 kodiertes JSON Objekt>
< modules:call:factory? factory,function,Parameter 1 Key,Parameter 1 Value,Parameter 2 Key,Parameter 2 Value
> <BASE64 kodiertes JSON Objekt>
MODULES:CALL:FACTORY:JSON?
Chiamata di una funzione call-interface (statica) dalla factory (~"classe") di un modulo
Parametri
Lista (separata da virgole) dei seguenti argomenti:
| Opz. | Parametro | Tipo di dati | Intervallo di valori | Significato |
|---|---|---|---|---|
| Factory | STRING | |||
| Funzione | STRING | |||
| Parametri | STRING | vedere sotto |
Come "Parametri" deve essere passato un oggetto JSON codificato in BASE64 sotto forma di STRING. Questo è composto (normalmente) da coppie chiave-valore dei parametri della funzione. È possibile rappresentare strutture gerarchiche.
Valore restituito
Oggetto JSON codificato in BASE64 che rappresenta il valore restituito della funzione call-interface
Esempio
< modules:call:factory:json? factory,function,<BASE64 kodiertes JSON Objekt mit Parametern>
> <BASE64 kodiertes JSON Objekt>
MODULES:CALL:INSTANCE?
Chiamata di una funzione call-interface dal modulo istanziato.
Parametri
Lista (separata da virgole) dei seguenti argomenti:
| Opz. | Parametro | Tipo di dati | Intervallo di valori | Significato |
|---|---|---|---|---|
| Tipo di configurazione | STRING | "STAT", "DYN" | Tipo di configurazione che istanzia il modulo | |
| Nome del modulo | STRING | |||
| Funzione | STRING | |||
| SÌ | Parametri | STRING[] | vedere sotto |
I parametri denominati "Parametri" sono opzionali. Vengono indicate coppie chiave-valore.
Valore restituito
Oggetto JSON codificato in BASE64 che rappresenta il valore restituito della funzione call-interface
Esempio
< modules:call:instance? stat,instance,function
> <BASE64 kodiertes JSON Objekt>
< modules:call:instance? dyn,instance,function,Parameter 1 Key,Parameter 1 Value,Parameter 2 Key,Parameter 2 Value
> <BASE64 kodiertes JSON Objekt>
MODULES:CALL:INSTANCE:JSON?
Chiamata di una funzione call-interface dal modulo istanziato.
Parametri
Lista (separata da virgole) dei seguenti argomenti:
| Opz. | Parametro | Tipo di dati | Intervallo di valori | Significato |
|---|---|---|---|---|
| Tipo di configurazione | STRING | "STAT", "DYN" | Tipo di configurazione che istanzia il modulo | |
| Factory | STRING | |||
| Funzione | STRING | |||
| Parametri | STRING | vedere sotto |
Come "Parametri" deve essere passato un oggetto JSON codificato in BASE64 sotto forma di STRING. Questo è composto (normalmente) da coppie chiave-valore dei parametri della funzione. È possibile rappresentare strutture gerarchiche.
Valore restituito
Oggetto JSON codificato in BASE64 che rappresenta il valore restituito della funzione call-interface
Esempio
< modules:call:instance:json? dyn,instance,function,<BASE64 kodiertes JSON Objekt mit Parametern>
> <BASE64 kodiertes JSON Objekt>
MODULES:FACTORIES:CALLSCHEMA:GET?
Interrogazione dello schema di chiamata delle funzioni call-interface relative al modulo ("istanza") di una factory di moduli ("classe")
Parametri
| Opz. | Parametro | Tipo di dati | Intervallo di valori | Significato |
|---|---|---|---|---|
| Factory | STRING |
Valore restituito
Schema JSON codificato in BASE64
Esempio
< modules:factories:callschema:get? factory
> <BASE64 kodiertes JSON Objekt>
MODULES:FACTORIES:CONFIGSCHEMA:GET?
Interrogazione dello schema di configurazione di una factory di moduli (~"classe")
Parametri
| Opz. | Parametro | Tipo di dati | Intervallo di valori | Significato |
|---|---|---|---|---|
| Factory | STRING |
Valore restituito
Schema JSON codificato in BASE64
Esempio
< modules:factories:configschema:get? factory
> <BASE64 kodiertes JSON Objekt>
MODULES:FACTORIES:COUNT?
Interrogazione del numero di tutte le factory di moduli (~"classi")
Parametri
NESSUNO
Valore restituito
INT
Esempio
< modules:factories:count?
> 42
MODULES:FACTORIES:DOC?
Interrogazione delle documentazioni dei moduli allegate
Parametri
| Opz. | Parametro | Tipo di dati | Intervallo di valori | Significato |
|---|---|---|---|---|
| Factory | STRING | Factory di moduli (~"classe") | ||
| SÌ | Type | STRING | "base64", "text" | Codifica della documentazione restituita |
| SÌ | Language | STRING | "de", "en" | Versione linguistica della documentazione restituita |
Valore restituito
Documentazione STRING o BASE64
Esempio
< modules:factories:doc? factory
> <Dokumentation>
MODULES:FACTORIES:DOC:CHANGELOG?
Interrogazione dei change log dei moduli allegati
Parametri
| Opz. | Parametro | Tipo di dati | Intervallo di valori | Significato |
|---|---|---|---|---|
| Factory | STRING | Factory di moduli (~"classe") | ||
| SÌ | Type | STRING | "base64", "text" | Codifica della documentazione restituita |
Valore restituito
Change log STRING o BASE64
Esempio
< modules:factories:doc:changelog? factory
> <ChangeLog>
MODULES:FACTORIES:GET?
Interrogazione della descrizione di tutte le factory di moduli (~"classi")
Parametri
NESSUNO
Valore restituito
Array JSON codificato in BASE64 di oggetti JSON con le seguenti chiavi
| Chiave | Significato |
|---|---|
| description | descrizione astratta del modulo |
| fileName | nome del file dello shared object caricato in cui si trova il modulo |
| name | nome della factory del modulo |
| version | versione |
Esempio
< modules:factories:get?
> <BASE64 kodiertes JSON Array>
MODULES:FACTORIES:STATICCALLSCHEMA:GET?
Interrogazione dello schema di chiamata delle funzioni call-interface relative alla factory di moduli ("classe") di una factory di moduli ("classe")
Parametri
| Opz. | Parametro | Tipo di dati | Intervallo di valori | Significato |
|---|---|---|---|---|
| Factory | STRING |
Valore restituito
Schema JSON codificato in BASE64
Esempio
< modules:factories:staticcallschema:get? factory
> <BASE64 kodiertes JSON Objekt>
MODULES:GET?
Parametri
NESSUNO
Valore restituito
Oggetto JSON codificato in BASE64 che rappresenta, sotto forma di mappa, un'associazione di tutti i moduli ("istanze") alle rispettive factory di moduli ("classi").
Esempio
< modules:get?
> <BASE64 kodiertes JSON Objekt>
SYSTEM:CHANGELOG?
Interrogazione del change log di sistema allegato.
Parametri
| Opz. | Parametro | Tipo di dati | Intervallo di valori | Significato |
|---|---|---|---|---|
| SÌ | Type | STRING | "base64", "text" | Codifica della documentazione restituita |
Valore restituito
Change log di sistema STRING o BASE64
Esempio
< system:changelog?
> <ChangeLog>
SYSTEM:ERROR?
Interrogazione dell'ultimo errore di sistema
Parametri
NESSUNO
Valore restituito
Lista (separata da virgole) di INT,STRING composta da un codice di errore (diverso da 0 in caso di errore) e da una descrizione dell'errore
Esempio
< system:error?
> 0, "No Error!"
SYSTEM:RESTART
Riavvio dell'applicazione smartCORE. Se il modulo SCPI si trova nel file di configurazione riavviato, viene scaricato e la connessione viene interrotta.
Parametri
| Opz. | Parametro | Tipo di dati | Intervallo di valori | Significato |
|---|---|---|---|---|
| Tipo di riavvio | STRING | "ALL", "DYN" |
Valore restituito
OK
Esempio
< system:restart all
> OK
SYSTEM:START
Avvio dell'applicazione smartCORE arrestata. Se il modulo SCPI si trova nel file di configurazione riavviato, la connessione viene interrotta.
Parametri
| Opz. | Parametro | Tipo di dati | Intervallo di valori | Significato |
|---|---|---|---|---|
| Tipo di avvio | STRING | "ALL", "DYN" |
Valore restituito
OK
Esempio
< system:stop
> OK
[...]
< system:start all
> OK
SYSTEM:STATE?
Interrogazione dello stato operativo di smartCORE.
Parametri
NESSUNO
Valore restituito
STRING con la descrizione dello stato operativo. I valori possibili sono "Running" (esercizio di misura attivo), "Ready" (modalità di configurazione, esercizio di misura arrestato) nonché, più raramente, "Error" (si è verificato un errore) o altri stati operativi.
Esempio
< system:state?
> Running
SYSTEM:STOP
Arresto dell'applicazione smartCORE. La connessione SCPI NON viene interrotta.
Parametri
NESSUNO
Valore restituito
OK
Esempio
< system:stop
> OK
SYSTEM:VERSION?
Interrogazione della versione di smartCORE
Parametri
NESSUNO
Valore restituito
STRING
Esempio
< system:version?
> 42.0
SYSTEM:VERSION:MAJOR?
Interrogazione della versione major di smartCORE
Parametri
NESSUNO
Valore restituito
STRING
Esempio
< system:version:major?
> 42
SYSTEM:VERSION:MINOR?
Interrogazione della versione minor di smartCORE
Parametri
NESSUNO
Valore restituito
STRING
Esempio
< system:version:minor?
> 0
TIMEOUT?
Interrogazione del tempo di attesa massimo per un'azione/interrogazione che blocca l'interfaccia.
Parametri
NESSUNO
Valore restituito
STRING
Esempio
< timeout?
> 60000
TIMEOUT
Impostazione del tempo di attesa massimo per un'azione/interrogazione che blocca l'interfaccia.
Parametri
| Opz. | Parametro | Tipo di dati | Intervallo di valori | Significato |
|---|---|---|---|---|
| Timeout | INT | 1 - | Tempo di attesa massimo |
Valore restituito
OK, ERR
Esempio
< timeout 60000
> OK