Zum Hauptinhalt springen

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

ParameterDatentyp
HerstellerSTRING
ProduktSTRING
ApplikationSTRING
ProtokollversionINT
Geräte-SeriennummerSTRING
Hostname der (kommunizierenden) SCPI SchnittstelleSTRING
Port der (kommunizierenden) SCPI SchnittstelleINT
ApplikationsversionSTRING
Herstellungsdatum des GerätsSTRING
GerätenameSTRING
KommentarSTRING

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.ParameterDatentypWertebereichBedeutung
KonfigurationstypSTRING"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.ParameterDatentypWertebereichBedeutung
KonfigurationstypSTRING"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.ParameterDatentypWertebereichBedeutung
QuelltypSTRING"BASE64", "FILE", "URL"Auswahl der Konfigurationsquelle
KonfigurationstypSTRING"STAT", "DYN"Auswahl der zu ersetzenden statischen/dynamischen Konfiguration
KonfigurationSTRINGsiehe untenBeschreibung 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.ParameterDatentypWertebereichBedeutung
JAKanalauswahlSTRINGRegulärer Ausdruck für Kanalauswahl

Rückgabe​

INT

Beispiele​

< data:count?
> 42

< data:count? ^gps.*$
> 6

DATA:INFOS?​

Abfrage der Kanalbeschreibungen

Parameter​

Opt.ParameterDatentypWertebereichBedeutung
JAKanalauswahlSTRING[]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.ParameterDatentypWertebereichBedeutung
JAKanalauswahlSTRING[]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.ParameterDatentypWertebereichBedeutung
JAKanalauswahlSTRING[]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.ParameterDatentypWertebereichBedeutung
JAKanalauswahlSTRING[]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.ParameterDatentypWertebereichBedeutung
JAKanalauswahlSTRING[]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.ParameterDatentypWertebereichBedeutung
JAKanalauswahlSTRING[]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.ParameterDatentypWertebereichBedeutung
SampleSTRINGsiehe untenBeschreibung 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.ParameterDatentypWertebereichBedeutung
FactorySTRING
FunktionSTRING
JAParameterSTRING[]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.ParameterDatentypWertebereichBedeutung
FactorySTRING
FunktionSTRING
ParameterSTRINGsiehe 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.ParameterDatentypWertebereichBedeutung
KonfigurationstypSTRING"STAT", "DYN"Typ der Konfiguration, die das Modul instantiiert
ModulnameSTRING
FunktionSTRING
JAParameterSTRING[]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.ParameterDatentypWertebereichBedeutung
KonfigurationstypSTRING"STAT", "DYN"Typ der Konfiguration, die das Modul instantiiert
FactorySTRING
FunktionSTRING
ParameterSTRINGsiehe 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.ParameterDatentypWertebereichBedeutung
FactorySTRING

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.ParameterDatentypWertebereichBedeutung
FactorySTRING

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.ParameterDatentypWertebereichBedeutung
FactorySTRINGModul-Factory (~"Klasse")
JATypeSTRING"base64", "text"Kodierung der zurückgegebenen Dokumentation
JALanguageSTRING"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.ParameterDatentypWertebereichBedeutung
FactorySTRINGModul-Factory (~"Klasse")
JATypeSTRING"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üsselBedeutung
descriptionabstrakte Beschreibung des Moduls
fileNameDateiname des geladenen Shared Objects in dem sich das Modul befindet
nameName der Modul-Factory
versionVersion

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.ParameterDatentypWertebereichBedeutung
FactorySTRING

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.ParameterDatentypWertebereichBedeutung
JATypeSTRING"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.ParameterDatentypWertebereichBedeutung
Art des NeustartsSTRING"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.ParameterDatentypWertebereichBedeutung
Art des StartsSTRING"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.ParameterDatentypWertebereichBedeutung
TimeoutINT1 -Maximale Wartezeit

Rückgabe​

OK, ERR

Beispiel​

< timeout 60000
> OK