Berechnete Signale
Ein berechnetes Signal ist ein neuer Kanal, der per Formel aus einem oder mehreren bestehenden
Kanälen abgeleitet wird, statt etwas, das Ihr Datenlogger tatsächlich aufgezeichnet hat - dieselbe Idee
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 tatsächlich ausgewertet wird
Das ist der Teil, der Anwender überrascht, die aus dem gedanklichen Modell einer Tabellenkalkulation kommen: Ein berechnetes Signal wird einmalig ausgewertet, und zwar sofort 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. Es handelt sich um eine Momentaufnahme, nicht um eine live, reaktiv neu berechnete Größe. Wenn Sie nachträglich ein früheres Signal bearbeiten, von dem ein späteres abhängt, behält das spätere Signal seine alten, bereits berechneten Werte; es wird nicht automatisch neu ausgewertet, nur weil sich etwas geändert hat, worauf es sich bezieht. Um neue Werte zu übernehmen, müssen Sie das abhängige Signal selbst erneut öffnen und erneut speichern.
Da jeder Kanal einer geladenen Messung bereits ein gemeinsames, resampled Zeitraster teilt (siehe Erste Schritte), muss die Formel-Engine Eingänge vor der Auswertung nie interpolieren oder ausrichten - sie kann sich konstruktionsbedingt auf ein gemeinsames Raster verlassen.
Was tatsächlich 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.
Durchgerechnetes 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 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 tatsächliche Ergebnis einer Formel zur eingetragenen
Einheit passt, sodass torque * motor_speed mit der Beschriftung m/s klaglos
berechnet würde, 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.