Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 3 von 3

Thema: Eingangwort (Hex) als Integer interpretieren

  1. #1
    Registriert seit
    30.09.2010
    Beiträge
    26
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Frage


    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
    Zitieren Zitieren Eingangwort (Hex) als Integer interpretieren  

  2. #2
    Registriert seit
    23.07.2009
    Ort
    Österreich
    Beiträge
    2.076
    Danke
    399
    Erhielt 618 Danke für 465 Beiträge

    Standard

    Zitat Zitat von mpe86at Beitrag anzeigen
    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
    Geändert von RONIN (09.09.2016 um 11:49 Uhr)
    If at first you don't succeed, you're not Van Damme!
    ... or maybe using TIA!

  3. #3
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.360
    Danke
    397
    Erhielt 822 Danke für 665 Beiträge

    Standard


    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.
    Geändert von hucki (09.09.2016 um 16:25 Uhr) Grund: Legasthenie

Ähnliche Themen

  1. Integer als S5Time
    Von bastler im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 05.12.2012, 09:33
  2. Integer als Binärcode ausgeben
    Von Servernexus im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 13.01.2012, 17:48
  3. Antworten: 3
    Letzter Beitrag: 29.08.2011, 07:31
  4. integer 32Bit in integer 16 Bit wandeln
    Von slk230-power im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 09.11.2009, 22:35
  5. Integer als Dezimalstelle?
    Von compi im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 24.05.2007, 22:05

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •