SCPI Kommunikation
Beschreibung
Es wird eine Kommunikation mit der smartCORE Anwendung via SCPI Protokoll mittels eingebautem SCPI-Server ermöglicht.
Verwendete Schnittstellen & Protokolle
- SCPI
SCPI Befehlssatz
Im folgenden sei der unterstützte SCPI Befehlssatz dargestellt. WICHTIG: Wird z.B. telnet zur Kommunikation benutzt, ist die Ein-/Ausgabe auf das maximale Limit der Zeilenlänge (i.A. 4096 Zeichen) beschränkt. Es empfiehlt sich dann, auf andere Clients auszuweichen.
*IDN?
Identifikation des Messgeräts
Parameter
KEINE
Rückgabe
(komma-separierte) SCPI Liste von SCPI Werten in folgender Reihenfolge
Parameter | Datentyp |
---|---|
Hersteller | STRING |
Produkt | STRING |
Applikation | STRING |
Protokollversion | INT |
Geräte-Seriennummer | STRING |
Hostname der (kommunizierenden) SCPI Schnittstelle | STRING |
Port der (kommunizierenden) SCPI Schnittstelle | INT |
Applikationsversion | STRING |
Herstellungsdatum des Geräts | STRING |
Gerätename | STRING |
Kommentar | STRING |
Beispiel
< *IDN?
> "optiMEAS GmbH", "smartCORE", "smartcore", 0, "10000012345", "::ffff:127.0.0.1", 5024, "0.174", "19700101", "", "",
CONFIG:GET?
Abfrage der Inhalte der Konfigurationsdateien
Parameter
Opt. | Parameter | Datentyp | Wertebereich | Bedeutung |
---|---|---|---|---|
Konfigurationstyp | STRING | "STAT", "DYN" | Auswahl der statischen/dynamischen Konfiguration |
Rückgabe
BASE64 kodierte JSON Konfiguration
Beispiel
< config:get? stat
> <BASE64 Konfiguration>
CONFIG:SCHEMA?
Abfrage des JSON Schemas der Konfigurationsdateien
Parameter
Opt. | Parameter | Datentyp | Wertebereich | Bedeutung |
---|---|---|---|---|
Konfigurationstyp | STRING | "STAT", "DYN" | Auswahl des statischen/dynamischen Konfigurationsschemas |
Rückgabe
BASE64 kodiertes JSON Konfigurationsschema
Beispiel
< config:schema? stat
> <BASE64 Konfigurationsschema>
CONFIG:SET
Ersetzung der Konfigurationsdateien
Parameter
Opt. | Parameter | Datentyp | Wertebereich | Bedeutung |
---|---|---|---|---|
Quelltyp | STRING | "BASE64", "FILE", "URL" | Auswahl der Konfigurationsquelle | |
Konfigurationstyp | STRING | "STAT", "DYN" | Auswahl der zu ersetzenden statischen/dynamischen Konfiguration | |
Konfiguration | STRING | siehe unten | Beschreibung der Konfiguration |
Rückgabe
OK bzw. ERR
Beispiele
< 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?
Abfrage der Anzahl konfigurierter Kanäle
Parameter
Opt. | Parameter | Datentyp | Wertebereich | Bedeutung |
---|---|---|---|---|
JA | Kanalauswahl | STRING | Regulärer Ausdruck für Kanalauswahl |
Rückgabe
INT
Beispiele
< data:count?
> 42
< data:count? ^gps.*$
> 6
DATA:INFOS?
Abfrage der Kanalbeschreibungen
Parameter
Opt. | Parameter | Datentyp | Wertebereich | Bedeutung |
---|---|---|---|---|
JA | Kanalauswahl | STRING[] | Liste von Kanalnamen |
Rückgabe
BASE64 kodierte Beschreibung der Kanäle
Beispiele
< data:infos?
> <BASE64 kodierte Beschreibung der Kanäle>
< data:infos? Kanalname 1,Kanalname 2
> <BASE64 kodierte Beschreibung der Kanäle>
DATA:INFOS:REGEX?
Abfrage der Kanalbeschreibungen
Parameter
Opt. | Parameter | Datentyp | Wertebereich | Bedeutung |
---|---|---|---|---|
JA | Kanalauswahl | STRING[] | Liste von Kanalnamen (als RegEx) |
Rückgabe
BASE64 kodierte Beschreibung der Kanäle
Beispiele
< data:infos:regex?
> <BASE64 kodierte Beschreibung der Kanäle>
< data:infos:regex? ^can.*$,^modbus.*$
> <BASE64 kodierte Beschreibung der Kanäle>
DATA:NAMES?
Abfrage der Kanalnamen
Parameter
Opt. | Parameter | Datentyp | Wertebereich | Bedeutung |
---|---|---|---|---|
JA | Kanalauswahl | STRING[] | Liste von Kanalnamen |
Rückgabe
STRING[] existierender Kanalnamen
Beispiele
< data:names?
> "temperature 1","canbus 2","modbus 3"
< data:names? canbus 2,modbus 3
> "canbus 2","modbus 3"
DATA:NAMES:REGEX?
Abfrage der Kanalnamen
Parameter
Opt. | Parameter | Datentyp | Wertebereich | Bedeutung |
---|---|---|---|---|
JA | Kanalauswahl | STRING[] | Liste von Kanalnamen (als RegEx) |
Rückgabe
STRING[] existierender Kanalnamen
Beispiele
< data:names:regex?
> "temperature 1","canbus 2","modbus 3"
< data:names:regex? ^can.*$,^modbus.*$
> "canbus 2","modbus 3"
DATA:VALUES?
Abfrage aktueller Kanalwerte
Parameter
Opt. | Parameter | Datentyp | Wertebereich | Bedeutung |
---|---|---|---|---|
JA | Kanalauswahl | STRING[] | Liste von Kanalnamen |
Rückgabe
BASE64 kodiertes JSON Array von JSON Objekten, die Zeitstempel "t" und Wert "v" für alle Kanalwerte beinhalten.
Beispiele
< data:values?
> <BASE64 kodiertes JSON Array>
< data:values? Kanalname 1,Kanalname 2
> <BASE64 kodiertes JSON Array>
DATA:VALUES:REGEX?
Abfrage aktueller Kanalwerte und Zeitstempel letzter Aktualisierung
Parameter
Opt. | Parameter | Datentyp | Wertebereich | Bedeutung |
---|---|---|---|---|
JA | Kanalauswahl | STRING[] | Liste von Kanalnamen (als RegEx) |
Rückgabe
BASE64 kodiertes JSON Array von JSON Objekten, die Zeitstempel "t" und Wert "v" für alle Kanalwerte beinhalten.
Beispiele
< data:values:regex?
> <BASE64 kodiertes JSON Array>
< data:values:regex? ^can.*$,^modbus.*$
> <BASE64 kodiertes JSON Array>
DATA:VALUES:SET
Produktion eines Kanalwerts (z.B. Setzen einer Prozessvariablen)
Parameter
Opt. | Parameter | Datentyp | Wertebereich | Bedeutung |
---|---|---|---|---|
Sample | STRING | siehe unten | Beschreibung des zu produzierenden Samples |
Das Sample wird hierbei in Form eines JSON Objekts mit den Keys "channelName" und "value" definiert. Dieses muss dann BASE64 kodiert werden. Der mittels "channelName" spezifizierte Kanal muss bereits existieren.
Rückgabe
OK oder ERR
Beispiel
< data:values:set <BASE64 kodiertes JSON Objekt mit Sample-Beschreibung>
> OK
ERROR?
Abfrage des letzten SCPI Fehlers
Parameter
KEINE
Rückgabe
(komma-separierte) Liste von INT,STRING bestehend aus Fehlercode (ungleich 0 im Fehlerfall) sowie einer Fehlerbeschreibung
Beispiel
< err?
> 0, "No Error!"
GPS:DATETIME?
Rückgabe der GPS Zeit des ersten konfigurierten GPS Moduls.
Parameter
KEINE
Rückgabe
ZULU Zeit
Beispiel
< gps:datetime?
> 0000-00-00T00:00:00.000Z
GPS:LOCATION?
Rückgabe der GPS Position des ersten konfigurierten GPS Moduls.
Parameter
KEINE
Rückgabe
FLOAT[] bestehend aus geographischer Breite, geographischer Länge und Höhe über NN.
Beispiel
< gps:location?
> 0.00000000, 0.00000000, 0
MODULES:CALL:FACTORY?
Aufruf einer (statischen) Call-Interace Funktion aus der Factory (~"Klasse") eines Moduls
Parameter
(komma-separierte) Liste von folgenden Argumenten:
Opt. | Parameter | Datentyp | Wertebereich | Bedeutung |
---|---|---|---|---|
Factory | STRING | |||
Funktion | STRING | |||
JA | Parameter | STRING[] | siehe unten |
Die als "Parameter" bezeichneten Parameter sind optional. Es werden jeweils Schlüssel-Wert-Paare angegeben.
Rückgabe
BASE64 kodiertes JSON Objekt, das die Rückgabe der Call-Interface Funktion darstellt
Beispiel
< 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?
Aufruf einer (statischen) Call-Interace Funktion aus der Factory (~"Klasse") eines Moduls
Parameter
(komma-separierte) Liste von folgenden Argumenten:
Opt. | Parameter | Datentyp | Wertebereich | Bedeutung |
---|---|---|---|---|
Factory | STRING | |||
Funktion | STRING | |||
Parameter | STRING | siehe unten |
Es muss ein BASE64 kodiertes JSON Objekt in Form eines STRINGS als "Parameter" übergeben werden. Dieses besteht (normalerweise) aus Schlüssel-Wert-Paaren der Funktionsparameter. Es lassen sich hierarchische Strukturen abbilden.
Rückgabe
BASE64 kodiertes JSON Objekt, das die Rückgabe der Call-Interface Funktion darstellt
Beispiel
< modules:call:factory:json? factory,function,<BASE64 kodiertes JSON Objekt mit Parametern>
> <BASE64 kodiertes JSON Objekt>
MODULES:CALL:INSTANCE?
Aufruf einer Call-Interace Funktion aus dem instantiierten Modul.
Parameter
(komma-separierte) Liste von folgenden Argumenten:
Opt. | Parameter | Datentyp | Wertebereich | Bedeutung |
---|---|---|---|---|
Konfigurationstyp | STRING | "STAT", "DYN" | Typ der Konfiguration, die das Modul instantiiert | |
Modulname | STRING | |||
Funktion | STRING | |||
JA | Parameter | STRING[] | siehe unten |
Die als "Parameter" bezeichneten Parameter sind optional. Es werden jeweils Schlüssel-Wert-Paare angegeben.
Rückgabe
BASE64 kodiertes JSON Objekt, das die Rückgabe der Call-Interface Funktion darstellt
Beispiel
< 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?
Aufruf einer Call-Interace Funktion aus dem instantiierten Modul.
Parameter
(komma-separierte) Liste von folgenden Argumenten:
Opt. | Parameter | Datentyp | Wertebereich | Bedeutung |
---|---|---|---|---|
Konfigurationstyp | STRING | "STAT", "DYN" | Typ der Konfiguration, die das Modul instantiiert | |
Factory | STRING | |||
Funktion | STRING | |||
Parameter | STRING | siehe unten |
Es muss ein BASE64 kodiertes JSON Objekt in Form eines STRINGS als "Parameter" übergeben werden. Dieses besteht (normalerweise) aus Schlüssel-Wert-Paaren der Funktionsparameter. Es lassen sich hierarchische Strukturen abbilden.
Rückgabe
BASE64 kodiertes JSON Objekt, das die Rückgabe der Call-Interface Funktion darstellt
Beispiel
< modules:call:instance:json? dyn,instance,function,<BASE64 kodiertes JSON Objekt mit Parametern>
> <BASE64 kodiertes JSON Objekt>
MODULES:FACTORIES:CALLSCHEMA:GET?
Abfrage des Aufrufschemas der modul("instanz")bezogenen Call-Interface Funktionen einer Modul-Factory ("Klasse")
Parameter
Opt. | Parameter | Datentyp | Wertebereich | Bedeutung |
---|---|---|---|---|
Factory | STRING |
Rückgabe
BASE64 kodiertes JSON Schema
Beispiel
< modules:factories:callschema:get? factory
> <BASE64 kodiertes JSON Objekt>
MODULES:FACTORIES:CONFIGSCHEMA:GET?
Abfrage des Konfigurationsschemas einer Modul-Factory (~"Klasse")
Parameter
Opt. | Parameter | Datentyp | Wertebereich | Bedeutung |
---|---|---|---|---|
Factory | STRING |
Rückgabe
BASE64 kodiertes JSON Schema
Beispiel
< modules:factories:configschema:get? factory
> <BASE64 kodiertes JSON Objekt>
MODULES:FACTORIES:COUNT?
Abfrage der Anzahl aller Modul-Factories (~"Klassen")
Parameter
KEINE
Rückgabe
INT
Beispiel
< modules:factories:count?
> 42
MODULES:FACTORIES:DOC?
Abfrage der beigefügten Moduldokumentationen
Parameter
Opt. | Parameter | Datentyp | Wertebereich | Bedeutung |
---|---|---|---|---|
Factory | STRING | Modul-Factory (~"Klasse") | ||
JA | Type | STRING | "base64", "text" | Kodierung der zurückgegebenen Dokumentation |
JA | Language | STRING | "de", "en" | Sprachversion der zurückgegebenen Dokumentation |
Rückgabe
STRING bzw. BASE64 Dokumentation
Beispiel
< modules:factories:doc? factory
> <Dokumentation>
MODULES:FACTORIES:DOC:CHANGELOG?
Abfrage der beigefügten Change Logs der Module
Parameter
Opt. | Parameter | Datentyp | Wertebereich | Bedeutung |
---|---|---|---|---|
Factory | STRING | Modul-Factory (~"Klasse") | ||
JA | Type | STRING | "base64", "text" | Kodierung der zurückgegebenen Dokumentation |
Rückgabe
STRING bzw. BASE64 Change Log
Beispiel
< modules:factories:doc:changelog? factory
> <ChangeLog>
MODULES:FACTORIES:GET?
Abfrage der Beschreibung aller Modul-Factories (~"Klassen")
Parameter
KEINE
Rückgabe
BASE64 kodiertes JSON Array aus JSON Objekten mit folgenden Schlüsseln
Schlüssel | Bedeutung |
---|---|
description | abstrakte Beschreibung des Moduls |
fileName | Dateiname des geladenen Shared Objects in dem sich das Modul befindet |
name | Name der Modul-Factory |
version | Version |
Beispiel
< modules:factories:get?
> <BASE64 kodiertes JSON Array>
MODULES:FACTORIES:STATICCALLSCHEMA:GET?
Abfrage des Aufrufschemas der modul-factory("klassen")-bezogenen Call-Interface Funktionen einer Modul-Factory ("Klasse")
Parameter
Opt. | Parameter | Datentyp | Wertebereich | Bedeutung |
---|---|---|---|---|
Factory | STRING |
Rückgabe
BASE64 kodiertes JSON Schema
Beispiel
< modules:factories:staticcallschema:get? factory
> <BASE64 kodiertes JSON Objekt>
MODULES:GET?
Parameter
KEINE
Rückgabe
BASE64 kodiertes JSON Objekt, das eine Zuordnung aller Module ("Instanzen") zu ihren jeweiligen Modul-Factories ("Klassen") in Form einer Map darstellt.
Beispiel
< modules:get?
> <BASE64 kodiertes JSON Objekt>
SYSTEM:CHANGELOG?
Abfrage des beigefügten System Change Logs.
Parameter
Opt. | Parameter | Datentyp | Wertebereich | Bedeutung |
---|---|---|---|---|
JA | Type | STRING | "base64", "text" | Kodierung der zurückgegebenen Dokumentation |
Rückgabe
STRING bzw. BASE64 System Change Log
Beispiel
< system:changelog?
> <ChangeLog>
SYSTEM:ERROR?
Abfrage des letzten System Fehlers
Parameter
KEINE
Rückgabe
(komma-separierte) Liste von INT,STRING bestehend aus Fehlercode (ungleich 0 im Fehlerfall) sowie einer Fehlerbeschreibung
Beispiel
< system:error?
> 0, "No Error!"
SYSTEM:RESTART
Neustart der smartCORE Anwendung. Befindet sich das SCPI Modul in der neu gestarteten Konfigurationsdatei, so wird dieses entladen und die Verbindung getrennt.
Parameter
Opt. | Parameter | Datentyp | Wertebereich | Bedeutung |
---|---|---|---|---|
Art des Neustarts | STRING | "ALL", "DYN" |
Rückgabe
OK
Beispiel
< system:restart all
> OK
SYSTEM:START
Start der gestoppten smartCORE Anwendung. Befindet sich das SCPI Modul in der neu gestarteten Konfigurationsdatei, so wird die Verbindung getrennt.
Parameter
Opt. | Parameter | Datentyp | Wertebereich | Bedeutung |
---|---|---|---|---|
Art des Starts | STRING | "ALL", "DYN" |
Rückgabe
OK
Beispiel
< system:stop
> OK
[...]
< system:start all
> OK
SYSTEM:STATE?
Abfrage des smartCORE Betriebszustands.
Parameter
KEINE
Rückgabe
STRING Beschreibung des Betriebszustands. Mögliche Werte sind "Running" (aktiver Messbetrieb), "Ready" (Konfigurationsbetrieb, Messbetrieb gestoppt), sowie seltener "Error" (Fehler aufgetreten) bzw. andere Betriebszustände.
Beispiel
< system:state?
> Running
SYSTEM:STOP
Stopp der smartCORE Anwendung. Die SCPI Verbindung wird dabei NICHT getrennt.
Parameter
KEINE
Rückgabe
OK
Beispiel
< system:stop
> OK
SYSTEM:VERSION?
Abfrage der smartCORE Version
Parameter
KEINE
Rückgabe
STRING
Beispiel
< system:version?
> 42.0
SYSTEM:VERSION:MAJOR?
Abfrage der smartCORE Major Version
Parameter
KEINE
Rückgabe
STRING
Beispiel
< system:version:major?
> 42
SYSTEM:VERSION:MINOR?
Abfrage der smartCORE Minor Version
Parameter
KEINE
Rückgabe
STRING
Beispiel
< system:version:minor?
> 0
TIMEOUT?
Abfrage der maximalen Wartezeit für eine Aktion/Abfrage, die das Interface blockiert.
Parameter
KEINE
Rückgabe
STRING
Beispiel
< timeout?
> 60000
TIMEOUT
Setzen der maximalen Wartezeit für eine Aktion/Abfrage, die das Interface blockiert.
Parameter
Opt. | Parameter | Datentyp | Wertebereich | Bedeutung |
---|---|---|---|---|
Timeout | INT | 1 - | Maximale Wartezeit |
Rückgabe
OK, ERR
Beispiel
< timeout 60000
> OK