Mathematische Funktionen für Gleitpunktzahlen in KOP

Mathematische Gleitpunktzahl-Funktionen

In SPS-Programmen gibt es neben der Möglichkeit, mathematische Berechnungen mit Ganzzahlen durchzuführen, die Gleitpunktzahlfunktionen. Damit ist man in der Lage, Zahlen vom Typ REAL mit einer Länge von 32 Bits zu berechnen. In Step7 befinden sich die Gleitpunktzahlfunktionen unterhalb des Knotens Gleitpunkt-Funktionen. Hier kann man folgende Bausteine auswählen:

  • ADD_R zwei Gleitpunktzahlen addieren
  • SUB_R eine Gleitpunktzahl von einer anderen subtrahieren
  • MUL_R zwei Gleitpunktzahlen miteinander multiplizieren
  • DIV_R eine Gleitpunktzahl durch eine andere dividieren

Zusatzfunktionen können mit folgenden Bausteinen durchgeführt werden:

  • ABS bilden des Absolutwertes einer Gleitpunktzahl
  • SQR bilden des Quadrates einer Gleitpunktzahl
  • SQRT bilden der Quadratwurzel einer Gleitpunktzahl
  • EXP bilden des Exponentialwertes einer Gleitpunktzahl auf der Basis e
  • LN bilden des natürlichen Logarithmus einer Gleitpunktzahl
  • SIN bilden des Sinus eines Winkels der als Gleitpunktzahl dargestellt ist
  • ASIN bilden des Arcussinus eines Winkels der als Gleitpunktzahl dargestellt ist
  • COS bilden des Cosinus eines Winkels der als Gleitpunktzahl dargestellt ist
  • ACOS bilden des Arcuscosinus eines Winkels der als Gleitpunktzahl dargestellt ist
  • TAN bilden des Tangens eines Winkels der als Gleitpunktzahl dargestellt ist
  • ATAN bilden des Arcustangens eines Winkels der als Gleitpunktzahl dargestellt ist

Wie bei den Ganzzahlen beeinflussen Berechnungen mit Gleitpunktzahlen die Bits OV, OS, A0 und A1 im Statuswort. Da sich bei einer Bitlänge von 32 Bit zwangsläufig Begrenzungen des Zahlenraums ergeben, können auch bei Gleitpunktzahlen gültige und ungültige Zahlen entstehen. Die Bits im Statuswort können für den Zweck ausgewertet werden. Sie haben folgende Signalzustände:

Ungültiger Bereich A1 A0 OV OS
Unterschreitung
-1.175494E-38 < Ergebnis < - 1.401298E-45 (negative Zahl)
0 0 1 1
Unterschreitung
+1.401298E-45 < Ergebnis < +1.175494E-38 (positive Zahl)
0 0 1 1
Überlauf
Ergebnis < -3.402823E+38 (negative Zahl)
0 1 1 1
Überlauf
Ergebnis > 3.402823E+38 (positive Zahl)
1 0 1 1
keine gültige Gleitpunktzahl oder unzulässige Operation
(Eingangswert außerhalb des gültigen Wertebereichs)
1 1 1 1
Gültiger Bereich A1 A0 OV OS
+0, -0 (Null) 0 0 0 *
-3.402823E+38 < Ergebnis < -1.175494E-38 (negative Zahl) 0 1 0 *
+1.175494E-38 < Ergebnis < 3.402824E+38 (positive Zahl) 1 0 0 *

* Ohne Einfluss auf das OS-Bit.

Übersicht über mathematische Grundberechnungen mit Gleitpunktzahlen

Mathematische Grundfunktionen Gleitpuntzahlen

ADD_R Addition von Gleitpunktzahlen

Am Eingang IN1 wird die erste Zahl vom Format REAL (32 Bit Gleitpunktzahl) und am Eingang IN2 die zweite Zahl vom Format REAL (32 Bit Gleitpunktzahl) eingelesen. Die Rechenoperation Gleitpunktzahlen addieren wird nicht ausgeführt, wenn der Eingang EN den Wert"0" führt, an einem der beiden Eingänge IN1/IN2 keine Gleitpunktzahl anliegt bzw. das Ergebnis keine Gleitpunktzahl ist. In diesem Fall führt auch der Ausgang ENO den Wert "0".

