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

Ergebnis 1 bis 10 von 10

Thema: UTC zeit

  1. #1
    Registriert seit
    05.03.2008
    Beiträge
    81
    Danke
    9
    Erhielt 7 Danke für 7 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,
    welche Möglichkeiten gibt es um die UTC Zeit (vergangene Sekunden seit 01.01.1970) einer 416 CPU mittels SCL auszulesen?
    Zitieren Zitieren UTC zeit  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    Wo steckt dein Problem ?
    Hatte dir meine Antwort in deinem letzten Beitrag nicht gefallen ?

    Gruß
    LL

  3. #3
    M4RKU5 ist offline Benutzer
    Themenstarter
    Registriert seit
    05.03.2008
    Beiträge
    81
    Danke
    9
    Erhielt 7 Danke für 7 Beiträge

    Standard

    Doch deine Antwort hat mir weitergeholfen. Nur brauche ich jetzt nicht die aktuelle Zeit, sondern die vergangenen Sekunden seit 01.01.1970. Evt gibt es hierfür ja eine Funktion. Ich könnte zwar aus der aktuellen Zeit die UTC-Zeit berechnen, dies ist allerdings sehr aufwendig.

  4. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    Da fällt mir nur ein, dass du das Datum zu Hilfe nimmst. Das basierst auf dem 01.01.1990. Dies multiplizierst du mit 86400 (Sekunden pro Tag) und rechnest noch einmal die 20 Jahre bis 1970 in Sekunden darauf ...

    Gruß
    LL

  5. #5
    M4RKU5 ist offline Benutzer
    Themenstarter
    Registriert seit
    05.03.2008
    Beiträge
    81
    Danke
    9
    Erhielt 7 Danke für 7 Beiträge

    Standard

    Da fällt mir nur ein, dass du das Datum zu Hilfe nimmst. Das basierst auf dem 01.01.1990. Dies multiplizierst du mit 86400 (Sekunden pro Tag) und rechnest noch einmal die 20 Jahre bis 1970 in Sekunden darauf ...
    Also wenn ich dich richtig verstanden habe, gibt es eine Funktion die mir die vergangenen Tage seit 01.01.1990 liefert? Wie heißt diese Funktion?

  6. #6
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.794
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    die kommt auf dem gleichen Weg wie die Systemzeit ... die steckt in dem DATE_TIME-Array mit drin ... sind nur die restlichen Bytes.

    Code:
      Stunde  := BCD_TO_INT (b_SPS_Datum_Uhrzeit [3]) ;
      Minute  := BCD_TO_INT (b_SPS_Datum_Uhrzeit [4]) ;
      Sekunde := BCD_TO_INT (b_SPS_Datum_Uhrzeit [5]) ;
      
      MilliSekunden_E := WORD_TO_INT (SHR (IN:=INT_TO_WORD (BCD_TO_INT (b_SPS_Datum_Uhrzeit [7])) , n:=4)) ;
      MilliSekunden := (BCD_TO_INT (b_SPS_Datum_Uhrzeit [6]) *10) + MilliSekunden_E ;
      UhrZeit_DINT := INT_TO_DINT(MilliSekunden) + (INT_TO_DINT(Sekunde) + INT_TO_DINT(Minute)*60 + INT_TO_DINT(Stunde)*3600) * 1000 ;
      UhrZeit_TOD  := DINT_TO_TOD(UhrZeit_DINT) ;
           UhrZeit := UhrZeit_TOD ;
      
      WochenTag := BCD_TO_INT (b_SPS_Datum_Uhrzeit [7] AND 2#0000_1111) ;
      IF (WochenTag <> SPS.Wochentag) OR (Stunde <> SPS.Stunde) THEN
         b_Jahr := BCD_TO_INT (b_SPS_Datum_Uhrzeit [0]) ; 
            IF b_Jahr < 90 THEN Jahr := 2000 + b_Jahr ; ELSE Jahr := 1900 + b_Jahr ; END_IF ;
         Monat  := BCD_TO_INT (b_SPS_Datum_Uhrzeit [1]) ;
         Tag    := BCD_TO_INT (b_SPS_Datum_Uhrzeit [2]) ;
         IF ((Jahr MOD 4) = 0) THEN Schaltjahr := 1 ; ELSE Schaltjahr := 0 ; END_IF ;
         //             Jahres-Tage            Schaltjahr-Tage
         Datum_DINT := ((INT_TO_DINT(Jahr) - 1990) * 365) + ((INT_TO_DINT(Jahr) - 1992) / 4) + Tag ;
    schau dir das mal an ...

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

    M4RKU5 (13.03.2008)

  8. #7
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard

    Für die Berechnung der UTC-Zeit (Zeit seit dem 01.01.1970 in Sekunden) kann man auch die Systemfunktion SFC 1 READ_CKL und die IEC-Funktionen FC 6 DT_DATE und FC 8 DT_TOD verwenden:

    Code:
    FUNCTION FC100 : VOID
     
    NAME    : UTC
    FAMILY  : SPSFORUM
    AUTHOR  : KAI
    VERSION : '1.0'
     
    VAR_OUTPUT
        SPS_DATE : DATE;
        SPS_TOD  : TOD;
        SPS_UTC : DINT;
    END_VAR
     
    VAR_TEMP
        SPS_DT : DT;
        RETVAL : INT;
    END_VAR
     
    BEGIN
     
    // SFC 1  READ_CLK
    // Die Funktion SFC 1 liest die aktuelle Uhrzeit und das aktuelle Datum 
    // im Datenformat DATE_AND_TIME (DT) aus der SPS aus.
     
    // DATE_AND_TIME (DT)
    // (DT#1990-1-1-0:0:0.0 bis DT#2089-12-31-23:59:59.999)
     
    RETVAL := SFC1 (CDT := SPS_DT);
     
    // FC 6  DT_DATE
    // Die Funktion FC 6 liest das Datenformat DATE (D) aus dem Datenformat 
    // DATE_AND_TIME (DT). 
     
    // DATE (D)
    // IEC-Datum in Schritten von 1 Tag 
    // (D#1990-1-1 bis D#2168-12-31)  
     
    SPS_DATE := FC6 (IN := SPS_DT); 
     
    // FC 8  DT_TOD
    // Die Funktion FC 8 liest das Datenformat TIME_OF_DAY (TOD) aus dem 
    // Datenformat DATE_AND_TIME (DT).
     
    // TIME_OF_DAY (TOD)
    // Uhrzeit (Tageszeit) in Schritten von 1 Millisekunde 
    // (TOD#0:0:0.0 bis TOD#23:59:59.999) 
     
    SPS_TOD := FC8 (IN := SPS_DT);
     
    // UTC-ZEIT
    // Vergangene Zeit seit dem 01.01.1970 in Schritten von 1 Sekunde
     
    // 1 Tag = 24 Stunden * 60 Minuten * 60 Sekunden = 86400 Sekunden
     
    // 01.01.1970 -> 01.01.1990 = 7305 Tage * 86400 Sekunden = 631152000 Sekunden 
     
    SPS_UTC := (DATE_TO_DINT(SPS_DATE) * 86400) + (TOD_TO_DINT(SPS_TOD) / 1000) + 631152000;
     
    END_FUNCTION
    Gruß Kai
    Angehängte Grafiken Angehängte Grafiken
    • Dateityp: jpg VAT.jpg (145,1 KB, 50x aufgerufen)
    Angehängte Dateien Angehängte Dateien

  9. Folgende 2 Benutzer sagen Danke zu Kai für den nützlichen Beitrag:

    dennisbz (20.05.2009),M4RKU5 (14.03.2008)

  10. #8
    Registriert seit
    30.03.2005
    Beiträge
    2.096
    Danke
    0
    Erhielt 673 Danke für 541 Beiträge

    Standard

    Hier noch mal ein paar Erläuterungen zu den Datentypen DATE und TIME_OF_DAY:

    DATE (D)

    Eine Variabel mit dem Datentyp DATE (Datum) wird in einem Wort als vorzeichenlose Festpunktzahl abgelegt. Der Inhalt der Variablen entspricht der Anzahl der Tage seit dem 01.01.1990. Die Darstellung enthält die Angaben für das Jahr, den Monat und den Tag, jeweils getrennt durch einen Bindestrich.

    Beispiele:

    DATE#1990-01-01 (= HEX 0000)

    D#2168-12-31 (= HEX FF62)
    TIME_OF_DAY (TOD)

    Eine Variable mit Datentyp TIME_OF_DAY (Tageszeit) wird in einem Doppelwort als vorzeichenlose Festpunktzahl abgelegt. Der Inhalt der Variablen entspricht der Anzahl der Millisekunden seit Tagesbeginn (0:00 Uhr). Die Darstellung enthält die Angaben für Stunden, Minuten und Sekunden, jeweils getrennt durch einen Doppelpunkt. Die Angabe der Millisekunden, im Anschluss an die Sekunden durch einen Punkt getrennt, kann entfallen.

    Beispiele:

    TIME_OF_DAY#00:00:00 (= HEX 0000_0000)

    TOD#23:59:59:999 (= HEX 0526_5BFF)
    Gruß Kai

  11. #9
    Registriert seit
    31.07.2007
    Ort
    Saarland
    Beiträge
    123
    Danke
    1
    Erhielt 16 Danke für 13 Beiträge

    Standard

    Darf ich mal neugierig sein?

    Wozu um alles in der Welt braucht man die vergangene Zeit seit dem 01.01.1970?

  12. #10
    M4RKU5 ist offline Benutzer
    Themenstarter
    Registriert seit
    05.03.2008
    Beiträge
    81
    Danke
    9
    Erhielt 7 Danke für 7 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Für time stamps

Ähnliche Themen

  1. UTC-Zeit in GMT+1
    Von binford im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 23.09.2010, 11:26
  2. 1ms Zeit messen?
    Von DennisBerger im Forum Simatic
    Antworten: 14
    Letzter Beitrag: 17.05.2010, 12:42
  3. CPU Zeit auswerten
    Von HWPascal im Forum Programmierstrategien
    Antworten: 6
    Letzter Beitrag: 05.03.2009, 23:20
  4. CPU Zeit
    Von Pinguino im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 04.04.2007, 09:46
  5. S7 - Zeit?
    Von Orion im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 13.11.2003, 08:42

Lesezeichen

Berechtigungen

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