NaN-Werte
In einigen Fällen ist die Fehlerbehandlung durch Fehlercodes nicht die beste Wahl, insbesondere wenn Operationen aufgrund besonderer, grundsätzlich jedoch möglicher Eingangsdaten undefinierte Werte liefern, oder wenn Werte aus der Verarbeitung ausgeklammert werden sollen.
Die Norm IEEE 754 definiert für diese Zwecke symbolische Werte der Kategorie NaN (Not a Number) . In der TwinCAT 3 Condition Monitoring Library werden diese in den folgenden Situationen erzeugt bzw. berücksichtigt:
- Sind für eine statistische Auswertung noch nicht genügend gültige Werte vorhanden, wird das Ergebnis mit NaN ausgegeben.
- Sollen bei einer statistischen Auswertung bestimmte Werte ausgenommen werden, so wird dies erreicht indem der Baustein NaN-Werte am Eingang ignoriert.
- Falls der Eingangsvektor der Frequenzanalyse einer Zeitreihe einen oder mehrere NaN-Werte beinhaltet, wird der gesamte Ausgangsvektor mit NaN gefüllt. Diese Eigenschaft kann genutzt werden, um Ergebnisse als nicht definiert zu kennzeichnen für den Fall, dass eine Lücke im Eingangssignal zu Sprüngen in der Zeitreihe führt. Denn es ist nicht möglich korrekte Spektren anhand zerstückelter Zeitreihen zu berechnen.
Wenn Bausteine NaN-Werte erzeugen können, ist dies in der Beschreibung des jeweiligen Bausteins vermerkt.
Zu den wesentlichen Eigenschaften von NaN-Werten zählen die folgenden Punkte:
- Alle arithmetischen Operationen, die NaN als Eingangsdaten verwenden, liefern wiederum NaN als Ergebnis.
- Alle relationalen Operatoren =, !=, > < >= <= liefern stets den Wert False, wenn mindestens einer der Operanden NaN ist.
- Die Standard-C-Funktionen
isnan()
bzw._isnan()
oder die SPS Funktionen LrealIsNaN() und RealIsNaN() (Tc2_Utilities Bibliothek) liefern den Wert True, wenn das Argument den Wert NaN hat. - Der Ausdruck
isnan(a)
ist äquivalent dem Ausdruck!(a == a)
bzw.NOT(a = a)
.
Die Tatsache, dass NaN-Werte sich bei der Verwendung in weiteren Berechnungen fortpflanzen, hat den Vorteil, dass ungültige Werte nicht übersehen werden können.
VORSICHT | |
Fehlfunktionen der Software NaN-Werte dürfen in SPS-Bibliotheken, insbesondere als Stellwerte in Funktionen für Motion Control und zur Antriebssteuerung, nur verwendet werden, wenn sie ausdrücklich zugelassen sind! Anderenfalls können NaN-Werte zu potenziell gefährlichen Fehlfunktionen der betreffenden Software führen! |
VORSICHT | |
Floating Point Exceptions Falls NaNs in der Applikation verwendet und verarbeitet werden sollen, müssen die FP Exceptions ausgeschaltet werden. Andernfalls können Vergleiche mit NaN zu einer Exception führen, welche einen Stopp der Laufzeit und möglichen Maschinenschaden nach sich zieht. |
Weitere Erläuterungen zur Möglichkeit die FP Exceptions aus- und anzuschalten finden Sie im Kapitel Task Einstellungen.