Modbus RTU float (IEEE754) nach Raal

tiego

Level-1
Beiträge
51
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Modbus RTU float (IEEE754) nach Real

Hallo naochmals,

Ich bin gerade auf ein weiteres Problem beim Modbus gestossen.

Ich erhalte werte als float (2 wörter) und müsste diese in eine Real Zahl umwandeln.
bislang hatte Ich keinen erfolg.

laut anleitung sind die daten nach IEEE754 gesendet.

z.B.
Word 1 = 16051
Word 2 = 13108

Ergebniss sollte 0,35 sein.

hab es so schon getestet:

Code:
    ptrWordArray^[0] := Data_recive_1[0]; (* 2 Word Low*)
    ptrWordArray^[1] := Data_recive_1[1]; (* 1 Word High*)

    a:=DINT_TO_WORD(myDInt);

ohne erfolg.

bin für jeden Tipp sehr dankbar.
 
Zuletzt bearbeitet:
Hallo,

Ich gab letzt ein seltsames Format gehabtvon ein Rack (war zwar Profibus)Es war ein DINT ohne vorzeichen.

Ich musste aus endlich Low und High Word drehen und dann noch von jedes Wort Low und High Byte.

Wer weiß funktioniert es für dich auch.

Bram
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

vielen dank,

dies war aber auch nicht die lösung.
gibt es einen baustein der aus den 2 Wörtern eine Real Zahl Baut?

Ich verzweifele....
der rest läuft alles so toll mit eurer hilfe aber jetz ein solcher x wert...
 
Hi

Da du in SCL Programmierst schaue dir mal den "AT" Befehl/Verwendung an.

D.h. verwende die Suchfunktion hier im Forum.
 
Da kann man mal sehen, dass er den Code von Ralle aus seiner anderen Anfrage überhaupt nicht verstanden hat.
Denn ansonsten hätte er einen Ansatz wie man zwei Words zu einem Real zusammensetzen kann.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

danek für die rückmeldungen.
Ja es stimmt ich habe nicht 100% vertsanden was Ralle mir geschrieben hat, aber Ich denke mir das Ich ja einemal nachfragen darf wenn Ich ein Problem habe.
leider komme Ich bislang nicht darauf Wie Ich den Richtigen Messwert erhalte.
 
Ok, das geht auch :


Code:
ptrWordArray := ADR(myReal);


ptrWordArray^[1] := 16051;
ptrWordArray^[0] := 13108;


a := myReal;

myReal und a sind ist als Real definiert, die beiden Word sind vertauscht (Das hab ich einfach mal in Codesys getestet.)

Ergebnis a ist 0.35
 
Danke Ralle,

Ich habe den vorherigen Code angepasst und die Variable "myDInt" durch myReal und den Tüp Real ersetzt.
nun Funktioniert alles und Ich muss nicht mehr acht geben wie , wann welcher tüp ankommt.

Vielen dank.

Grüsse
 
Zurück
Oben