Erhält der Freigabeeingang EN den Signalzustand "1", dann wird die Rechenoperation Gleitpunktzahlen addieren durchgeführt. Am Ausgang OUT kann das Ergebnis abgefragt werden. Liegt an den Eingängen IN1 oder IN2 keine Gleitpunktzahl an oder ist das Ergebnis keine Gleitpunktzahl, dann führen das OV-Bit und das OS-Bit den Wert "1" und der Freigabeausgang ENO den Wert"0".

SUB_R Subtraktion von Gleitpunktzahlen

Am Eingang IN1 wird die erste Zahl vom Format REAL (32 Bit Gleitpunktzahl) und am Eingang IN2 die zweite Zahl vom Format REAL (32 Bit Gleitpunktzahl) eingelesen. Die Rechenoperation Gleitpunktzahlen subtrahieren wird nicht ausgeführt, wenn der Eingang EN den Wert"0" führt, an einem der beiden Eingänge IN1/IN2 keine Gleitpunktzahl anliegt bzw. das Ergebnis keine Gleitpunktzahl ist. In diesem Fall führt auch der Ausgang ENO den Wert "0".

Erhält der Freigabeeingang EN den Signalzustand "1", dann wird die Rechenoperation Gleitpunktzahlen subtrahieren durchgeführt. Die Gleitpunktzahl von Eingang IN2 wird von der Gleitpunktzahl an Eingang IN1 subtrahiert. Am Ausgang OUT kann das Ergebnis abgefragt werden. Liegt an den Eingängen IN1 oder IN2 keine Gleitpunktzahl an oder ist das Ergebnis keine Gleitpunktzahl, dann führen das OV-Bit und das OS-Bit den Wert "1" und der Freigabeausgang ENO den Wert"0".

MUL_R Multiplikation von Gleitpunktzahlen

Am Eingang IN1 wird die erste Zahl vom Format REAL (32 Bit Gleitpunktzahl) und am Eingang IN2 die zweite Zahl vom Format REAL (32 Bit Gleitpunktzahl) eingelesen. Die Rechenoperation Gleitpunktzahlen multiplizieren wird nicht ausgeführt, wenn der Eingang EN den Wert"0" führt, an einem der beiden Eingänge IN1/IN2 keine Gleitpunktzahl anliegt bzw. das Ergebnis keine Gleitpunktzahl ist. In diesem Fall führt auch der Ausgang ENO den Wert "0".

Erhält der Freigabeeingang EN den Signalzustand "1", dann wird die Rechenoperation Gleitpunktzahlen multiplizieren durchgeführt. Die Gleitpunktzahl von Eingang IN1 wird mit der Gleitpunktzahl von Eingang IN2 multipliziert. Am Ausgang OUT kann das Ergebnis abgefragt werden. Liegt an den Eingängen IN1 oder IN2 keine Gleitpunktzahl an oder ist das Ergebnis keine Gleitpunktzahl, dann führen das OV-Bit und das OS-Bit den Wert "1" und der Freigabeausgang ENO den Wert"0".

DIV_R Division von Gleitpunktzahlen

Am Eingang IN1 wird die erste Zahl vom Format REAL (32 Bit Gleitpunktzahl) und am Eingang IN2 die zweite Zahl vom Format REAL (32 Bit Gleitpunktzahl) eingelesen. Die Rechenoperation Gleitpunktzahlen dividieren wird nicht ausgeführt, wenn der Eingang EN den Wert"0" führt, an einem der beiden Eingänge IN1/IN2 keine Gleitpunktzahl anliegt bzw. das Ergebnis keine Gleitpunktzahl ist. In diesem Fall führt auch der Ausgang ENO den Wert "0".

Erhält der Freigabeeingang EN den Signalzustand "1", dann wird die Rechenoperation Gleitpunktzahlen dividieren durchgeführt. Die Gleitpunktzahl von Eingang IN1 wird durch die Gleitpunktzahl an Eingang IN2 dividiert (IN1 ÷ IN2 = OUT). Am Ausgang OUT kann das Ergebnis abgefragt werden. Liegt an den Eingängen IN1 oder IN2 keine Gleitpunktzahl an oder ist das Ergebnis keine Gleitpunktzahl, dann führen das OV-Bit und das OS-Bit den Wert "1" und der Freigabeausgang ENO den Wert"0".

