TIA Eingangwort (Hex) als Integer interpretieren

mpe86at

Level-1
Beiträge
26
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich habe eine etwas ungewöhnliche Frage:

Ich habe eine Anwendung, bei der ich einen MBus Wärmemengenzähler mit einer 1512SP-1 PN auslesen soll.
Von diesem Zähler bekomme ich verschiedenste Zählerstände und Aktualwerte.

Unter anderem auch die aktuelle Vor und Rücklauftemperatur.
Allerdings in einem Hex Format.

Hier zwei Beispiele was ich meine:
für eine Temperatur von 21,5 °C bekomme ich den Wert 16#0215
für eine Temperatur von 109,7 °C bekomme ich den Wert 16#1097

Ich sollte nun aber diese Hex Werte in Lesbare Int Werte "umwandeln".
Sprich 16#0215 soll 215 (Int) werden und 16#1097 soll 1097 (int) werden.
Meine erste Idee wäre es die einzelnen "Halbbytes" zu markieren, diese zwischenergebnisse mit der Stelle multiplizieren (*1, *10, *100, *1000) und dann aufsummieren.
Allerdings ist diese Methode SEHR aufwendig.

Nun meine Frage an euch: gibt es eine einfachere, elegantere Lösung?
evtl. ein S7 Befehl oder auch eine Formel?

Danke schon mal für eure Hilfe.

Sg, Michael
 
Meine erste Idee wäre es die einzelnen "Halbbytes" zu markieren, diese zwischenergebnisse mit der Stelle multiplizieren (*1, *10, *100, *1000) und dann aufsummieren.
Allerdings ist diese Methode SEHR aufwendig.
Sehr aufwendig? Das bisschen Code wäre ratzfatz eingetippt und in ne Funktion zur praktischen Verwendung verpackt.
Hätte kaum länger gedauert als den Beitrag zu verfassen. ;)

Geht aber kürzer, dass was du da anscheinend hast ist keine "HEX-Zahl" - sowas gibt's ja nicht - sondern ein in BCD-Codierter Wert.
Auf Grund des Aufbaus des BCD-Codes kann man den Wert in der HEX-Darstellung bequem lesen.

Zum umwandeln kannst du die Funktion "Convert" nehmen.
  • Den Wert in ein DWORD umladen
  • Convert auf BCD32 to DINT stellen
  • Dann bekommst du für DW#16#1234 die Dezimalzahl 1234 raus
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hex ist nur die Darstellung, nicht die Interpretation des Wertes.

Was Dir eher weiter helfen wird: Deine Werte dürften BCD-codiert sein.
;)


PS: Da hat der Ronin in kürzerer Zeit mehr als das doppelte an Buchstaben getippt.
:) :cool:
 
Zuletzt bearbeitet:
Zurück
Oben