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

Ergebnis 1 bis 8 von 8

Thema: Unity Pro - 16bit Integer zerlegen

  1. #1
    Registriert seit
    25.02.2010
    Beiträge
    618
    Danke
    35
    Erhielt 121 Danke für 110 Beiträge

    Böse


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo
    Ich komme nicht weiter mit der Uhrzeit bei Unity auf einer Quantum.
    Die Systemzeit steht im Systemwort z.B. %SW51 im Format 16#HHMM. (16 bit Integer im BCD Format)
    Ich bekomme das Low- und Heighbyte einfach nicht getrennt un damit weiterarbeiten zu können.
    Eventuell hat jemand eine Idee.
    Grüsse Holger
    Zitieren Zitieren Unity Pro - 16bit Integer zerlegen  

  2. #2
    Registriert seit
    25.06.2008
    Ort
    Blomberg/Lippe
    Beiträge
    1.293
    Danke
    51
    Erhielt 130 Danke für 124 Beiträge

    Standard

    Einfach Ausmaskieren mit einem AND geht nicht? Ich kenn jetzt die Unity nicht, aber ich würds so machen. Und beim zweiten Byte musst du alle nach rechts um 8 Bit shiften.
    Gruß
    Mobi


    „Das Einfache kompliziert zu machen ist alltäglich. Das Komplizierte einfach zu machen –
    das ist Kreativität“ (Charles Mingus).

  3. #3
    Registriert seit
    18.01.2011
    Ort
    Mainz
    Beiträge
    42
    Danke
    0
    Erhielt 4 Danke für 4 Beiträge

    Standard

    byHighByte := INT_TO_BYTE(SHR(iBcdWert,8 ));
    byLowByte := INT_TO_BYTE(iBcdWert MOD 16#FF00);

  4. #4
    Registriert seit
    25.06.2008
    Ort
    Blomberg/Lippe
    Beiträge
    1.293
    Danke
    51
    Erhielt 130 Danke für 124 Beiträge

    Standard

    Wusste garnicht das man mit MOD ausmaskieren kann, hätte es jetzt mit AND gemacht.
    Gruß
    Mobi


    „Das Einfache kompliziert zu machen ist alltäglich. Das Komplizierte einfach zu machen –
    das ist Kreativität“ (Charles Mingus).

  5. #5
    holgermaik ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.02.2010
    Beiträge
    618
    Danke
    35
    Erhielt 121 Danke für 110 Beiträge

    Standard

    Hallo
    Danke für eure Antworten. Das mit dem Maskieren war auch mein erster Gedanke. Geht aber nicht.
    Um es mal zu verdeutlichen. Es ist 10:05 Uhr. Jeder würde annehmen, das der Inhalt der Zelle jetzt 16#0A05 ist. Das wäre zu einfach. der Inhat ist 16#1005.
    Habe es jetz über Multiplikation und Division gemacht, ist nicht schön geht aber.
    Grüsse Holger.

  6. #6
    Registriert seit
    13.04.2010
    Beiträge
    12
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard

    So geht's recht simpel.

    WORD_AS_BYTE (IN := INT_TO(%SW51), LOW => B1, HIGH => B2);

    Gruss, Piloti

  7. Folgender Benutzer sagt Danke zu piloti für den nützlichen Beitrag:

    holgermaik (23.01.2011)

  8. #7
    Registriert seit
    18.01.2011
    Ort
    Mainz
    Beiträge
    42
    Danke
    0
    Erhielt 4 Danke für 4 Beiträge

    Standard

    Stimmt, das ist die beste Lösung für dieses einfache Problem. Die vollständige Lösung incl. BCD-Decodierung kann wie folgt aussehn:
    Code:
    WORD_AS_BYTE(IN:= INT_TO(%SW51), LOW => LowByte, HIGH => HighByte);
    Stunden := BCD_TO_INT(BYTE_TO(HighByte));
    Minuten := BCD_TO_INT(BYTE_TO(LowByte));
    Gruss
    Geändert von mainzelmann (21.01.2011 um 16:05 Uhr)

  9. Folgender Benutzer sagt Danke zu mainzelmann für den nützlichen Beitrag:

    holgermaik (23.01.2011)

  10. #8
    holgermaik ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.02.2010
    Beiträge
    618
    Danke
    35
    Erhielt 121 Danke für 110 Beiträge

    Daumen hoch


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Funktioniert Super!!
    Herzlichen Dank
    Grüsse
    Zitieren Zitieren Super  

Ähnliche Themen

  1. Wandlung 32Bit Real nach 16Bit Gleitkomma
    Von BadTaste im Forum CODESYS und IEC61131
    Antworten: 11
    Letzter Beitrag: 04.10.2017, 14:03
  2. integer 32Bit in integer 16 Bit wandeln
    Von slk230-power im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 09.11.2009, 22:35
  3. Antworten: 18
    Letzter Beitrag: 01.03.2007, 17:05
  4. ASI 16bit Analogmodul
    Von adi68 im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 29.09.2006, 13:18
  5. Umwandlung Integer(32bit) in Integer(16bit)
    Von Kojote im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 18.08.2005, 10:56

Lesezeichen

Berechtigungen

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