Berechnete Signale
Ein berechnetes Signal ist ein neuer Kanal, der per Formel aus einem oder mehreren bestehenden
Kanälen abgeleitet wird und nicht vom Datenlogger aufgezeichnet wurde - dasselbe Prinzip
wie ein Math-/virtueller Kanal in einem Werkzeug wie ETAS MDA. Formeln werden in der Syntax von mathjs geschrieben, und die
Schnelleinfüge-Schaltflächen im Editor (abs, sqrt, min,
max, round, sin, cos, log, die
bitweisen Operatoren sowie die Vergleichs- und logischen Operatoren) sind Abkürzungen, keine
abschließende Liste - jede mathjs-Funktion steht auch ohne eigene Schaltfläche zur Verfügung.
Signale referenzieren
Ein Signal wird referenziert, indem sein exakter Name als einfacher Bezeichner in den Ausdruck eingetippt wird, oder indem sein Name aus der Signalliste hineingezogen wird. Eine Formel kann nicht nur reale Kanäle, sondern auch ein anderes berechnetes Signal referenzieren, sodass eine Formel schichtweise aufgebaut werden kann: eine Einheitenumrechnung, eine darauf aufbauende physikalische Berechnung und ein auf dieser physikalischen Berechnung aufbauendes Schwellenwert- oder Klassifikationssignal - jedes davon ein eigenes, benanntes, unabhängig wiederverwendbares Signal, statt eines zunehmend unlesbaren Ausdrucks.
Wie und wann eine Formel ausgewertet wird
Anders als in einer Tabellenkalkulation wird ein berechnetes Signal einmalig ausgewertet, und zwar in dem Moment, in dem Sie es erstellen oder bearbeiten - Punkt für Punkt über jeden Messwert der aktuell geladenen Messung, nicht als einzelne vektorisierte Array-Operation. Das Ergebnis ist eine Momentaufnahme, kein reaktiv neu berechneter Wert. Wenn Sie nachträglich ein früheres Signal bearbeiten, von dem ein späteres abhängt, behält das spätere Signal seine bereits berechneten Werte; eine automatische Neuauswertung findet nicht statt. Um neue Werte zu übernehmen, müssen Sie das abhängige Signal selbst erneut öffnen und speichern.
Da alle Kanäle einer geladenen Messung auf einem gemeinsamen Zeitraster liegen (siehe Erste Schritte), muss die Formel-Engine Eingänge vor der Auswertung nicht interpolieren oder ausrichten.
Was gespeichert wird
Eine Sitzungskonfiguration speichert für jedes berechnete Signal die Formel, nicht die daraus resultierenden berechneten Werte. Beim erneuten Öffnen dieser Konfiguration - egal ob gegen dieselbe Datei oder eine andere - wird jede Formel neu ausgewertet, gegen die Messung, die in diesem Moment geladen ist, und zwar in der Reihenfolge, in der sie ursprünglich gespeichert wurden (sodass ein Signal, das auf einem anderen aufbaut, weiterhin korrekt aufgelöst wird). Referenziert eine gespeicherte Formel einen Kanal, den die neu geladene Datei nicht enthält, wird nur dieses eine Signal stillschweigend übersprungen, statt den gesamten Ladevorgang fehlschlagen zu lassen.
Beispiel. Gegeben die realen Kanäle torque (N·m)
und motor_speed (rad/s), berechnet ein berechnetes Signal namens power mit
dem Ausdruck torque * motor_speed und der Einheit W die mechanische
Leistung an jedem Messpunkt. Ein zweites berechnetes Signal namens power_kw, Ausdruck
power / 1000, Einheit kW, referenziert das erste berechnete Signal per
Namen, um es in besser lesbaren Einheiten auszudrücken - zwei benannte, unabhängig sichtbare Signale
statt einer einzelnen, schwer nachvollziehbaren Formel.
Einheiten und Benennung
Das Einheitenfeld eines berechneten Signals ist eine reine Textbeschriftung - es findet keine
Dimensionsanalyse statt, die prüft, ob das Ergebnis einer Formel zur eingetragenen
Einheit passt. torque * motor_speed wird deshalb auch mit der Beschriftung
m/s ohne Warnung berechnet, obwohl das die falsche Einheit ist. Jeder Signalname, ob real oder berechnet, muss
innerhalb seiner Messung eindeutig sein; die App erzwingt dies in dem Moment, in dem Sie versuchen, ein
berechnetes Signal unter einem Namen zu speichern, der bereits von einem realen Kanal oder einem
anderen berechneten Signal verwendet wird.
Fehler
Eine fehlerhafte Formel - ein leerer Ausdruck, unausgeglichene Klammern, ein führender oder abschließender Operator oder eine Syntax, die mathjs selbst ablehnt - wird erkannt, wenn Sie das Signal speichern, nicht fortlaufend während der Eingabe, und als Inline-Fehlermeldung angezeigt, die erklärt, was falsch ist.