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

Ergebnis 1 bis 8 von 8

Thema: Time and Date

  1. #1
    Registriert seit
    14.06.2005
    Beiträge
    223
    Danke
    9
    Erhielt 15 Danke für 15 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi Leute,

    ich weis es wurde schon viel geschrieben, aber ich habe nicht das richtige gefunden. Ich brauche die Zeit im TimeandDate Format von Siemens.
    Ich bekomme folgende Daten geschickt,

    Word 2008 (Jahr)
    Byte 10 (Monat)
    Byte 13 (Tag)
    Byte 11 (Stunde)
    Byte 45 (Minute)
    Byte 13 (Sekunde)

    Ich weiss Siemens hat das Format in BCD, wie kann ich das wandeln, ich habe ja ein WORD und Bytes. Vielleich habt ihr im Forum einen Link?

    Danke, Servus.
    Zitieren Zitieren Time and Date  

  2. #2
    Registriert seit
    29.09.2008
    Ort
    Land der Frühaufsteher
    Beiträge
    104
    Danke
    6
    Erhielt 22 Danke für 21 Beiträge

    Standard

    Hallo Paula,

    ich habe mal den Datentyp Date-and-Time angehängt.
    Am besten ist in den Lokaldaten eine Variable vom Typ Dat-and-Time anlegen und dann auf die Lokaldatenbytes direkt schreiben.

    Zur Wandlung gibt es die Befehle ITB (IntegerToBCD) und DTB (Doubleint.ToBCD).
    Hilfreich ist hier sicher noch SLW x (SchiebeWort nach Links um x, x=Anzahl Bits), SLD x, SRW x bzw. SRD x. Alle Befehle beziehen sich auf den Wert im Akku1.

    Ich packe mal die Operandenliste für eine 300er CPU dazu.


    MfG
    FrankW
    Angehängte Dateien Angehängte Dateien

  3. Folgender Benutzer sagt Danke zu FrankW für den nützlichen Beitrag:

    paula23 (22.10.2008)

  4. #3
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.718
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard

    Zitat Zitat von FrankW Beitrag anzeigen
    Zur Wandlung gibt es die Befehle ITB (IntegerToBCD) und DTB (Doubleint.ToBCD).
    ...bzw. für die umgekehrte Wandlung, die du ja brauchst heißen die Befehle dann :
    BTI - BCD to Integer
    BTD - BCD to DINT

    Gruß
    LL

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

    paula23 (22.10.2008)

  6. #4
    paula23 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    14.06.2005
    Beiträge
    223
    Danke
    9
    Erhielt 15 Danke für 15 Beiträge

    Standard

    Und wie trenne ich das Jahr, da bekomme ich 2008 aber das Siemens Format kennt ja nur 08 ?

    Wenn ich ein Integer wandle brauche ich doch auch ein 16 Bit Wert und nicht ein Byte wie ich aber habe ???

    Das was Ihr geschrieben habt ist mir schon klar, aber irgentwie hab ichs nicht verstanden wie Ihr aus meinen Fragen entnehmen könnt.

    Danke.

  7. #5
    Registriert seit
    29.09.2008
    Ort
    Land der Frühaufsteher
    Beiträge
    104
    Danke
    6
    Erhielt 22 Danke für 21 Beiträge

    Standard

    Hallo Paula,

    Code:
    Und wie trenne ich das Jahr, da bekomme ich 2008 aber das Siemens Format kennt ja nur 08 ?
    Die nächsten 92 Jahre sollte das mit dem Abziehen von 2000 funktionieren.

    Code:
    Wenn ich ein Integer wandle brauche ich doch auch ein 16 Bit Wert und nicht ein Byte wie ich aber habe ???
    Du kannst auch ein Byte laden und als INT wandeln. Dann ist der Rest halt "0". (Schau mal in die Operationsliste S.15 - Bits zählen von Rechts nach Links)

    MfG
    FrankW

  8. #6
    Registriert seit
    08.11.2006
    Ort
    Uckermark
    Beiträge
    903
    Danke
    201
    Erhielt 256 Danke für 208 Beiträge

    Standard

    Zitat Zitat von paula23 Beitrag anzeigen
    Und wie trenne ich das Jahr, da bekomme ich 2008 aber das Siemens Format kennt ja nur 08 ?.
    Code:
    L   #jahr_4stellig
    L   2000
    -I
    T  #jahr_2stellig
    Zitat Zitat von paula23 Beitrag anzeigen
    Wenn ich ein Integer wandle brauche ich doch auch ein 16 Bit Wert und nicht ein Byte wie ich aber habe ???
    Nein, das ist egal.
    Code:
    L    #monat_byte  //Monat als Dezimal
    ITB
    T    #monat_BCD   //Monat als BCD-Zahl
    geht ebenso mit 8 wie auch mit 16 Bit.
    .
    Neue Ideen begeistern jene am meisten, die auch mit den alten nichts anzufangen wussten.
    Karl Heinrich Waggerl (1897-1973)

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

    paula23 (22.10.2008)

  10. #7
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.718
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard

    Zitat Zitat von FrankW Beitrag anzeigen
    Die nächsten 92 Jahre sollte das mit dem Abziehen von 2000 funktionieren.
    Nicht ganz richtig ...
    die nächsten 81 Jahre bekommt man ein 4stelliges Jahr durch hinzuaddieren von 2000 (bis 2089). Stehen im TOD Zahlen von 90 bis 00, so ist dann damit 1990 bis 2000 gemeint ...

    Gruß
    LL

  11. #8
    paula23 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    14.06.2005
    Beiträge
    223
    Danke
    9
    Erhielt 15 Danke für 15 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hat funktioniert ! Danke Euch !

  12. Folgender Benutzer sagt Danke zu paula23 für den nützlichen Beitrag:

    SIGGI (08.03.2009)

Ähnliche Themen

  1. Beckhoff Date and Time an S7
    Von dr1101 im Forum CODESYS und IEC61131
    Antworten: 9
    Letzter Beitrag: 15.11.2013, 19:29
  2. String in Date&Time
    Von Stohstaky im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 10.10.2007, 16:13
  3. Date/Time in Diagnoserepeater
    Von Pilami im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 26.09.2007, 14:58
  4. Date and Time im DB
    Von godi im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 19.05.2006, 15:56
  5. sps date and time ==> OP27
    Von Anonymous im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 10.11.2005, 15:30

Lesezeichen

Berechtigungen

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