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

Ergebnis 1 bis 6 von 6

Thema: Date nach DINT Format

  1. #1
    Registriert seit
    02.08.2007
    Ort
    BW im Ostalbkreis
    Beiträge
    249
    Danke
    32
    Erhielt 27 Danke für 25 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    erstmal möchte ich meine Dank an die Macher und kompetenten Leute dieses Forums los werden!

    Ich hab ein kleines Problem mit einer Anlage...
    Ich lese mittels SFC20 das aktuelle Datum und Uhrzeit der CPU aus
    mit dem FC6 aus der stdlib wandle ich date_and_time nach date da ich nur das Datum benötige.
    Ich möchte nun folgendes aus meiner Variablen Datum vom Format date erzeugen.

    z.B. 20070905 als double integer

    leider stehe ich hierbei voll auf dem Schlauch und weiß nicht mehr weiter

    Vielleicht kann mir ja einer von euch weiterhelfen?

    Vielen Dank schon einmal

    Grüße

    Philipp
    Zitieren Zitieren Date nach DINT Format  

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

    Standard

    Hier mal ein kurzes Programmbeispiel:

    Code:
    // FC100 : Datum
     
    // Systemzeit (DATE_AND_TIME) - Alle Angaben im BCD-Format
    // Byte 0  -  Jahr          -  0 bis 99
    // Byte 1  -  Monat         -  1 bis 12
    // Byte 2  -  Tag           -  1 bis 31
    // Byte 3  -  Stunde        -  0 bis 23
    // Byte 4  -  Minute        -  0 bis 59
    // Byte 5  -  Sekunde       -  0 bis 59
    // Byte 6  -  Millisekunde  -  0 bis 999
    // Byte 7  -  Wochentag     -  1 Sonntag bis 7 Samstag 
     
     
    // Systemzeit (DATE_AND_TIME)
     
          CALL  "READ_CLK"
           RET_VAL:=#SFC1_RET_VAR
           CDT    :=#SYSTEMZEIT
     
     
    // Systemzeit (DATE_AND_TIME) => DATUM (DINT)
     
          L     P##SYSTEMZEIT               // Systemzeit
          LAR1  
     
          L     B [AR1,P#2.0]               // Systemzeit Byte 2  
          BTD   
          T     #TAG                        // Tag
     
          L     B [AR1,P#1.0]               // Systemzeit Byte 1
          BTD   
          L     L#100
          *D    
          T     #MONAT                      // Monat
     
          L     B [AR1,P#0.0]               // Systemzeit Byte 0
          BTD   
          L     L#2000
          +D    
          L     L#10000
          *D    
          T     #JAHR                       // Jahr
     
          L     #TAG                        // Tag
          L     #MONAT                      // Monat
          +D    
          L     #JAHR                       // Jahr
          +D    
          T     #DATUM                      // Datum
    Gruß Kai
    Angehängte Dateien Angehängte Dateien

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

    Standard

    Zitat Zitat von PhilippL Beitrag anzeigen
    Ich lese mittels SFC20 das aktuelle Datum und Uhrzeit der CPU aus
    Du meinst bestimmt den SFC1 READ_CLK.

    Gruß Kai

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

    Standard

    Es geht auch noch etwas kürzer:

    Code:
    // FC120 : Datum
     
    // Systemzeit (DATE_AND_TIME) (Alle Angaben im BCD-Format)
     
    // Byte 0  -  Jahr           -  0 bis 99
    // Byte 1  -  Monat          -  1 bis 12
    // Byte 2  -  Tag            -  1 bis 31
    // Byte 3  -  Stunden        -  0 bis 23
    // Byte 4  -  Minuten        -  0 bis 59
    // Byte 5  -  Sekunden       -  0 bis 59
    // Byte 6  -  Millisekunden  -  0 bis 999
    // Byte 7  -  Wochentag      -  1 Sonntag bis 7 Samstag 
     
     
    // Systemzeit (DATE_AND_TIME)
     
          CALL  "READ_CLK"
           RET_VAL:=#SFC1_RET_VAR
           CDT    :=#SYSTEMZEIT
     
     
    // Systemzeit (DATE_AND_TIME) => DATUM (DINT)
     
          L     P##SYSTEMZEIT               // Systemzeit
          LAR1  
     
          L     D [AR1,P#0.0]               // Systemzeit Byte 0 - 3  
          SRD   8
          BTD   
          L     L#20000000
          +D    
          T     #DATUM                      // Datum
    Gruß Kai
    Angehängte Dateien Angehängte Dateien

  5. #5
    PhilippL ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    02.08.2007
    Ort
    BW im Ostalbkreis
    Beiträge
    249
    Danke
    32
    Erhielt 27 Danke für 25 Beiträge

    Standard

    Hallo Kai,

    ich hab schon den SFC20 gemeint.
    Aufruf im OB1
    Ich werd mir deine Beispiele mal anschauen.
    Erstmal vielen Dank!

    Code:
     CALL  "BLKMOV"
     SRCBLK :=#OB1_DATE_TIME
     RET_VAL:=#retval
     DSTBLK :="Arbeits_DB".ZEIT
     
     CALL  "DT to Date"
     IN     :="Arbeits_DB".ZEIT
     RET_VAL:="Arbeits_DB".DATUM
    Gruß Philipp

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Philipp,

    alles klar, jetzt habe ich verstanden, was Du mit dem SFC20 BLKMOV machst.

    Das Problem bei Deinem Lösungsansatz mit dem SFC20 BLKMOV und dem FC6 DT_DATE ist jedoch, dass man die damit erzeugte Variable vom Datentyp DATE hier nicht wirklich gut gebrauchen kann.

    DATE

    Eine Variable mit dem Datentyp DATE wird in einem Wort als vorzeichenlose Festpunktzahl gespeichert. Der Inhalt der Variablen entspricht der Anzahl der Tage seit dem 01.01.1990. Die Darstellung enthält das Jahr, den Monat und den Tag, jeweils getrennt durch einen Bindestrich.

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

    DATE#2168-12-31 (= HEX FF62)
    Ich bin daher einen anderen Lösungsweg gegangen und habe mit dem SFC1 READ_CLK die Systemzeit als Variable vom Datentyp DATE_AND_TIME ausgelesen. Das in dieser Variablen enthaltene Datum kann dann sehr einfach in eine Variable vom Datentyp DINT umgewandelt werden.

    Gruß Kai
    Geändert von Kai (07.09.2007 um 09:11 Uhr)

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

    PhilippL (07.09.2007)

Ähnliche Themen

  1. DaveGetBlockInfo, format von modification date ??
    Von Ruud im Forum Hochsprachen - OPC
    Antworten: 5
    Letzter Beitrag: 20.04.2015, 09:34
  2. Format Date zerlegen
    Von online im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 05.11.2010, 13:08
  3. S7 Format DATE
    Von fmbux im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 18.10.2009, 19:53
  4. S7 Format Date in WINCC
    Von JoeJo im Forum HMI
    Antworten: 0
    Letzter Beitrag: 12.02.2007, 15:05
  5. Format Date richtig setzen
    Von Ello im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 26.09.2006, 08:56

Lesezeichen

Berechtigungen

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