Berechnung Real Zahl

attichris

Level-1
Beiträge
1
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Tag zusammen,

ich hatte bis jetzt nur Kontakt mit der S7.
Wir machen das erste Projekt mit TC3 dabei ist mir etwas aufgefallen bei der Berechung mit Real - Zahlen
und zwar folgende.

alle Variablen sind mit Real deklariert:

Wert1 := Wert2 - Wert3:

bei TC
0.49999994 := 1.3 - 0.8;

bei Siemens
0.5 := 1.3 - 0.8;

Wieso ist das so Ergebnis im TC3 ist ja eigentlich falsch.

Bitte um Unterstützung was ich falsch mache bzw. auf was ich aufpassen muss.

Danke, Christian
 
Das Problem hier ist nicht ein Siemens- oder Beckhoff-spezifisches Problem und hat auch nichts mit dem verwendeten Prozessor zu tun sondern einfach damit, wie ein REAL-Zahl im Speicher dargestellt werden.
Eine REAL-Zahl wird im in den 32Bit als Exponentialzahl dargestellt. Hierbei gibt es dann ganz unweigerlich genau diese Ungenauigkeiten - das hat nicht einmal etwas mit der Rechnung selbst zu tun. Das Gleiche erhältst du auch schon, wenn du einfach nur bestimmte Zahlenwerte laden willst.

Aber anscheinend entspricht der S7-Real in seinem Aufbau nicht dem Beckhoff-Real ... wenn man es genau wissen möchte findet sich dazu aber ganz sicher etwas mit ein paar mehr Fakten im Internet zum Nachlesen.

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So ist es Larry,

und theoretisch kann man nur Zahlen darstellen, die irgendwie in 2 hoch x darstellbar sind, also 1, 2, 4 aber auch in die andere Richtung also 0,5; 0,25; 0,125.... und dann eben auch 0,75 weil 0,5+0,25. Aber mit mit 0,1 wird es schwieriger...
 
bei TC
0.49999994 := 1.3 - 0.8;

bei Siemens
0.5 := 1.3 - 0.8;

Wieso ist das so Ergebnis im TC3 ist ja eigentlich falsch.
Der Witz ist, das auch bei einer Siemens S7-CPU 0.49999994 rauskommt, nur daß das Step7 beim anzeigen/beobachten des Wertes "bescheixxt".
Erklärung: mit REAL kann man nicht exakt rechnen, schon weil die meisten Zahlen nicht exakt in REAL dargestellt werden können.

Harald
 
Zurück
Oben