ABS bilden des Absolutwertes einer Gleitpunktzahl

Am Eingang IN wird eine Zahl vom Format REAL (32 Bit Gleitpunktzahl) eingelesen. Die Umwandlungsoperation Bilden des Absolutwertes einer Gleitpunktzahl wird nicht ausgeführt, wenn der Eingang EN den Wert"0" führt.

Erhält der Freigabeeingang EN den Signalzustand "1", dann wird die Umwandlungsoperation Bilden des Absolutwertes einer Gleitpunktzahl durchgeführt. Die Gleitpunktzahl von Eingang IN wird am Ausgang OUT mit ihrem Absolutwert ausgegeben. Wird die Umwandlung nicht ausgeführt, dann führt der Ausgang ENO den Wert "0". Es gilt: der Freigabeausgang ENO hat den gleichen Signalzustand wie der Eingang EN.

Beispiel: Die Gleitpunktzahl -5,625 wird nach der Umwandlungsoperation mit 5,625 ausgegeben.

Erweiterte Gleitpunktfunktionen

Erweiterte Gleitpunktfunktionen

SQR bilden des Quadrates einer Gleitpunktzahl

Eine Gleitpunktzahl kann mittels der Operation Bilden des Quadrates einer Gleitpunktzahl quadriert werden. Am Eingang IN der Funktionsbox Bilden des Quadrates einer Gleitpunktzahl wird eine Zahl vom Format REAL (32 Bit Gleitpunktzahl) eingelesen. Die Bildung des Quadrates dieser Gleitpunktzahl wird nicht ausgeführt, wenn der Eingang EN den Wert"0" führt.

Erhält der Freigabeeingang EN den Signalzustand "1", dann wird die Gleitpunktzahl quadriert. Die quadrierte Gleitpunktzahl wird am Ausgang OUT ausgegeben. Die Umwandlung wird nicht ausgeführt, wenn am Eingang IN keine Gleitpunktzahl anliegt oder das Ergebnis keine Gleitpunktzahl ist. Dann führen das OV-Bit und das OS-Bit den Wert "1" und der Freigabeausgang ENO den Wert"0".

SQRT bilden der Quadratwurzel einer Gleitpunktzahl

Die Quadratwurzel einer Gleitpunktzahl kann mittels der Operation Bilden der Quadratwurzel einer Gleitpunktzahl gezogen werden. Am Eingang IN der Funktionsbox Bilden der Quadratwurzel einer Gleitpunktzahl wird eine Zahl vom Format REAL (32 Bit Gleitpunktzahl) eingelesen. Das Ziehen der Quadratwurzel dieser Gleitpunktzahl wird nicht ausgeführt, wenn der Eingang EN den Wert"0" führt.

Erhält der Freigabeeingang EN den Signalzustand "1", dann wird die Quadratwurzel der Gleitpunktzahl gezogen. Die Quadratwurzel der Gleitpunktzahl wird am Ausgang OUT ausgegeben. Das Bilden der Quadratwurzel wird nicht ausgeführt, wenn am Eingang IN keine Gleitpunktzahl anliegt, das Ergebnis keine Gleitpunktzahl ist oder die Gleitpunktzahl < 0 ist. Dann führen das OV-Bit und das OS-Bit den Wert "1" und der Freigabeausgang ENO den Wert"0".

EXP bilden des Exponentialwertes einer Gleitpunktzahl auf der Basis e

Mit der Box EXP kann man den Exponentialwert (Exponentialwert zur Basis e) einer Gleitpunktzahl (32-Bit, IEEE-FP) in AKKU 1 berechnen. Das Ergebnis wird in AKKU 1 gespeichert. Durch die Operation werden die Bits A1, A0, OV und OS des Statusworts beeinflusst. Exponentialwert einer Gleitpunktzahl auf der Basis e (= 2,718282e+000).

Das Bilden des Exponentialwertes einer Gleitpunktzahl wird nicht ausgeführt, wenn der Eingang EN den Wert"0" führt. Das Bilden des Exponentialwertes wird auch nicht ausgeführt, wenn am Eingang IN keine Gleitpunktzahl anliegt oder das Ergebnis keine Gleitpunktzahl ist. Dann führen das OV-Bit und das OS-Bit den Wert "1" und der Freigabeausgang ENO den Wert"0".

