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

Ergebnis 1 bis 3 von 3

Thema: Auswertung einer Bytefolge aus einem Array

  1. #1
    Registriert seit
    26.07.2013
    Beiträge
    4
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich bin recht neu mit Step 7 unterwegs und kenne mich daher noch nicht so gut aus.
    Ich habe eine S7-1200 mit dem Kommunikationsmodul CM1214 (mit RS232-Schnittstelle) und arbeite mit S7 Basic v12.

    Ich bekomme ein Telegramm von einem Stromzähler, das wie folgt aussieht: A5 5A 8B 07 00 11 76 0C 00 00 00 01 00 26
    Aus den Bytes 4-6 (also 00 11 76) kann die aktuelle Einspeisung entnommen und umgerechnet werden.
    Die Rechnung ist dabei folgende:
    Man nimmt die Bytes 4-6 und setzt diese aneinander, sodass man 001176 hat.
    Diese Hex-Zahl muss anschließend in Dezimal umgerechnet werden, was 4470 Watt bedeutet.

    Mein Problem ist, ich weiß nicht, wie ich aus dem Byte-Array die Bytes 4-6 herausziehen und aneinandersetzten kann.
    Gibt es auch ein Befehl, wie ich eine Hex-Zahl in dezimal umrechnen kann?

    Es wäre echt wirklich schön, wenn mit dabei jemand helfen könnte. Ich habe schon ein paar Tage mit dem Problem gekämpft und komme zu keiner Lösung.
    Vllt gibt es ja schon jemand, der so etwas ähnlich hatte und eventuell ein kleines Beispiel hat. Bin für jeden Tipp sehr dankbar...

    Vielen Dank schonmal im Voraus!

    Liebe Grüße
    Zitieren Zitieren Auswertung einer Bytefolge aus einem Array  

  2. #2
    Registriert seit
    29.03.2004
    Beiträge
    5.797
    Danke
    144
    Erhielt 1.707 Danke für 1.239 Beiträge

    Standard

    Eine Hex-Zahl muss man bei der Programmierung nicht in dezimal umrechnen, das ist nur eine Darstellungsart.
    Du musst lediglich die einzelnen Bytes an der passenden Stelle im Speicher für eine Integer-Zahl unterbringen.

    Eine 3-Byte Ganzzahldarstellung gibt es in einer S7 aber nicht. Da müsstest du auf einen 4-Byte Wert wechseln und das nicht verwendete Byte auf Null stehen lassen.
    Du benötigst aber noch die Information ob die Zahl auch negativ werden kann, und in welchem Format negative Zahlen dargestellt werden (z.B. Zweierkomplement).

    Um einzelne Bytes in einem Doppelwort unterzubringen, bietet das TIA-Portal den so getauften "Slice" Zugriff (auch wenn es in der Hilfe nicht unter diesem Namen steht).
    Auf jeden Fall kann man mit den Endungen .b0, .b1, .b2 und .b3 auf die 4 Bytes einer DWord Variable zugreifen.

    Falls deine 3 Bytes nun nur positiv werden können, kannst du dir eine Funktion schreiben die 4 Bytes in ein UDint zusammensetzt:
    BytesToUDint-1.png

    Aufrufen kannst du diese mit Konstanten dann so:
    BytesToUDint-2.png
    für deinen Fall schreibst an die Parameter Byte1, Byte2 und Byte3 die entsprechenden Array-Variablen, und lässt den Parameter Byte0 auf B#16#0 stehen.

  3. #3
    alik ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    26.07.2013
    Beiträge
    4
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    danke. ich habe es in mein Programm versucht einzubauen und werde Mitte der kommenden Woche mal das Programm einspielen. Ich werde mich dann nochmal melden vielen dank schon mal für die schnelle Hilfe! LG

Ähnliche Themen

  1. Antworten: 18
    Letzter Beitrag: 21.12.2016, 17:03
  2. Step 7 Auswertung Array of Char
    Von Matze001 im Forum Simatic
    Antworten: 44
    Letzter Beitrag: 11.06.2013, 11:12
  3. Antworten: 6
    Letzter Beitrag: 30.09.2011, 13:35
  4. Antworten: 13
    Letzter Beitrag: 30.11.2010, 13:18
  5. Hochregal - Array -Auswertung
    Von sr-83 im Forum Simatic
    Antworten: 28
    Letzter Beitrag: 30.08.2007, 18:42

Stichworte

Lesezeichen

Berechtigungen

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