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