×
Siemens Industry Online Support
Siemens AG
Beitragstyp: FAQ Beitrags-ID: 14844391, Beitragsdatum: 11.10.2005
(2)
Bewerten

Wie genau kann ich mit REAL Zahlen rechnen, die in umfangreichen Formeln verwendet werden?

  • Beitrag
  • Betrifft Produkt(e)

Beschreibung:  
Generell gilt, dass REAL Zahlen mit einer Genauigkeit von 6 Nachkommastellen angegeben und berechnet werden. Bei Berechnungen ist dabei noch zu beachten, dass für jeden einzelnen Rechenschritt diese Genauigkeit ebenfalls gilt.

Beim Addieren und Subtrahieren werden die Exponenten angeglichen. D. h. die Basis und die Exponenten sind beim Addieren und Subtrahieren gleich, es werden nur die Mantissen addiert. 

Beispiel 1:

Es soll berechnet werden:

y = a + b - c;

z =1 / y;

mit 

a = 100 000 000       als REAL Wert = 1,000000*108

b = 1                         als REAL Wert = 1,000000*100

c = 100 000 000       als REAL Wert = 1,000000*108

  • Im ersten Berechnungsschritt wird (a + b) bestimmt:
    (a + b) = 1,000000*108 + 1,000000*100 nach dem Angleichen der Exponenten ergibt sich (a + b) = 1,000000*108 + 0,00000001*108. Die letzten beiden Stellen der zweiten Zahl werden abgeschnitten, da sie nicht mehr darstellbar sind (Genauigkeit 6 Nachkommastellen). 
  • Es wird also eine Null addiert
  • Im zweiten Rechenschritt ((a + b)-c) wird c vom Ergebnis des vorangegangenen Berechnungsschrittes subtrahiert:
    ((a + b)-c) = 1,000000*108 - 1,000000*108 = 0,000000e0
  • Wird nun z bestimmt, dann versucht man durch Null zu dividieren! 

Die richtige Lösung ergibt sich in diesem Fall durch die Umstellung der Rechnung.

y = a - c + b;

z = 1 / y;

Da hier nach der Berechnung  (a - c) das Ergebnis 0,000000e0 zur Folge hat, führt im zweiten Schritt der Rechnung ((a -c) + b) die Addition der REAL Zahl zum richtigen Ergebnis. 

y = 0,000000*100 + 1,00000*100 = 1,000000*100 

Bevor Sie also eine Rechnung programmieren, sollten Sie prüfen, wie die Berechnung am sinnvollsten durchzuführen ist.
Weitere Informationen finden Sie auch in der STEP 7 Online-Hilfe unter dem Thema "Real: Datentype".

Beispiel 2:

Als Beispiel soll die REAL-Zahl 160.0 durch die REAL-Zahl 100.0 dividiert werden. Diese Berechnung lässt sich in zwei Varianten durchführen, entweder mit 160.0 / 100.0 oder mit 160.0 * 0.01, wobei bei der zweiten Variante folgendes zu beachten ist. Gemäß der Tabelle 1 liefern beide Varianten das gleiche Ergebnis, aber nicht die selbe Rechengenauigkeit im HEX-Format. 

 

Variante 1: Variante 2:
STEP 7 S7-SCL STEP 7 S7-SCL
L  1.6e+002 X1 = 1.6e+002 L  1.6e+002 X3 = 1.6e+002
L  1.0e-002 X2 = 1.0e-002 L  1.0e+002 X4 = 1.0e+002
*R Y1 = X1 * X2 
      = 1.6 * 1.0 e(+002-002)
/R Y2 = X3 / X4 
      = (1.6 / 1.0) e(+002-002)
T  MD0 Y1 = 1.6 T  MD4 Y2 = 1.6

Tabelle 1: Zwei verschiedene Varianten der Division von REAL-Zahlen im KOP AWL FUP Editor

Der Grund hierfür ist, dass die beiden REAL-Zahlen der ersten Variante 160.0 und 0.01 auf dem Zahlenstrahl weiter auseinander liegen, als die beiden REAL-Zahlen der zweiten Variante 160.0 und 100.0. Diese Auswirkungen zur Rechengenauigkeit gelten für STEP 7 im KOP AWL FUP Editor und beim Optionspaket S7-SCL.

Rechenbeispiel in STEP 7 im KOP AWL FUP Editor:
In der Variablentabelle (Bild 1) sind die beiden Merkerdoppelwörter MD0 und MD4 einmal im HEX- und einmal in Gleitpunktformat dargestellt. Die REAL-Zahlen sind in beiden Varianten gleich 1.6, aber in der HEX-Darstellung unterscheiden sich die beiden letzten Stellen um einen HEX-Wert.

Bild 1: Programm der beiden Berechnungsvarianten im KOP/AWL/FUP-Editor.

Rechenbeispiel mit dem Optionspaket S7-SCL:
Das unten aufgeführte S7-SCL-Programm enthält zwei Funktionen. Mit der Funktion FC10 wird die Division der REAL-Zahlen mit "X1*X2" und mit der Funktion FC11 die Division mit "X3/X4" realisiert. Die Ergebnisse werden beim Aufruf der Funktionen im OB1 den Merkerdoppelwörtern MD10 und MD20 übergeben.

Bild 2: S7-SCL-Programm zur Berechnung der beiden Varianten gemäß Tabelle 1

In der Tabelle "Variable beobachten/steuern" werden die Ergebnisse der Funktionen (MD10 und MD20) jeweils im HEX- und im Gleitpunkt-Format dargestellt. Auch hier sind die REAL-Zahlen bei beiden Varianten gleich 1.6, aber in der HEX-Darstellung unterscheiden sich die beiden letzten Stellen um einen HEX-Wert.

Bild 3: Tabelle "Variable beobachten/steuern" mit der Darstellung der Ergebnisse im HEX- und im Gleitpunkt-Format bei S7-SCL

Suchbegriffe:
Rechengenauigkeit


Securityhinweise
Um technische Infrastruktur, Systeme, Maschinen und Netzwerke gegen Cyber-Bedrohungen zu sichern, ist es erforderlich, ein ganzheitliches IT Security-Konzept zu implementieren (und kontinuierlich aufrechtzuerhalten), das dem aktuellen Stand der Technik entspricht. Die Produkte und Lösungen von Siemens formen nur einen Bestandteil eines solchen Konzepts. Weitergehende Informationen über Cyber Security finden Sie unter
https://www.siemens.com/cybersecurity#Ouraspiration.