← Alle Dokumentation

Berechnete Signale

Panel „Berechnete Signale“ bei der Definition eines neuen Signals namens power aus dem Ausdruck torque mal motor_speed

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.