Mathematische Funktionen für Gleitpunktzahlen in der Programmiersprache Kontaktplan KOP

Die Gleitpunktzahlen mit denen in Step7 gearbeitet wird sind nach IEEE definiert und gehören zum Datentyp REAL mit einer Länge von 32 Bit. In Kontaktplan KOP sind folgende mathematische

  • 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

Mit einer Gleitpunktzahl können in Step7 folgende Funktionen ausgeführt werden:

  • ABS bilden des Absulotwertes 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

Die mathematischen Gleitpunkt-Funktionen beeinflussen im Statuswort die Bits OV, OS, A0 und A1. Über diese Bits können die Rechenoperationen ausgewertet werden. Durch die Länge von 32 Bit der Gleitpunktzahlen ergeben sich auch hier gültige und ungültige Bereiche. Bereichsüberschreitungen können über die vorgenannten Bits des Statuswortes ausgewertet werden, dabei haben die Bits 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

*

* Das OS-Bit wird vom Ergebnis der Operation nicht beeinflußt.

Übersicht über die Grundoperationen für Gleitpunktfunktionen in Kontaktplan KOP

Grundoperationen für Gleitpunktzahlen
Grundoperationen für Gleitpunktzahlen in Kontaktplan KOP

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 in der Programmiersprache Kontaktplan KOP

erweiterte Gleitpunktfunktionen in Step7® Kontaktplan KOP
erweiterte Gleitpunktfunktionen in Step7® Kontaktplan KOP

SQR bilden des Quadrates einer Gleitpunktzahl

Eine Gleitpunktzahl kann mittels der Operation Bilden des Quadrates einer Gleitpunktzahl quadriert werden. Am Eingang IN der Funktionbox 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 der Programmiersprache Kontaktplan KOP

Trigonometrischen Funktionen von Winkeln als Gleitpunktzahlen
Bildung von trigonometrischen Funktionen von Winkeln als Gleitpunktzahlen im Kontaktplan KOP

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".