Real als Betrag

ABS

(Absolutwert einer Gleitpunktzahl, 32-Bit, IEEE 754) bildet den Absolutwert einer Gleitpunktzahl (32-Bit, IEEE 754) in AKKU 1. Das Ergebnis wird in AKKU 1 gespeichert. Die Operation wird ausgeführt, ohne die Statusbits zu berücksichtigen oder zu beeinflussen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Code:
*
//so is auch schön
      L     MD    10
      L     MD    10
      *R    
      SQRT  
      T     MD    14
Jo, formal eine schöne Idee. Praktisch aber mit Vorsicht zu genießen.
Leider ist der zulässige Bereich der Eingangswerte für diese Berechnung wegen dem Gleitpunkt-Format (ANSI/IEEE Standard 754-1985) auf ca. -1.8e+19 ... -1.8e-19, -0.0, +0.0 und +1.8e-19 ... +1.8e+19 beschränkt.

Eine zweite Falle für alle ABS-Ersatz-Programme ist, daß das Gleitpunkt-Format -0.0 und +0.0 kennt, eine S7-CPU diese bei Vergleichen aber als gleich ansieht. Beim Beobachten zeigt Step7 eine -0.0 sogar als +0.0 an.
Wer also erwartet, daß nach der selbstgeschriebenen ABS-Ersatz-Funktion garantiert das Vorzeichen nicht gesetzt ist, der muß diesen Spezialfall ggf. extra behandeln.

Wenn ich kein ABS zur Verfügung hätte, dann würde ich die Betragsbildung einer Gleitpunktzahl so machen:
Code:
      L     #Realwert
      SLD   1
      SRD   1
      T     #Absolutwert

Harald
 
Zurück
Oben