Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
Theorie/Hintergrund:
Ich arbeite an einer Software um Microstrain Geber auslesen zu können.
Vom Hersteller habe ich eine SDK erhalten aus der hervorgeht, dass im EEPROM jedes Gebers Konstanten gespeichert sind, durch Verwendung derer der ausgegebene Bit-Wert in einen skalierten Wert mit Einheit umzuwandeln (typischerweise ein Float-Wert)
Die Werte des EEPROM liegen in MSB /LSB vor (Big Endian), diese habe ich ausgelesen und versuche nun diese gemäss der Formel aus der SDK anzuwenden.
In der SDK ist ebenfalls ein Beispiel für das Gain aufgeführt:
EEPROM 2: 44571
EEPROM 4: 33220
die Konvertierung ergibt den Wert -1032.86499
Problem:
Ich habe ein kleines VI erstellt (angehängt) um dies zu testen, aktuell sind die gelesenen Werte aus dem EEPROM darin gespeichert
Nur die Float-Zahl die ausgegeben wird verfehlt meine Vorstellung bei weitem, da Sie extrem klein ist und mit Anwendung der Formel aus der SDK zu einem Inf. als Ergebnis führt
Wenn ich die Zahlen aus dem Beispiel einfüge sieht es ähnlich seltsam aus, ich komme nicht einmal in die Nähe des Resultats aus dem Beispiel
Daraus ziehe ich den Schluss, dass ich etwas Grundsätzlich falsch mache, ich wäre froh, wenn sich mal jemand von euch mein BSP ansehen könnte, vielleicht(wahrscheinlich) gibt es ja einen groben Fehler, den ich nicht finde...
Leider zu wenig Infos, um dir eine fundierte Antwort zu geben.
Ganz wichtig wäre die Information: Was sollen die beiden U16-Register EEPROM 162 & EEPROM 164 (bzw. 166 & 168) wirklich darstellen. Soll das wirklich die Darstellung einer FLOAT-Zahl im IEE 754 Format sein?
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Die Umwandlung einer Gleitkommazahl in "raw bytes" (oder raw U16-Words) und wieder zurück ist normalerweise ganz einfach. Du hast pro Zahl 4 bytes (2 Words). Das entspricht einer GLeitkommazahl im SGL-Format.
So geht normalerweise die Konvertierung:
Es kommen allerdings andere Zahlen heraus. Aber vielleicht kannst Du mit irgendwelchen Vertauschungen noch etwas Brauchbares herauskitzeln.
Edit: Habe das Vertauschen mal selbst gemacht. Damit ist dann alles OK - Problem gelöst.
30.12.2011, 17:09 (Dieser Beitrag wurde zuletzt bearbeitet: 30.12.2011 17:11 von H-STB.)
Wow! Alle Achtung danke euch
Habe jetzt den ganzen Nachmittag recherchiert bis ich eure schnellen Antwort bemerkte.(hatte die Autobenachrichtigung aus und wartete auf E-Mail )
Ein Grosses Danke für eure Hilfe! Werde mich nun ans verstehen der Unterschiede zu dem von mir gemachten machen