Hi,
muss im moment eine Kommunikation per Modbus realisieren. Das Funktioniert auch soweit. Leider sind die Daten die ich einlese als "inverse Float" formatiert....
Hat jemand schonmal mit dem Datenformat was zu tun gehabt?
Ich kann mit der Bezeichnung nichts anfangen bzw weiss nicht wie ich den wert umformen muss.
Einfach mal
Googeln und ersten Treffer durchlesen...
Jo das ist schon ein netter anfang nur leider steht da nicht wie lang die mantisse bzw der exponent ist.
Dargestellt sind auch 6 bit grosse bytes ;-)
So Lösung ist geschafft....
nach langem suchen die Berrechnung erfolgt nach IEEE 754 hab hier mal nen kleine VI gemacht für die Leute die ähnliche Probleme damit haben sollten
Hmm.. Das Gleitkomma-Zahlenformat nach IEEE 754 ist ist genau das, was auch von Labview selbst verwendet wird. Um die 4 Byte, in denen eine SGL-Zahl gespeichert ist, in die SGL-Zahl selbst zu konvertieren, genügt normalerweise die Funktion "Typumwandlung".
Was ist denn jetzt aus dem "inverse Float"-Format geworden. Hat sich das in Nichts aufgelöst?
Außerdem: Ein SGL-Zahl braucht 4 Byte (32 Bit). Dein Array hat aber 4*16 = 64 Bit. Was soll das?
Beispiel: [
attachment=30913]
tjo das ist halt der anfänger fehler :-) bin halt nun mal neuling und bin erstmal froh das meine Lösung funktioniert
' schrieb:Außerdem: Ein SGL-Zahl braucht 4 Byte (32 Bit). Dein Array hat aber 4*16 = 64 Bit. Was soll das?
4*16bit? Wie kommst du darauf? Im VI werden doch nur Array-Element 0 und 1 verwendet. Also genau 32 bit.
Inverse Float ist nur eine andere Übertragungsreihenfolge im Modbus-Protokoll:
vgl.
hier, Seite 8.
Gruß, Jens
' schrieb:4*16bit? Wie kommst du darauf? Im VI werden doch nur Array-Element 0 und 1 verwendet. Also genau 32 bit.
Ja, ich habe eben nicht so wie Du den intellektuellen Auwand getrieben, mich mit den Innrereien des VI zu befassen. Ich habe nur gesehen, da gehen 64bit rein und ein SGL-Zahl komnmt raus, und das ließ mich fragen.
Unsere beider Ergebnisse stimmen übrigens nicht mit dem von Sebbo überein:
[
attachment=30914]
Edit:
Habe mir mal mal das von Jens zitierte ModBus-Protokoll angeschaut. Danach werden beim Modbus die Words 0 und 1 vertauscht. Das muß bei der Konvertierung berücksichtigt werden, dann kommt mit dem Zahlenbeispiel im Protokoll das richtige Ergebnis heraus:
[
attachment=30915]
@Sebbo (nachfolgender Beitrag): Dein Ergebnis sieht aber hier ganz anders aus..
Also ich hab gerade nochmal den ModBus abgefragt.... bei allen drei Lösungen kommt bei mir das richtige Ergebniss an. Vermutlich ist bei mir noch ein Bug bei einem der Überläufe.
Danke schonmal an euch beiden für die "schöne" Lösung