Anwendung von Berechnungen auf spezifische Messpunkte

Es gibt unterschiedliche Methoden, wie eine Berechnung auf spezifische Messpunkte beschränkt werden kann.

Erstens, die Nutzung der If-Then-Else Funktion ist eine effiziente Methode, um das Verhalten in einem wahr und falsch Anwendungsfall festzulegen.

Zweitens, die If-Then-ElseFunktion ermöglicht auch bestimmte Messpunkte auszuschließen, sodass diese in der Berechnung übersprungen werden.

If-Then-Else Grundlagen

Die If-Then-Else Funktion benötigt eine Bedingung, deren Ergebnis Wahr oder Falsch ist.

Then und Else stellen die zwei Verhalten dar, nämlich wenn der Zustand wahr (Then) und falsch (Else) ist.

Result = Condition ? True Case : False Case

Die drei Teile (Bedingung, Wahr, Falsch) in der If-Then-Else Struktur sind Ausdrücke, die die gleichen oder unterschiedlichen Eingangssignale verwenden können. Die Zustände Wahr und Falsch können komplexe Formeln, einzelne Eingangssignale oder Konstanten sein.

BEISPIEL

Sie möchten die Motorleistung berechnen, aber nur wenn das Fahrzeug bergauf fährt.

Bedingung für die Fahrt bergaufwärts = Gradient (Altitude) > 0

Wahr-Fall = EngineSpeed * Load

wenn falsch = 0

Power_Uphill = Gradient (Altitude) > 0 ? EngineSpeed * Load [* Factor] : 0

(Abhängig von der erwarteten Einheit für Power und den Einheiten für EngineSpeed und Load, muss ein zusätzlicher Faktor für die Konvertierung der Einheit berücksichtigt werden.)

If-Then-Else innerhalb einer anderen Berechnung

Wenn die If-Then-Else Funktion in eine komplexere Berechnung eingebettet ist, dann sollte normalerweise entweder der Zustand Wahr oder der Zustand Falsch ein neutraler Wert für die gesamte Berechnung sein. Der einfachste neutrale Wert ist 0 für die Addition und Subtraktion, während es 1 für die Multiplikation oder Division ist.

BEISPIEL
  • Sie möchten den gesamten CO2-Ausstoß im Geschwindigkeitsbereich zwischen 40 und 80 km/h wissen. Wenn Sie die CO2-Emissionsmenge (in g/s) integrieren, können Sie die Menge berechnen.

    • Bedingung für den Geschwindigkeitsbereich: (Speed > 40) AND (Speed <= 80)

    • wenn wahr: integriere CO2-Emissionsgasmenge

    • wenn falsch: integriere den neutralen Wert, d.h. 0

    CO2_Amount = Accumulate_Prefix_Integral ( ( (Speed > 40) AND (Speed <= 80) ) ? CO2_Emission : 0 )

    Accumulate_Prefix_Integral ist der Name der Integralfunktion, die mit dem ersten Messpunkt startet.

  • Sie möchten die Entfernung bei einer gefahrenen Testfahrt berechnen, und zwar nur im Geschwindigkeitsbereich zwischen 40 und 80 km/h .

    Die Entfernung kann als Integral des Speed-Signals berechnet werden. Es soll ausschließlich der Geschwindigkeitsbereich innerhalb des angegebenen Bereichs berücksichtigt werden.

    • Bedingung für den Geschwindigkeitsbereich: (Speed > 40) AND (Speed <= 80)

    • wenn wahr: Der aktuelle Speed Wert wird für die Integralberechnung genutzt

    • wenn falsch: Ein neutraler Wert wird für die Integralberechnung genutzt, d. h. 0

    Distance = [Factor *] Accumulate_Prefix_Integral ( ( (Speed > 40) AND (Speed <= 80) ) ? Speed : 0 )

    Angenommen die Einheit für die Geschwindigkeit ist km/h und die Entfernung soll in Kilometer sein, dann müssen Sie einen Konvertierungsfaktor anwenden, d. h. = 1 / 3600.

  • Sie möchten wissen, wie lange sich die Geschwindigkeit im Bereich zwischen 40 und 80 km/h bewegt hat.

    Duration = Accumulate_Prefix_Integral ( (Speed > 40) AND (Speed <= 80) )

    Da allein die Bedingung immer 1 oder 0 ist, ist eine reine Integraloperation ausreichend. Die If-Then-Else Funktion muss nicht angewendet werden.

    Bei der genannten Formel ist die Dauer in Sekunden angegeben.

