LabVIEWForum.de - Problem Werte aus EEPROM nach FLOAT

LabVIEWForum.de

Normale Version: Problem Werte aus EEPROM nach FLOAT
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen

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...

Besten Dank schon mal im Voraus

Gruss STB
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
Besten Dank für deine schnelle Antwort

Allright, Sorry war wohl zu sehr bemüht das ganze lesbar zu halten...

In den Speicherplätzen sollen Werte abgelegt sein, mit hilfe einer Formel und dieser Werte soll der Messwert auf die Einheit G skaliert werden können.

Die Formel ist: Resultat=(messwert-offset)/gain

Und ja gemäss Unterlagen ist dies eine Flot Zahl im (big endian) format IEEE 754

brauchtst du noch sonstige Infos?
So kommt was Sinnvolles raus:
[attachment=37889]
Gruß, Jens
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:

[attachment=37890]

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.

[attachment=37891]
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 Confused)

Ein Grosses Danke für eure Hilfe! Werde mich nun ans verstehen der Unterschiede zu dem von mir gemachten machen

Gruss
STB

Edit: habs nun verstanden, danke!
Referenz-URLs