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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: DWORD Zahl in einzelne Stellen zerlegen

  1. #1
    Registriert seit
    24.09.2010
    Beiträge
    86
    Danke
    4
    Erhielt 4 Danke für 4 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Zusammen

    Ich hab folgendes Problem.
    Ich hab eine Zahl als DWORD (0-999999), nun muss ich diese Zahl zerlegen, sodass ich jede Stelle der Zahl
    als einzelnes WORD oder BYTE habe.

    z.B.
    Eingang = 987654

    Ausgang1=4
    Ausgang2=5
    Ausgang3=6
    Ausgang4=7
    Ausgang5=8
    Ausgang6=9

    Ich hoffe ihr versteht was ich genau will und könnt mir helfen.

    Danke
    Zitieren Zitieren DWORD Zahl in einzelne Stellen zerlegen  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.262
    Danke
    537
    Erhielt 2.707 Danke für 1.956 Beiträge

    Standard

    Gib mal im Programm DTB ein, dann mit der Maus drauf und 'F1'.
    Nach Ausführung von DTB hast du jeweils eine Zahl in 4 Bit stehen (BCD-Format).
    Diese 4 Bit kannst du über Ausmaskieren und Schieben separieren und dann in Byte oder Word kopieren.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  3. #3
    Registriert seit
    24.09.2010
    Beiträge
    86
    Danke
    4
    Erhielt 4 Danke für 4 Beiträge

    Standard

    Ich steh grad irgendwie ein bisschen auf dem Schlauch.
    Könntest du mir vielleicht ein Beispiel geben, dann kann ich das besser nachvollziehen.

    Wäre super. Danke.

  4. #4
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    L L# 1234567 // Im Akku steht 1234567 dezimal oder 12d687 hex
    DTB // Im Akku steht jetzt 19088743 dezimal oder 1234567 hex
    T #zwischenspeicher // jetzt kannst du die einzelnen Stellen nach rechts "herausschieben"
    L dw#16#0f // Maske letzte Stelle
    UD // Ergebnis 00000007
    T #letzteStelle
    L #zwischenspeicher //
    SRW 4 // eine Stelle schieben
    T #zwischenspeicher //
    L dw#16#0f // Maske letzte Stelle
    UD // Ergebnis 00000006
    T #vorLetzteStelle
    //usw.

  5. Folgender Benutzer sagt Danke zu Zottel für den nützlichen Beitrag:

    1985zottel (13.03.2013)

  6. #5
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.262
    Danke
    537
    Erhielt 2.707 Danke für 1.956 Beiträge

    Standard

    Ein Zottel hilft dem Anderen
    Danke Zottel!
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  7. #6
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.738
    Danke
    444
    Erhielt 924 Danke für 744 Beiträge

    Standard

    Oder die Zahl immer durch 10 dividieren und die jeweiligen Reste in einzelne Bytes übertragen.
    Analog zu dieser Problemlösung von PN/DP bei ähnlicher Fragestellung.

  8. #7
    Registriert seit
    24.09.2010
    Beiträge
    86
    Danke
    4
    Erhielt 4 Danke für 4 Beiträge

    Standard

    Zitat Zitat von Zottel Beitrag anzeigen
    L L# 1234567 // Im Akku steht 1234567 dezimal oder 12d687 hex
    DTB // Im Akku steht jetzt 19088743 dezimal oder 1234567 hex
    T #zwischenspeicher // jetzt kannst du die einzelnen Stellen nach rechts "herausschieben"
    L dw#16#0f // Maske letzte Stelle
    UD // Ergebnis 00000007
    T #letzteStelle
    L #zwischenspeicher //
    SRW 4 // eine Stelle schieben
    T #zwischenspeicher //
    L dw#16#0f // Maske letzte Stelle
    UD // Ergebnis 00000006
    T #vorLetzteStelle
    //usw.

    Danke für die schnelle Hilfe.

    Leider funktioniert die Lösung von Zottel nur bis zur voeletzten Stellle.
    Danach hab ich in den anderern 4 Stellen immer eine Null drin stehen.

    Kann mir vielleicht einer sagen wie der Code bis zur ersten Stelle weitergeht.

    Danke

  9. #8
    Registriert seit
    26.05.2009
    Beiträge
    541
    Danke
    35
    Erhielt 78 Danke für 69 Beiträge

    Standard

    wieviel Ziffern hat denn deine Zahl?
    7 oder 8?
    Wenn du denkst du denkst, dann denkst du nur, dass du denkst, denn beim Denken der Gedanken, kommt dir der Gedanke, dass das Denken der Gedanken ein gedankenloses Denken ist

  10. #9
    Registriert seit
    24.09.2010
    Beiträge
    86
    Danke
    4
    Erhielt 4 Danke für 4 Beiträge

    Standard

    Meine Zahl hat 6 Stellen.

  11. #10
    Registriert seit
    26.05.2009
    Beiträge
    541
    Danke
    35
    Erhielt 78 Danke für 69 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Dann setz mal dein Programm rein. Vielleicht hast du nur ein Tippfehler oder dir fehlt ne Zeile.
    Hast du denn verstanden was dein Namensvetter dir aufgeschrieben hat?

    Gruß wolder
    Wenn du denkst du denkst, dann denkst du nur, dass du denkst, denn beim Denken der Gedanken, kommt dir der Gedanke, dass das Denken der Gedanken ein gedankenloses Denken ist

Ähnliche Themen

  1. Antworten: 5
    Letzter Beitrag: 27.02.2013, 10:25
  2. Antworten: 20
    Letzter Beitrag: 18.07.2012, 16:17
  3. Brauche Tip ! 4 einzelne Byte in ein Dword
    Von Norton im Forum CODESYS und IEC61131
    Antworten: 2
    Letzter Beitrag: 15.04.2012, 15:21
  4. Antworten: 46
    Letzter Beitrag: 30.09.2010, 10:09
  5. AWL: Dez Zahl auf 10er Potenzen Zerlegen
    Von maxi im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 29.01.2008, 22:08

Lesezeichen

Berechtigungen

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