Nur für FP-e und FP0: Verwenden Sie keine REAL-Befehle in Interrupt-Programmen.
Ganzzahl-Literale wie "123" werden implizit in REAL umgewandelt.
Die Variablen des Datentyps REAL sind 32-Bit-Zahlen, die auf der Norm IEEE754 basieren. Die Mantisse hat 23 Bit und der Exponent 8 Bit.
Bereich für REAL-Werte: |
-3.402823466*E38 bis -1.175494351*E-38 |
0.0 |
|
+1.175494351*E-38 bis +3.402823466*E38 |
|
Voreinstellung für den Initialwert, z.B. bei der Variablendeklaration im POE-Kopf bzw. in der Liste der globalen Variablen: |
0.0 |
Sie können REAL-Werte in folgendem Format eingeben: [+-] Integer.Integer [(Ee) [+-] Integer]
5.983e-7
-33.876e12
3.876e3
0.000123
123.0
Problem:
Funktionen, die einen Fließkommawert benutzen, benötigen eine REAL-Zahl.
Bereich für REAL-Werte: |
-3.402823466*E38 bis -1.175494351*E-38 |
0,0 |
|
+1.175494351*E-38 bis +3.402823466*E38 |
Wenn eine REAL-Zahl kleiner als -3.402823466*E38, oder größer als +3.402823466*E38 ist, werden die Systemvariablen sys_bIsOperationErrorHold und sys_bIsOperationErrorNonHold gesetzt. Das Programm hält an, wenn das Register 26 auf Stop gesetzt ist.
Diese Bedingung wird durch die Funktionen IsValidReal und IsValidReal2 geprüft.
Wenn die REAL-Zahl im Bereich von -1.175494351*E-38 bis +1.175494351*E-38 liegt, dann arbeitet die SPS mit dem Wert 0.0 und es werden keine Fehlermerker gesetzt.
Einige ältere SPS-Typen wie FP1 oder FP-M unterstützen keine reellen Zahlen.
In diesem Beispiel werden die Funktionen IsValidReal und IsValidReal2 im Kontaktplan (KOP) und in der Anweisungsliste (AWL) programmiert. Für alle Programmiersprachen wird der gleiche POE-Kopf verwendet.
POE-Kopf
Im POE-Kopf werden alle Ein- und Ausgangsvariablen deklariert, die für die Programmierung der Funktion verwendet werden.
KOP: IsValidReal
KOP: IsValidReal2