Hilfsfunktionen
Systemfunktionen
Funktion | Beschreibung |
---|---|
time() | Liefert den Auswertezeitpunkt des Moduls in Sekunden UTC |
Zeitumwandlung "decodeTime"
Die Funktion decodeTime()
nimmt einen skalaren Zeitstempel t in UTC und wandelt ihn mit dem optionalen Offset tzDif zur lokalen Uhrzeit in die zugehörige Datum und Zeitdarstellung um. Verschiedene Interpretationen und Ausgabeformate können eingestellt werden.
TM1 = decodeTime(t);
TM2 = decodeTime(t, tzDif);
// Optionale Konfiguration
TMx = decodeTime(..., { scale: <enum>
, epoch: unix|<date>
, tzDif: <int>
, format: <str>
});
Eigenschaft | Wert | Beschreibung |
---|---|---|
scale | <enum> | Bestimmt, was der ganzzahlige Anteil des Zeitstempels beschreibt: auto: Größenordnung des Zeitstempels bestimmen die Auflösung (def.), oder der ganzzahlige Teil von t zählt... d: ... Tage s: ... Sekunden ms: ... Millisekunden us: ... Microsekunden ns: ... Nanosekunden |
epoch | unix/<date> | Der Startzeitpunkt der Zählung wird auf das gegebene UTC Datum festgelegt, Format: 'yyyy-mm-dd', optional mit Zeitangabe 'yyyy-mm-dd HH:MM' (def.: unix 1970-01-01) |
tzDif | <int> | Zeitversatz in Minuten zur Ausgabe der lokalen Zeit, Beispiel MEZ: +60, MESZ: +120, EST: -300 |
format | <str> | Statt eines Vektors wird ein formatierter Datum/Zeit-String ausgegeben. Die Funktion verwendet intern die c++ Funktion strftime() . Die Formatierung der Ausgabe ist hier beschrieben.Zusätzlich können folgende Platzhalter verwendet werden: %FMS: 3-Ziffern milli-Sekunden %FUS: 6-Ziffern micro-Sekunden %FNS: 9-Ziffern nano-Sekunden jeweils mit führenden Nullen |
Sofern nicht mit der Eigenschaft format die Ausgabe eines formatierten Datum-Zeit-Textes angefordert wird, ist das Ergebnis ein Vektor mit folgenden <uint>
Werten:
// Rückgabe der Datums-Zeit-Information als Vektor entsprechend
// folgendem Inhalt:
TM = [ year, month, day
, hour, minute, second, nanoseconds
, weekday // 0..6, 0 := Sunday
, yearday];
Eigenschaften eines Wertes
Funktion | Beschreibung |
---|---|
deltaT(x) | Liefert den zeitlichen Abstand der letzten zwei Auswertezeitpunkte des Terms x in Sekunden |
deltaY(x) | Liefert die Wertedifferenz der letzten zwei Samples des Terms x, ist positiv bei ansteigendem Signalverlauf |
sgn(x) | Vorzeichen des Wertes x |
sgn(x,eps) | Vorzeichen des Wertes x mit Toleranz (eps) |
abs(x) | Absolutbetrag vom skalaren Wert x, Für die Länge eines Vektors siehe Length(V) |
Kenngrößen mehrerer Werte
Funktion | Beschreibung |
---|---|
abs(x1, ..., xN) | l2-Norm der Einzelwerte (x1, ..., xN), |
min(x1, ..., xN) | Minimum der Einzelwerte (x1, ..., xN) |
max(x1, ..., xN) | Maximum der Einzelwerte (x1, ..., xN) |
mean(x1, ..., xN) | Arithmetischer Mittelwert der Einzelwerte (x1, ..., xN) |
rms(x1, ..., xN) | Quadratwurzel des arithmetischen Mittelwerts der quadrierten Einzelwerte (x1, ..., xN) |
Begrenzen und Runden
Funktion | Beschreibung |
---|---|
range(x, ...) | Begrenzt den Eingangswert auf einen bestimmten Wertebereich. Siehe nachfolgende Beschreibung. |
ceil(x) | kleinster ganzzahliger Wert (datentyperhaltend) |
ceil2i(x) | kleinster ganzzahliger Wert (Rückgabetyp int) |
floor(x) | größter ganzzahliger Wert (datentyperhaltend) |
floor2i(x) | größter ganzzahliger Wert (Rückgabetyp int) |
trunc(x) | falls dann größter ganzzahliger Wert , sonst kleinster ganzzahliger Wert |
round(x) | ganzzahliger Wert , so dass (datentyperhaltend) |
round2i(x) | ganzzahliger Wert , so dass (Rückgabetyp int) |
nonZero(x, ...) | Folgt x, sofern , sonst wenn wird gesetzt, im Übrigen Siehe nachfolgende Beschreibung. |
Wertebereich "range"
Die Funktion schränkt den Wertebereich für ein gegebenes Eingangssignal x (Skalar oder Vektor) auf einen Bereich ein und bietet über die optionale Konfiguration vielfältige Varianten.
r1 = range(x);
r2 = range(x, [min, max]); // bessere Lesbarkeit
r3 = range(x, min, max); // nicht mehr verwenden
// Optionale Konfiguration für alle Varianten
rx = range(..., { min: off|<val>
, max: off|<val>
, lower: off|<val>|erase
, upper: off|<val>|erase
, mode: <enum>
, defXY: [<dbl>, <dbl>]
, limVar: <str>
});
Eigenschaft | Wert | Beschreibung |
---|---|---|
min | off/<val> | Deaktivierung oder feste Konfiguration einer unteren (skalaren) Grenze. Wird der Funktionsparameter min genutzt, ist diese Eigenschaft ohne Funktion. |
max | off/<val> | Deaktivierung oder feste Konfiguration einer oberen (skalaren) Grenze. Wird der Funktionsparameter max genutzt, ist diese Eigenschaft ohne Funktion. |
lower | off/<val>/erase | Falls aktiviert, wird der Ersatzwert beim Überschreiten der unteren Grenze (x < min) ausgegeben oder das Sample entfernt |
upper | off/<val>/erase | Falls aktiviert, wird der Ersatzwert beim Überschreiten der oberen Grenze (x > max) ausgegeben oder das Sample entfernt |
mode | <enum> | Falls x ein Vektor ist, werden in Abhängigkeit von mode - box: alle Koordinaten einzeln… - length: die Länge des Vektors ( >= 0.0 )... - azimuth: der Winkel des Vektors in der XY-Ebene... - elevation: der Winkel des Vektors aus der XY-Ebene zur Z-Achse… ...auf den eingestellten Bereich limitiert |
defXY | [<dbl>, <dbl>] | Im elevation-Mode ist defXY ist die Standardrichtung, wenn der Vektor aus der senkrechten zurückgeschwenkt werden muss (def.: [1, 0, 0]). |
limVar | <str> | limVar definiert optional den Namen einer lokalen <bool> -Variable, um die aktive Limitierung zu signalisieren |
Nicht-Null "nonZero"
Die Funktion sorgt dafür, dass ein kritischer Wert (def.: 0.0) niemals ausgegeben wird. Statt dessen wird der Wertebereich mittels eine Größe (def.: 1e-6) um die kritische Größe ausgespart. Die Anwendung der Funktion ist z.B. für Divisionen optimiert, bei denen eine Division durch Null möglich wäre und ausgeschlossen werden muss.
xnz1 = nonZero(x); // eps := 1e-6, x_crit := 0.0
xnz2 = nonZero(x, eps); // x_crit := 0.0
xnz3 = nonZero(x, eps, x_crit);
Schaltschwelle mit Hysterese "threshold"
Diese Funktion erzeugt ein Schaltsignal aus dem Vergleich eines Signals gegen einen festen Schwellenwert threshold. Mittels einer Hysterese hysteresis und Verzögerungszeiten delayOn, delayOff können Störungen auf dem Signalverlauf unterdrückt werden.
Die Funktion kann in verschiedenen Anwendungsformen verwendet werden:
trig1 = threshold(x);
trig2 = threshold(x, t);
trig3 = threshold(x, t, h);
// Optionale Konfiguration für alle Varianten
trigX = threshold(..., { threshold: <dbl>
, hysteresis: <dbl>
, delayOn: <dbl>
, delayOff: <dbl>
, logic: <enum>
, startup: inf|<bool>
});
Eigenschaft | Wert | Bedeutung |
---|---|---|
threshold | <dbl> | Auslöseschwelle, def.: 0.55 Wird mit Argument t überschrieben |
hysteresis | <dbl> | Breite der Hysteresezone, wird auf den threshold für den zweiten Grenzwert addiert, def.: -0.10 Wird mit Argument h überschrieben |
delayOn | <dbl> | optionale Filterzeit in Sekunden für den Einschaltvorgang |
delayOff | <dbl> | optionale Filterzeit in Sekunden für den Ausschaltvorgang |
logic | <enum> | - auto: Funktion wird durch das Vorzeichen der Hysterese bestimmt - above: Auslösung oberhalb der Hysterese-Zone - below: Auslösung unterhalb der Hysterese-Zone |
startup | inf|<bool> | Startverhalten: inf: Die Lage des ersten Samples bestimmt bezüglich des Thresholds den Ausgangswert (def.). <bool> : Es wird angenommen, dass dieser Ausgangswert vor dem ersten Sample ausgegeben wurde. |
- Die Funktion liefert true für den Zeitpunkt, wo das Signal x die definierte Auslöseschwelle überschreitet und false für den Zeitpunkt, wo das Signal x in die Rückstellung fällt.
Werden die Verzögerungszeiten eingestellt, muss das Signal x kontinuierlich für das angegebene Intervall in der Auslösung oder Rückstellung verbleiben, bevor die Umschaltung realisiert wird. Die Umschaltung ist dadurch gegenüber dem Überschreiten des jeweiligen Grenzwertes verzögert.
In der Betriebsart auto (default) erfolgt die Auslösung in Abhängigkeit vom Vorzeichen der Hysterese:
Hysterese | Auslösung (true) | Rückstellung (false) |
---|---|---|
In den Betriebsarten above und below definieren threshold und hysteresis zwei Grenzen einer Hysterese-Zone:
Betriebsart | Auslösung (true) | Rückstellung (false) |
---|---|---|
above | ||
below |