Problem: 16bit ganzzahl in dint und nach Real wandeln

lsr

Level-2
Beiträge
109
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, habe ein Problem und komme nicht weiter.
Von einer Leistungsklemme bekomme ich ein vorzeichenloser Wert welcher 16 bit lang ist.
Ich möchte den Wert in eine Gleitpunktzahl wandeln. Ich habe das ganze über int und Dint und über den Befehl
DTR gemacht. Nun habe ich das Problem dass wenn der Wert über 32768 geht habe ich als Ergebnis eine Minuszahl.
Kann mir da jemand helfen?

Vielen Dank.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

wenn ich das richtig verstehe liest du einen 16 Bit vorzeichenlosen Wert ein der positiv von 0 bis größer 32768 (also bis 65535) groß sein kann.
Das ist nach Simatic kein Integerwert, denn ein Interwert mit 16Bit, aber von -32768 bis +32767 definiert.
Hier bringt eine Wandlung von int zu dint mit ITD nichts!
Brobiers mal so:
lade Wert in Akku (16 Bit werden geladen) die Bits 16 bis 31 werden gelöscht;
somit hast Duch auch schon einen DINT Wert im Akku stehen.
Wandle diesen dann mit DTR in Real


Viel Erfolg

S7_Programmer
 
Hi, SPS-Killer und S7_Programmer,

ich denke, eure beiden Vorgehensweisen sind die gleichen.

In beiden Fällen muss der Wert in den Akku geladen und mit DTR gewandelt werden.;)

Warten wir mal auf die Antwort von lsr, ob es ihm weitergeholfen hat.

Gruss
 
Hallo Zusammen.
Hat einwandfrei funktioniert. Manchmal ist der Weg so einfach, doch man muss zuerst dararf kommen.

Vielen Dank für Eure Hilfe.

Grüsse aus der Schweiz
 
Zurück
Oben