If-Then-Else Funktion um Messpunkte zu ignorieren

In allen vorhergehenden Beispielen ermöglicht die If-Then-Else Funktion ein Ergebnis zu berechnen, das auf einer bestimmten Bedingung beruht. Es gibt immer ein Berechnungsergebnis für jeden Messpunkt, auch für die Messpunkte, die die Bedingung nicht erfüllen. Durch die entsprechende Wahl des neutralen Wertes ergibt sich keine Änderung auf das Berechnungsergebnis. Dennoch gibt es einen Wert für jeden Zeitstempel, d. h. für jeden Eingangsmesspunkt. Dies kann z. B. der Fall bei einer gezeichneten Signallinie im Oszilloskop sein, die eine kontinuierliche Linie ist.

In einigen Fällen ist es nicht einfach einen neutralen Wert für das Berechnungsergebnis zu finden. Daher ist es hilfreich, wenn Sie die Messpunkte für die Berechnung ignorieren können. Dies ist der Fall bei einer Durchschnittsberechnung, bei der Sie einige Messpunkte ignorieren müssen, weil diese keinen entsprechenden neutralen Wert haben.

Um Messpunkte vollständig auszuschließen, sodass z. B. kein Ergebnis für die Berechnung vorliegt, können Sie die No Value Funktion verwenden. Die No Value Funktion löscht keine Messpunkte, sondern setzt ein Flag auf den Wert, der ignoriert werden soll.

Es gibt zwei Möglichkeiten, Messpunkte mit einem No Value Flag zu erstellen.

