Inkonsistenz bei Umwandlung von Gleitpunkt in Festpunkt

mknoellner

Level-1
Beiträge
45
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe ein Problem bei der Umwandlung von Gleitpunktzahlen in Festpunktzahlen. Ja auch schon alles andere durchsucht.

In der S5 928B tritt folgendes auf:
Wenn ich eine Gleitpunktzahl L KG +123 +03 direkt lade und diese mit GFD in eine Festpunktzahl umwandele bekomme ich das Ergebniss 123. Ja so sollte es sein.
Da aber im Programm ein Messwert eingelesen wird z.B. 12,3 (L MD XXX, oder L DD XXX) und ich diesen mit 10,0 multipliziere (damit ich die erste Kommastelle mitnehmen kann) erhalte ich im Gleitpunktformat ebenfalls +123 +03, wenn ich diesen Wert aber nun mit GFD umwandele bekomme ich als Ergebniss 122.
Warum bitte ist dies so? Kann mir jemand helfen?

ich habe auch die werte direkt mit
L KG +123+02 eingegeben bzw
L KG +10 +02 und mit
xG multipliziert, hier kommt das gleiche komische Ergebniss von 122.
 
Zuletzt bearbeitet:
Hallo,
das Problem liegt bei den Gleitpunktzahlen. Wahrscheinlich ist dein Wert nach der Multiplikation gar nicht 123 sondern 122,9998 oder so. Umgehen kannst du das in dem du vor der Wandlung nach INT noch 0,5 als Gleitpunktwert draufrechnest. Damit kannst du den "Rundungsfehler" kompensieren ...

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
so was in der art hatte ich schon befürchtet.
habe ein wenig mit den direkten werten herum gespielt.
Aber warum 0,5 ?
es werden doch eh Werte bis 0,9 abgeschnitten, oder resultiert das aus dem Aufbau der Gleitpunktzahlen?

Dann muss ich mir noch mal was überlegen, da es um eine Messwertaufzeichnung geht und um 64 analoge Signale.

Das Messsystem, bzw das Übertragungsglied arbeitet leider nur mit Int's.

EDIT: gibt es einen Simulator um die Zahlen binär darzustellen, bzw. kann ich im Bausteinstatus die Ansicht der AKKU von HEX bzw. KG auf binär andern. Oder mir nen Speicherauszug machen, wo (da statische Werte im Test) ich das Ganze noch mal binär nachvollziehen kann?
 
Zuletzt bearbeitet:
0,5 habe ich deshalb gewählt, weil du vielleicht auch 123,6 nach 124 aufrunden möchtest ...

Vielleicht baust du dir dafür einen eigenen FB - dass geht auch in der S5 ...

Gruß
LL
 
hab ich auch schon drüber nachgedacht.
dürfte aber bei dem programmieraufwand egal sein.

ob ich den wert addiere - wäre copy past - ,oder noch nen baustein progge und ne menge aufrufe neu schreiben muss.

ok wäre sauberer.
aber der mensch ist ja von natur aus faul. und programmierer sowieso :p
 
Zurück
Oben