Autor Thema: FLOAT_TO_REAL bringt IPC zum Absturz...  (Gelesen 6056 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline Booner

  • Newbie
  • *
  • Beiträge: 6
    • Profil anzeigen
FLOAT_TO_REAL bringt IPC zum Absturz...
« 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"?
« Letzte Änderung: 12. Juli 2010, 14:59:24 von Booner »

Offline gravieren

  • Entwickler
  • *****
  • Beiträge: 578
    • Profil anzeigen
Re:FLOAT_TO_REAL bringt IPC zum Absturz...
« Antwort #1 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.

Offline hugo

  • Global Moderator
  • *****
  • Beiträge: 2 150
    • Profil anzeigen
Re:FLOAT_TO_REAL bringt IPC zum Absturz...
« Antwort #2 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