OSCAT Forum

oscat.lib => Bestehende Module / Existing Modules => Thema gestartet von: Booner am 12. Juli 2010, 14:51:01

Titel: FLOAT_TO_REAL bringt IPC zum Absturz...
Beitrag von: Booner am 12. Juli 2010, 14:51:01
Hei Leute,

ich verwende die Funktion FLOAT_TO_REAL auf einem Wago IPC 758-0874-0000-0110
Wenn ich ein String mit '8.9' oder '9.9' umwandeln möchte, dann wird 8.900001 bzw 9.900001 ausgegeben.
Wenn ich diesen Wert dann weiter verwenden will, stürzt sogar der komplette IPC ab.
Warum er das genau tut, kann ich leider nicht sagen, habe auch zuwenig Zeit um das noch rauszufinden, weil morgen Auslieferungstermin ist.

Hat jemand evtl. ne schnelle Lösung für dieses Problem der Umwandlung?


Grüße,

Tom

PS: Wie kann ich eigentlich in so ein fertiges Oscat-Modul "reinschauen"?
Titel: Re:FLOAT_TO_REAL bringt IPC zum Absturz...
Beitrag von: gravieren am 12. Juli 2010, 18:10:40
PS: Wie kann ich eigentlich in so ein fertiges Oscat-Modul "reinschauen"?
Datei --> öffnen --> *.lib   

Und schon offen.
Titel: Re:FLOAT_TO_REAL bringt IPC zum Absturz...
Beitrag von: hugo am 13. Juli 2010, 13:22:57
das eine 8.9 in eine 8.90001 umgewandelt wird ist nicht verwunderlich, den du wandelst von dezimalsystem in ein binärsystem.
nicht alle dezimalwerte sind im binärsysten darstellbar und umgekehrt.
das ist prinzipbedingt und auf allen computern oder cpu's identisch.
vermeiden kannst du das ganze nicht wirklich, sondern nur durch rundung oder gar nicht beeiunflussen.
genau deshalb sollte man bei einer floating point zahl nie auf = (equal) abfragen sondern vielmehr nur auf größer gleich  bzw kleiner gleich.
am besten schaust du hierzu mal in wickipedia unter floating point datentyp nach IEEE standard nach, dort sind grundlagen der computertechnik erklärt.

wenn deine sps nach der wandlung aussteigt hat das ziemlich sicher nichts mit der wandlung sondern mit dem folgenden programm zu tun