BEISPIEL
  • Sie möchten statistische Daten für die Geschwindigkeit zwischen 40 und 80 km/h ermitteln. Um die Messpunkte mit einer anderen Geschwindigkeit zu entfernen, erhalten diese ein No Value Flag.

    • Bedingung für den Geschwindigkeitsbereich: (Speed > 40) AND (Speed <= 80)

    • wenn wahr: Behalte den aktuellen Speed-Wert wie er ist

    • wenn falsch: Setze den No Value-Flag für den Messpunkt

    Selected_Samples = (Speed > 40) AND (Speed <= 80) ? Speed : NoValue (0)

    Wenn Sie das Selected_Samples-Signal einem Statistischen Daten Instrument zuweisen, werden nur die Messpunkte als Basis für die Statistik genutzt, die sich auch im definierten Geschwindigkeitsbereich befinden.

    Wenn Sie das Signal einem Oszilloskop zuweisen, beschränkt sich die Signallinie ausschließlich auf die sich im Geschwindigkeitsbereich enthaltenen Messpunkte.

    Info: Der Ausdruck No Value (0) bedeutet, dass der Messpunkt mit dem Wert 0 und einem No Value Flag versehen wird.

    oder

    Ein häufiger Anwendungsfall ist, die Messpunkte für die Berechnung zu ignorieren. Hierfür gibt es eine separate Funktion, um den No Value Zustand den Messpunkten zuzuweisen.

    Im Gegensatz zu den vorhergehenden Definitionen, müssen Sie die Bedingung so formulieren, dass eindeutig ist, welche Messpunkte ausgeschlossen werden sollen.

    • Bedingung, um den Geschwindigkeitsbereich auszuschließen: (Speed <= 40) Or (Speed > 80)

      (Im Gegensatz zur Wahr-Bedingung weiter oben)

    • Funktion, um den No Value Zustand spezifischen Messpunkten (außerhalb des Bereichs 40 - 80 km/h) zuzuweisen:

      SetNoValueStatus ( Speed, ( (Speed <= 40) Or (Speed > 80) )

    Dies ist gleichbedeutend mit

    Selected_Samples = (Speed > 40) AND (Speed <= 80) ? Speed : NoValue (Speed)

    In diesem Fall bewirkt das No Value (Signal), dass der ursprüngliche Signalwert von Speed beibehalten wird, aber den No Value Flag zugewiesen bekommt.

    Diese Auswahl an Messpunkten für das Speed-Signal kann z. B. als Input für eine Durchschnittsberechnung genutzt werden (von Beginn der Aufzeichnung).

    Average_Speed = Accumulate_Prefix_Average ( Selected_Samples )

  • Die No Value Funktion kann auch angewendet werden, um Zeichnungsmesspunkte in einem Oszilloskop zu unterdrücken, zum Beispiel bei der vorher genannten Entfernungsberechnung.

    Interrupted_Distance_Curve = (Speed > 40) AND (Speed <= 80) ? Distance : NoValue (0)

    mit Distance = [Factor *] Accumulate_Prefix_Integral ( ( (Speed > 40) AND (Speed <= 80) ) ? Speed : 0 )

    Info: Obwohl die Berechnung

    Accumulate_Prefix_Integral ( ( (Speed > 40) AND (Speed <= 80) ) ? Speed : NoValue (0) )

    auch eine Signallinie mit den gleichen Lücken wie das Signal Interrupted_Distance_Curve aufzeigen würde, wäre das Ergebnis anders als Sie erwarten würden.

    Das ist die Auswirkung der Integralfunktion: Wenn es keinen Messpunkt gibt (oder einen Messpunkt mit einem No Value Flag), verwendet der Integral den letzten verfügbaren Messwert für den gesamten Zeitraum bis der nächste Messpunkt verfügbar ist.

If-Then-Else Funktion um Messpunkte mit Not a Number Zustand zu ignorieren

In einigen Fällen haben Sie Signale aufgezeichnet, die bereits Messpunkte mit einem Not a Number (NaN) Wert beinhalten.

Normalerweise verhindern solche spezifischen Messpunkte eine nachfolgende Berechnung. Daher benötigen Sie wieder eine Methode, um diese Messpunkte aus Ihrer Berechnung auszuschließen.

BEISPIEL
  1. Um einen NaN Messpunkt zu löschen, müssen Sie zuerst den NaN Messpunkt entdecken und diesem anschließend den No Value Flag zuweisen.

    Bedingung für Not a Number: InputSignal != InputSignal

    Da NaN die Berechnung für einen Messpunkt verhindert, ist die Bedingung Wahr, wenn das Eingangssignal zu diesem Zeitpunkt einen NaN Messpunkt hat.

    Sie können direkt die längere If-Then-Else Funktion mit der kürzeren SetNoValueFlag Funktion ersetzen:

    InputSignal_without_NaN = SetNoValueStatus (InputSignal, InputSignal != InputSignal)

    Sie können InputSignal_without_NaN für Berechnungen mit Historie verwenden (wie Average, Minimum, Maximum) und erhalten trotzdem ein Ergebnis, in dem die NaN Messpunkte ausgeschlossen sind.

  2. NaN Messpunkte aus einer Integralberechnung ausschließen.

    Wie bereits zuvor erwähnt, beeinflusst der NaN Zustand in unerwünschterweise eine Integralberechnung.

    Um NaN Werte aus einer Integralberechnung auszuschließen, müssen Sie daher die If-Then-Else Berechnung anwenden, damit die NaN Messpunkte den neutralen Wert, also 0, für die Integralberechnung erhalten.

    Integral_excl_NaN = Accumulate_Prefix_Integral ( InputSignal != InputSignal ? 0 : InputSignal)

Siehe auch  

Bits oder Bit-Felder aus einer ganzen Zahl extrahieren

RMS berechnen

Aufzählungssignale verwenden