Playback Modul "playback"
Beschreibung
DAS "playback" MODUL STELLT LEDIGLICH EIN TESTMODUL FÜR INTERNE ZWECKE DAR!
Es dient der zeitlich korrekten Produktion von innerhalb einer Playback-Datei spezifizierten Daten. Es verwendet hierbei die einheitliche API zur Kanalkonfiguration des smartCORE und kann von daher nicht nur für Tests von konsumierenden Modulen sondern auch für Tests des smartCORE selbst (z.B. Datenfilterung) eingesetzt werden.
Die Produktion erfolgt hier anhand kompletter Datenblöcke, welche auf Basis eines Mikrosekunden-genauen Gitters festgelegt werden.
Verwendete Schnittstellen & Protokolle
- KEINE
JSON-Konfiguration
Im folgenden Abschnitt soll die gesamte JSON-Konfiguration des Moduls beschrieben und die einzelnen Parameter erläutert werden.
Hierbei ist die Konfiguration der innerhalb von "channels" spezifizierten Kanäle der Dokumentation zur einheitlichen Kanalkonfiguration zu entnehmen.
Beispielkonfiguration (typische Minimalkonfiguration)
{
"module":"Playback",
"factory":"playback",
"config":{
"channels:[
{
"channelType": "timestamped",
"name": "Some Speed",
"physicalUnit": "km/h",
"dataType": "float",
"bufferSize": 10,
"cacheSize": 0,
"filter": [
{
"name": "datareduction",
"absTolerance": 0,
"timeoutMs": 10000
}
]
},
{
"channelType": "timestamped",
"name": "Some Revs",
"physicalUnit": "1/min",
"dataType": "float"
},
{
"channelType": "timestamped",
"name": "Some GPS Location",
"dataType": "gpslocation"
},
< More channel specifications >
]
}
}
Beispielkonfiguration (typische Maximalkonfiguration)
{
"module":"Playback",
"factory":"playback",
"config":{
"gridUs": 5000,
"decimalSep": ".",
"structureSep": " ",
"fieldSep": ",",
"numCycles": 1,
"exitOnEnd": false,
"exitDelay": 0,
"timebase": "absolute",
"channels:[
< Channel specifications >
]
}
}
Aufbau einer Playback-Datei
Das Format einer Playback-Datei entspricht grundsätzlich dem einer CSV Datei, wobei (mit Ausnahme von '=') jedoch frei konfigurierbare Dezimal-, Struktur- sowie Feld-Separatoren möglich sind. Allerdings sind mehrere aufeinanderfolgende Separatoren zur Verbesserung des Erscheinungsbilds NICHT erlaubt.
Fehlt die Konfiguration sämtlicher Separatoren innerhalb der Konfigurationsdatei vollständig, so wird eine Autodetektion (bzgl. Kompatibilität mit aus Excel exportierten CSV Dateien, jeweils englischer und deutscher Lokalisierungen) durchgeführt.
Die Zeitangaben innerhalb der ersten Spalte dieser Datei sind als Sekunden (optional Sekundenbruchteile, getrennt durch den Dezimalseparator "decimalSep") zu verstehen. Sämtliche Trennzeichen müssen auf die richtige Art eingegeben bzw. "escaped" werden.
Beispiele von Playback-Dateien
Zeit [s];Geschwindigkeit;Drehzahl;GPS Position
0,7;60;1500
1,4;85;;60,123456 18,111222333 123,4
2,8;100;2200
Time [s],Speed,Revs,GPS Location
0.7,60,1500
1.4,85,,60.123456 18.111222333 123.4
2.8,100,2200
Globale Modulparameter
Parametername | Erforderlich | Datentyp | sinnvoller Wertebereich | Default | Beschreibung |
---|---|---|---|---|---|
gridUs | Nein | INT | 1 - | 5000 (5 ms) | Zeitlicher Gitterabstand bzgl. Aufteilung in zu produzierende Datenblöcke |
decimalSep | Nein | STRING | "." | "." | Dezimaltrennzeichen innerhalb von Fließkommazahlen (*) |
structureSep | Nein | STRING | " " | " " | Trennzeichen, um mehrere Werte einer Struktur (z.B. GPS Location) zu setzen (*) |
fieldSep | Nein | STRING | "," | "," | Trennzeichen zwischen mehreren gleichzeitig zu produzierenden Kanälen (*) |
numCycles | Nein | INT | -1, 1 - | 1 | für mehrfache (bzw. bei -1 unendliche) Wiederholung der Playback-Datei |
exitOnEnd | Nein | BOOL | false, true | false | Herunterfahren des smartCORE nach Abschluss aller Produktionszyklen |
exitDelay | Nein | INT | 1 - | 0 | Verzögerung vor dem Herunterfahren des smartCORE |
timebase | Nein | STRING | "absolute", "relative" | "absolute" | Zeitbasis der Zeitstempel produzierter Messdaten ("absolute" für reproduzierbare Ergebnisse) |
channels | JA | JSON Array of JSON Objects | siehe unten |
(*) sind ALLE Parameter 'decimalSep', 'structureSep' und 'fieldSep' undefiniert, so erfolgt eine Auto-Detektion der Separatoren. Es ist außerdem NICHT möglich '=' als Separator zu verwenden.
Konfiguration eines Kanals (JSON Object innerhalb von "channels")
Dies hier stellt lediglich einen Auszug dar (siehe Dokumentation bzgl. einheitlicher Kanalkonfiguration für mehr Details).
Parametername | Erforderlich | Datentyp | sinnvoller Wertebereich | Default | Beschreibung |
---|---|---|---|---|---|
name | JA | STRING | Name des Kanals | ||
channelType | JA | STRING | "timestamped", "singlevalue" | Typ des Kanals | |
dataType | JA | STRING | siehe unten | Datentyp des Kanals | |
bufferSize | Nein | INT | 1 - | 1024 | Puffergröße des angelegten Kanals |
physicalUnit | Nein | STRING | physikalische Einheit |
Unterstützte Kanaldatentypen 'dataType'
- string (UTF-8 kodiert)
- bytearray (HEX kodiert OHNE Präfix)
- double
- float
- int64, int32, int16, int8
- uint64, uint32, uint16, uint8
- bool
- gpslocation (drei float Werte durch Strukturtrennzeichen getrennt)
Modul-Informationen
Information | Wert |
---|---|
Autoren | optiMEAS Measurement and Automation Systems GmbH |
seit smartCORE | 2.3 |
Modultyp | Producer |
Abhängigkeiten | KEINE |