Fragen zu Gleitpunktberechnung (FB15-FB21) Simatic S5

steffen21m

Level-1
Beiträge
71
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute ! :D
Da die Simatic S5 keine Gleipunktberechnung kann, gibt es von Siemens die Gleitpunktarithmetik. Diese besteht aus den Bausteinen FB15-FB21, um diverse Grundrechenoperationen abwickeln zu können.
Dabei wird eine Festpunktzahl mit dem FB15 in eine Gleitpunktzahl umgewandelt. Da die S5 nur einen 16 Bit Speicher hat, wird die Rechenoperation auf beide Akkus aufgeteilt und dann in 2 Datenwörtern gespeichert.
Nun möchte ich den 32 Bit Hex-Wert der die Gleitpunktzahl enthält von Hand in eine Dezimalzahl zurück rechnen.
Im Handbuch folgendes Beispiel gegeben:
3,141593 = 02 64 87EE
dabei soll 02 der Exponent und 64 87EE die Mantisse sein
1,414214 = 01 5A 827B
dabei ist wieder 01 der Exponent und 5A 827B die Mantisse

Kann mir jemand erklären wie ich auf dieses Ergebnis komme ?

Zusätzlich steht folgender Text im Handbuch:
Eine Gleitpunktzahl besteht aus einem 8-Bit Exponenten in Zweierkomplementdarstellung und einer 24-Bit-Mantisse in Zweierkomplementdarstellung. Der Exponent und das höchste Byte der Mantisse stehen im High Word; die beiden unteren Bytes der Mantisse im Low-Word. Gleitpunktzahlen in dieser Darstellung sind auf 6 Dezimalstellen genau. Durch die begrenzte Länge der Mantisse treten jedoch bei Kettenrechnungen größere Ungenauigkeiten auf. Es läßt sich ein Wertebereich von +/- 0,1469368 E-38 bis +/- 0,1701412 E+39 erfassen.

Vielen Dank für eure Hilfe !

Gruß Steffen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für die schnelle Antwort !

Habe mir den Text zum Gemüte geführt und kann die Zahl immer noch nicht umrechnen. Im Internet gibt es dazu zwar viele Infos, Siemens scheint aber eine eigene Darstellung zu haben.

Kennt sich denn keiner mit diesen Bausteinen aus ?

Gruß Steffen
 
Moin! Ich versuche es mal kurz zu erklären!

Du musst zunächst die Mantisse aus dem Hex-Format ins Binär-Format umrechnen (kann jeder Taschenrechner, sogar der von Windows :) )
Bei dieser Zahl verschiebst Du ein imaginäres Komma vor die erste Stelle!
Also 111 ->0,111
Diese Zahl wird dann ins Dezimal-Format umgerechnet
0,111 -> 0,5+0,25+0,125 = 0,875
Diese Zahl wird dann mit 2 hoch "Exponent" multipliziert.


Also 3,141593 = 02 64 87EE

64 87EE -> 6588398 -> 11001001000011111101110
-> 1/2+1/4+1/32+1/256+... = 0.78515625 (nur die 4 Zahlen)
* 2 hoch 2 -> 3,140625
(Wenn Du alle Zahlen der Mantisse umrechnest, ist die Zahl exakt)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für eure Hilfe !
Habe mal versucht nachzurechnen und bin sogar auf das Ergebnis gekommen. Der Hintergrund ist, daß ein berechnetes Ergebnis nicht stimmt. Deswegen muss ich die Teilergebnisse nachrechnen, um den Fehler zu finden.
Am Freitag war ich auch noch mal kurz an der S5 mit folgendem Ergebnis:
Man kann sich im Status die Gleitpunktzahl auch anzeigen lassen, indem man das zugehörige Doppelwort MD oder DD aufruft und statt KF= KG= wählt. Ich dachte das würde nicht funktionieren, weil die Bausteine einen anderen Zahlenbereich verwenden.

Noch mal vielen Dank für eure Hilfe
Ohne euch wäre ich nicht so weit gekommen

Gruß Steffen
 
Zurück
Oben