LabVIEWForum.de - S5 Gleitpunktzahl lesen und umwandeln

LabVIEWForum.de

Normale Version: S5 Gleitpunktzahl lesen und umwandeln
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo

Ich lese aus einer Siemens S5 Steuerung eine Gleitpunktzahl (Doppelwort) aus einem Datenbaustein aus.

Mein Problem, ich bekomme den Ausgelesenen Wert nicht in eine Real zahl (SGL Format) umgewandelt.
Ich habe im Doppelwort 0 eine KG =1000000+03 stehen und lese jetzt Datenwort 0 und 1 aus der SPS aus, dann steht in meinem Array Index 0 =1892 und Index 1 = 0 als Ergebnis erwarte ich eine 100.0 im SGL – Format wenn ich diese beiden Werte zu einem Doppelwort zusammenführe.
Vielleicht hat jemand einen Vorschlag.
Gruß
Ralf
Ja, einfach dem Doppelwort (=U32-Zahl) per Typumwandlung den Typ SGL unterschieben - das müßte normalerweise funktionieren.

Edit: Was soll denn diese seltsame "S5-Gleitpunktzahl" für eine interne Struktur haben? Eine normale Single-Gleitkommazahl nach IEEE-754, wie sie der Rest der Welt - und dazu gehört auch Labview - benutzt, scheint es ja nicht zu sein: dazu passt Dein Zahlenbeispiel nicht.

Zitat:Ich habe im Doppelwort 0 eine KG =1000000+03 stehen und lese jetzt Datenwort 0 und 1 aus der SPS aus, dann steht in meinem Array Index 0 =1892 und Index 1 = 0
Der Wahrheit näher liegen diese beiden Werte
[attachment=30521]
Außerdem: KG (Körbchengröße?) 1E9, gibt es das überhaupt?Mellow

Zitat:als Ergebnis erwarte ich eine 100.0 im SGL – Format wenn ich diese beiden Werte zu einem Doppelwort zusammenführe.
Das normale Ergebnis wäre:
[attachment=30522]

@ unicorn (Beitrag unten)
Genau!
[attachment=30523]
Single 100.0 ist im Hi-Word 17096 und im Lo-Word 0.

Irgendwas passt da nicht.

Ansonsten: Ist die Byte-Order richtig?
Siemensformate sind halt etwas anders die Bit Zählrichtung von dem Doppelwort ist von rechts nach links.
Beschreibung der Gleitpunktzahl (in der Siemenswelt auch als KG bezeichnet)
Bit 0 bis 22 ist die Mantisse dann kommt ein Bit Vorzeichen und 7 Bit Exponent und wieder ein Bit Vorzeichen.
Wenn ich mir das Doppelwort in der SPS Wortweise anschau sehe ich dort auch in dem Wort die 1892 und in dem Anderen die 0 und dieses Wort in KG dargestellt bedeutet +1000000+03
Mit diesen Angaben lässt sich nichts anfangen, und ich verliere die Lust. Wer weitermachen will, findet hier die notwendigen Formatangaben.
Kurfassung:
a) Mantisse = bit 0..23, Zweierkomlement-Darstellung
b) Exponent = bit 24..31, Zweierkomplement-Darstellung
c) Es wird Basis 10 verwendet, nicht wie üblich Basis 2. Also Zahl = Mantisse * 10^(Exponent)
d) Ausnahme für Zahl=0 beachten.

Edit: Aussage c) ist falsch
Vielen Dank für eure Hilfe dank der richtigen Formatangaben auf der Siemensseite konnte ich mein Problem selber lösen.
Hallo Ralf,

könntest Du bitte die Lösung posten. Vielleicht hat noch jemand anderes Interesse daran.

Gruß Markus

' schrieb:Vielen Dank für eure Hilfe dank der richtigen Formatangaben auf der Siemensseite konnte ich mein Problem selber lösen.
[attachment=30559]Hier mein Lösungsweg wenn jemand Interesse hat.

In LabVIEW 2009

Gruß Ralf
Es geht einfacher:
[attachment=30560]
Lv09_img2[attachment=30563]
Das passt aber vorne und hinten nicht! Die Vorzeichen-Behandlung beim Exponenten fehlt komplett (im Prinzip ist der Exponent genau eine I8, wenn -128 = 0x80, laut Link unten) und in der Mantisse ist sie verkehrt! (EDIT: Mantisse ist korrekt. Mein Fehler).
vgl. mal hier Link zu Siemens

Bei der Anzeige der Mantisse im FP solltest du auch noch Bit 0 anzeigen.Wink

Ich glaube, so stimmt es (EDIT: Nein, stimmt nicht, deshalb Upload gelöscht):
Lv09_img2[attachment=59588:KG_NACH_SGL_V2.vi]

Gruß, Jens
Seiten: 1 2
Referenz-URLs