Funktionsgenerator Modul "functiongenerator"
Beschreibung
DAS "functiongenerator" MODUL STELLT LEDIGLICH EIN TESTMODUL FÜR INTERNE ZWECKE DAR!
Es dient der zeitlich korrekten Produktion von Kanaldaten.
Die Produktion erfolgt hier anhand kompletter Datenblöcke.
Verwendete Schnittstellen & Protokolle
- KEINE
JSON-Konfiguration
Im folgenden Abschnitt soll die gesamte JSON-Konfiguration des Moduls beschrieben und die einzelnen Parameter erläutert werden.
Beispielkonfiguration (typische Konfiguration)
{
"module":"FunctionGenerator",
"factory":"functiongenerator",
"config":{
"maximumProductionCount":-1,
"maximumTimestampDeviation":-1,
"rtPriority":80,
"samplesPerBlock":1,
"timeoutSeconds":1,
"timeoutNanoseconds":0,
"startDate":"1970-01-01T00:00:00Z",
"channels":[
{
"name":"Some Sine Channel",
"dataType":"float",
"bufferSize":1024,
"function":"sine",
"amplitude":1.0,
"offset":0.0,
"frequency":1.0,
"onOffRatio":0.5
},
{
"name":"Some Message Channel",
"dataType":"string",
"function":"messages",
"messages":[
{
"timestamp":"1970-01-01T00:00:05Z",
"text":"Hello, "
},
{
"timestamp":"1970-01-01T00:00:10Z",
"text":"World!"
}
]
},
{
"name":"Some Data Points",
"dataType":"int32",
"function":"datapoints",
"datapoints":[
{
"timestamp":"1970-01-01T00:00:01Z",
"value":42
},
{
"timestamp":"1970-01-01T00:00:02Z",
"value":24
}
]
},
{
"name":"Some Gps Locations",
"dataType":"gpslocation",
"function":"gpslocations",
"gpslocations":[
{
"timestamp":"1970-01-01T00:00:01Z",
"latitude":60.1234567,
"longitude":15.7654321,
"altitude":123.4
},
{
"timestamp":"1970-01-01T00:00:02Z",
"latitude":61.1234567,
"longitude":16.7654321,
"altitude":234.5
}
]
}
]
}
}
Globale Modulparameter
Parametername | Erforderlich | Datentyp | sinnvoller Wertebereich | Default | Beschreibung |
---|---|---|---|---|---|
maximumProductionCount | Nein | INT | -1, 1 - | -1 | Maximale Anzahl produzierter Samples (-1 - unendlich) |
maximumTimestampDeviation | Nein | INT | -1, 1 - | -1 | Maximale Zeitstempelabweichung [ns] ab der der aktuelle smartCORE Zeitstempel als neue Ausgangsbasis für die Produktion aneinandergefügter Blöcke verwendet wird (-1 - es wird IMMER der Startzeitpunkt als Zeitbasis benutzt) |
rtPriority | Nein | INT | 20 - 80 | 80 | Priorität des Produktionsthreads |
bufferSize | Nein | INT | 1 - | 1024 | Globale Puffergröße an Samples für alle Kanäle |
samplesPerBlock | Nein | INT | 1 - | 1 | Anzahl produzierter Samples innerhalb eines Blocks |
timeoutSeconds | Nein | INT | 1 - | 1 | Takt der Produktion (Spezifikation der Sekunden) |
timeoutNanoseconds | Nein | INT | 1 - | 0 | Takt der Produktion (Spezifikation der Nanosekunden) |
startDate | Nein | STRING | UTC Zulu String oder "now" | "now" | Startzeitpunkt der Produktio. Für reproduzierbare Ergebnisse und im Kontext von "messages", "datapoints" und "gpslocations" ist eine konstante Spezifikation als UTC Zulu String zweckmäßig, während "now" den aktuellen smartCORE Zeitstempel als Startzeitpunkt spezifiziert. |
channels | JA | JSON Array of JSON Objects | siehe unten |
Konfiguration eines Kanals (JSON Object innerhalb von "channels")
Parametername | Erforderlich | Datentyp | sinnvoller Wertebereich | Default | Beschreibung |
---|---|---|---|---|---|
name | JA | STRING | Name des Kanals | ||
dataType | JA | STRING | siehe unten | Datentyp des Kanals | |
bufferSize | Nein | INT | 1 - | globale "bufferSize" des Moduls | Puffergröße des angelegten Kanals |
function | JA | STRING | siehe unten | zu produzierende Funktion | |
... | zusätzliche Parameter (siehe unten) |
Unterstützte Kanaldatentypen 'dataType'
Anmerkung: Nicht alle Datentypen sind in Kombination mit allen Funktionsspezifikationen "function" sinnvoll einsetzbar.
- string (UTF-8 kodiert)
- bytearray
- double
- float
- int64, int32, int16, int8
- uint64, uint32, uint16, uint8
- bool
- gpslocation
Unterstützte Funktionen 'function'
- linear
- sine
- sawtooth
- triangle
- rectangle
- messages
- datapoints
- gpslocations
Mathematische Funktionen
Folgene Funktionen stellen mathematische Funktionen dar
- linear
- sine
- sawtooth
- triangle
- rectangle
Sie haben folgende Parameter gemeinsam
Parametername | Erforderlich | Datentyp | sinnvoller Wertebereich | Default | Beschreibung |
---|---|---|---|---|---|
amplitude | Nein | FLOAT | - 0.0 - | 1.0 | Die Amplitude (bzw. multiplikative Skalierung) der Funktion |
offset | Nein | FLOAT | - 0.0 - | 0.0 | Der additive Offset der Funktion |
frequency | Nein | FLOAT | 0.0 - | 1.0 | Die Frequenz der Funktion [Hz] |
onOffRatio | Nein | FLOAT | -1.0 - 1.0 | 0.5 | Das Verhältnis zwischen ein- und ausgeschaltetem Zustand einer Rechtecksfunktion innerhalb einer Periode, bei negativen Werten ist die Funktion zu Beginn einer Periode ausgeschaltet |
Funktion zur Produktion von Botschaften 'messages'
Mit Hilfe dieser Funktion lassen sich i.d.R. mehrere spezifizierte String- oder Bytearray-Botschaften produzieren. Hierfür ist es zweckmäßig, den globalen Parameter "startDate" als UTC Zulu String und damit eine absolute Zeitbasis festzulegen, da die Produktionszeitpunkte der Botschaften ebenfalls absolut spezifiziert werden.
Es wird ein einziges JSON Array "messages" von JSON Objekten spezifiziert, diese Objekte sind parametrisiert wie folgt:
Parametername | Erforderlich | Datentyp | sinnvoller Wertebereich | Default | Beschreibung |
---|---|---|---|---|---|
timestamp | JA | STRING | Zulu UTC String | Absoluter Produktionszeitpunkt | |
text | JA | STRING | Text der Botschaft (stets UTF-8 kodiert) |
Funktion zur Produktion diskreter Datenpunkte 'datapoints'
Mit Hilfe dieser Funktion lassen sich i.d.R. mehrere spezifizierte Datenpunkte (Samples) SKALARER und IN JSON DARSTELLBARER Datentypen produzieren. Hierfür ist es zweckmäßig, den globalen Parameter "startDate" als UTC Zulu String und damit eine absolute Zeitbasis festzulegen, da die Produktionszeitpunkte der Datenpunkte ebenfalls absolut spezifiziert werden.
Es wird ein einziges JSON Array "datapoints" von JSON Objekten spezifiziert, diese Objekte sind parametrisiert wie folgt:
Parametername | Erforderlich | Datentyp | sinnvoller Wertebereich | Default | Beschreibung |
---|---|---|---|---|---|
timestamp | JA | STRING | Zulu UTC String | Absoluter Produktionszeitpunkt | |
value | JA | ... | In JSON dargestellter Wert des Datenpunkts |
Funktion zur Produktion von 3D GPS Ortsangaben 'gpslocations'
Mit Hilfe dieser Funktion lassen sich i.d.R. mehrere spezifizierte GPS Locations produzieren. Hierfür ist es zweckmäßig, den globalen Parameter "startDate" als UTC Zulu String und damit eine absolute Zeitbasis festzulegen, da die Produktionszeitpunkte der GPS Locations ebenfalls absolut spezifiziert werden.
Es wird ein einziges JSON Array "gpslocations" von JSON Objekten spezifiziert, diese Objekte sind parametrisiert wie folgt:
Parametername | Erforderlich | Datentyp | sinnvoller Wertebereich | Default | Beschreibung |
---|---|---|---|---|---|
timestamp | JA | STRING | Zulu UTC String | Absoluter Produktionszeitpunkt | |
latitude | JA | FLOAT | Breitengrad | ||
longitude | JA | FLOAT | Längengrad | ||
altitude | JA | FLOAT | geographische Höhe |
Modul-Informationen
Information | Wert |
---|---|
Autoren | optiMEAS Measurement and Automation Systems GmbH |
seit smartCORE | 0.1 |
Modultyp | Producer |
Abhängigkeiten | KEINE |