Nach der Formel: ab = eb * ln a können Potenzen zu einer beliebigen Basis berechnet werden.

LN bilden des natürlichen Logarithmus einer Gleitpunktzahl

Der natürliche Logarithmus einer Gleitpunktzahl kann mittels der Operation Bilden des natürlichen Logarithmus einer Gleitpunktzahl gebildet werden. Am Eingang IN der Box des natürlichen Logarithmus einer Gleitpunktzahl wird eine Zahl vom Format REAL (32 Bit Gleitpunktzahl) eingelesen. Die Operation wird nicht ausgeführt, wenn der Eingang EN den Wert"0" führt.

Erhält der Freigabeeingang EN den Signalzustand "1", dann wird der natürliche Logarithmus der Gleitpunktzahl zur Basis e=2.718282e+000 gebildet. Das Ergebnis dieser Operation wird am Ausgang OUT ausgegeben. Der Logarithmus einer Gleitpunktzahl wird nicht berechnet, wenn am Eingang IN keine Gleitpunktzahl anliegt, das Ergebnis keine Gleitpunktzahl ist oder die Gleitpunktzahl < 0 ist. Dann führen das OV-Bit und das OS-Bit den Wert "1" und der Freigabeausgang ENO den Wert"0".

Der Logarithmus zu einer beliebigen Basis kann mit Hilfe der Formel logb a = logn a ÷ logn b berechnet werden. Ersetzt man n durch e, dann ergibt sich logb a = ln a ÷ ln b. Somit lässt sich der Logarithmus zur Basis 10 über die Formel lg a = ln a ÷ ln 10 bestimmen.

Winkelfunktionen mit Gleitpunktzahlen in SPS-Programmen

Winkelfunktionen

Gleitpunktfunktionen von Winkeln

Mit den folgenden Operationen können trigonometrische Funktionen von Winkeln, die als Gleitpunktzahlen dargestellt sind, gebildet werden:

Operation Bedeutung
SIN Bilden des Sinus einer Gleitpunktzahl von einem Winkel, der im Bogenmaß
angegeben wird.
ASIN Bilden des Arcussinus einer Gleitpunktzahl. Das Ergebnis ist ein Winkel, der
im Bogenmaß angegeben wird. Der Wert liegt im folgenden Bereich:
- (π • 0.5) ≤ Arcussinus ≤ + (π • 0.5)
COS Bilden des Cosinus einer Gleitpunktzahl von einem Winkel, der im
Bogenmaß angegeben wird.
ACOS Bilden des Arcuscosinus einer Gleitpunktzahl. Das Ergebnis ist ein Winkel,
der im Bogenmaß angegeben wird. Der Wert liegt im folgenden Bereich:
0 ≤ Arcuscosinus ≤ + π
TAN Bilden des Tangens einer Gleitpunktzahl von einem Winkel, der im
Bogenmaß angegeben wird.
ATAN Bilden des Arcustangens einer Gleitpunktzahl. Das Ergebnis ist ein Winkel,
der im Bogenmaß angegeben wird. Der Wert liegt im folgenden Bereich:
- (π • 0.5) ≤ Arcustangens ≤ + (π • 0.5) wobei π = 3,14...

Am Eingang IN der Funktionsbox Bilden von trigonometrischen Funktionen von Winkeln als Gleitpunktzahlen wird eine Zahl vom Format REAL (32 Bit Gleitpunktzahl) eingelesen. Erhält der Freigabeeingang EN einer Winkelfunktionsbox den Signalzustand "1", dann wird der Wert der jeweiligen Winkelfunktion (SIN, ASIN, COS, ACOS, TAN, ATAN) der Gleitpunktzahl gebildet. Das Ergebnis dieser Operation wird am Ausgang OUT ausgegeben. Die Winkelfunktion einer Gleitpunktzahl wird nicht berechnet, wenn am Eingang IN keine Gleitpunktzahl anliegt oder das Ergebnis keine Gleitpunktzahl ist. Dann führt der Freigabeausgang ENO den Wert"0".