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

Ergebnis 1 bis 5 von 5

Thema: Auslesen eines Byte aus einem DWORD (SCL)

  1. #1
    Registriert seit
    21.02.2010
    Beiträge
    28
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo!

    Ich habe gerade folgendes Problem. Ich habe ein ARRAY aus DWORDS. Ich muss nun ein Byte innerhalb des DWORDS auslesen.

    Beispiel:

    VAR_INPUT
    Daten : ARRAY[0..9] OF DWORD;
    END_VAR

    VAR
    Inhalt_1 : BYTE;
    Inhalt_2 : BYTE;
    Inhalt_3 : BYTE;
    Inhalt_4 : BYTE;
    END_VAR

    Nun muss ich die einzelnen Bytes von Daten[0] separat auslesen, so dass es wie folgt aussieht...

    angenommen sei:
    Daten[0] = 12345678

    so soll der Inhalt aus Daten[0] folgendermaßen aufgeteilt sein:
    Inhalt_1 = 12
    Inhalt_2 = 34
    Inhalt_3 = 56
    Inhalt_4 = 78

    Bekommt man das irgendwie hin?

    Vielen Dank schonmal für die Hilfe!

    Mit freundlichen Grüßen
    tahren
    Zitieren Zitieren Auslesen eines Byte aus einem DWORD (SCL)  

  2. #2
    Registriert seit
    29.03.2004
    Beiträge
    5.741
    Danke
    143
    Erhielt 1.687 Danke für 1.226 Beiträge

    Standard

    Hallo,
    sowas könntest du z.B. über shiften und ausmaskieren lösen, oder über eine passende AT Sicht auf ein DWORD. Die AT Sicht wird meistens in effizienten AWL-Code umgesetzt.

    Beispiel:
    Code:
    VAR_TEMP
        dwTemp : DWORD;
        ATdwTemp AT dwTemp : ARRAY[0..3] OF BYTE;
    END_VAR
    
    dwTemp := Daten[0];
    Inhalt_1 := ATdwTemp[0];
    Inhalt_2 := ATdwTemp[1];
    Inhalt_3 := ATdwTemp[2];
    Inhalt_4 := ATdwTemp[3];

  3. #3
    tahren ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    21.02.2010
    Beiträge
    28
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Super! Genau so hatte ich mir das vorgestellt. Vielen Dank! Das über shiften zu lösen hatte ich mir zunächst auch überlegt. Bin dann daran gescheitert, wie ich die anderen Werte im DWORD ausblende. Wenn ich z.B. einzelne Bits ausblenden möchte, dann kann ich das ja einfach über eine UND-Verknüpfung machen. Oder geht das vom Prinzip beim DWORD auch so?

  4. #4
    Registriert seit
    29.03.2004
    Beiträge
    5.741
    Danke
    143
    Erhielt 1.687 Danke für 1.226 Beiträge

    Standard

    Zitat Zitat von tahren Beitrag anzeigen
    Das über shiften zu lösen hatte ich mir zunächst auch überlegt. Bin dann daran gescheitert, wie ich die anderen Werte im DWORD ausblende. Wenn ich z.B. einzelne Bits ausblenden möchte, dann kann ich das ja einfach über eine UND-Verknüpfung machen. Oder geht das vom Prinzip beim DWORD auch so?
    Das Ausblenden der anderen Bits macht das DWORD_TO_BYTE schon automatisch.

    Code:
    dwTemp := Daten[0];
    Inhalt_1 := DWORD_TO_BYTE(SHR(IN := dwTemp, N := 24));
    Inhalt_2 := DWORD_TO_BYTE(SHR(IN := dwTemp, N := 16));
    Inhalt_3 := DWORD_TO_BYTE(SHR(IN := dwTemp, N := 8));
    Inhalt_4 := DWORD_TO_BYTE(dwTemp);
    Der Vorteil an der Lösung mit dem Shiften ist dass es nicht nur auf Siemens SCL beschränkt ist. Aber so ganz plattformunabhängig wird es wegen der unterschiedlichen Byte-Reihenfolge z.B. bei Zahlwerten eh nicht.

  5. #5
    tahren ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    21.02.2010
    Beiträge
    28
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Wie einfach das sein kann gewusst wie sag ich nur...
    Vielen Dank für deine Hilfe!!

    mit freundlichen Grüßen
    tahren

Ähnliche Themen

  1. Quersumme eines Byte,WORD,DWORD
    Von Susi im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 07.04.2011, 16:19
  2. Antworten: 46
    Letzter Beitrag: 30.09.2010, 10:09
  3. DWORD to Byte
    Von hank12 im Forum Simatic
    Antworten: 19
    Letzter Beitrag: 05.05.2009, 07:44
  4. byte in word / dword umwandeln
    Von Gerri im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 03.07.2008, 14:31
  5. Dword zu Byte, oder ähnlich....
    Von Anonymous im Forum PC- und Netzwerktechnik
    Antworten: 2
    Letzter Beitrag: 11.11.2005, 10:56

Lesezeichen

Berechtigungen

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