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

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

Thema: DATE zusammensetzten aus T M J

  1. #1
    Registriert seit
    28.04.2009
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo

    Ich suche nach einem Weg den Datentyp DATE aus einzelnen werten (T M J jeweils als INT wert) zusammenzusetzen.

    Hat das jemand schon gemacht?

    Danke schonmal an alle

    Heiko
    Zitieren Zitieren DATE zusammensetzten aus T M J  

  2. #2
    Registriert seit
    07.06.2011
    Beiträge
    117
    Danke
    4
    Erhielt 18 Danke für 18 Beiträge

    Standard

    Hallo,

    geht's denn auch etwas detaillierter (Steuerung, Software, Programmiersprache, ...)?
    Mario

  3. #3
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.697 Danke für 1.949 Beiträge

    Standard

    In der Hilfe von Step7 steht dazu folgendes:

    Datentyp Länge (Bit) Format
    DATE_AND_TIME 64 Jahr-Monat-Tag-h:min:s:ms
    oder
    DT Beispiel für das Format
    DT#1995-02-02-08:30:01.999
    Der Datentyp Date_And_Time wird im BCD-Format gespeichert:
    Bytes Inhalt Bereich
    0 Jahr 1990 ... 2089
    1 Monat 01 ... 12
    2 Tag 1 ... 31
    3 Stunde 0 ... 23
    4 Minute 0 ... 59
    5 Sekunde 0 ... 59
    6 2 MSD von ms 00 ... 99
    7 (4 MSB) LSD von ms 0 ... 9
    7 (4 LSB) Wochentag 1 ... 7 (1 = Sonntag)
    Darstellung der Bytes 6 und 7:


    MSD: Most Significant Decade
    LSD: Least Significant Decade
    Mit FC aus der Standard-Library (IEC) kann man Date aus Date_and_Time extrahieren und umgekehrt.
    Geändert von Ralle (15.10.2012 um 10:38 Uhr)
    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

  4. #4
    Sony15ab ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    28.04.2009
    Beiträge
    6
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ja natürlich ging zu schnell

    Step 7
    CPU 317 2 DP

    Der Aufbau der Datentypen is im soweit klar

    Jetzt gehts darum aus den einzelnen werten (zb T 15 M 10 J 2012) das Format DATE zu generieren.

    Date = Anzahl der Tage seit 01.01.1990
    es wäre natürlich möglich die Tage "auszuzählen"

    Hatte die Hoffnung das es dafür schon nen Baustein gibt.
    Danke

  5. #5
    Registriert seit
    07.06.2011
    Beiträge
    117
    Danke
    4
    Erhielt 18 Danke für 18 Beiträge

    Standard

    Schreib die Einzelwerte in einen als Date_And_Time-Format definierten Bereich und wandle den Inhalt anschließend per IEC-Funktion in das Date-Format.
    Mario

  6. #6
    Registriert seit
    17.10.2009
    Beiträge
    37
    Danke
    4
    Erhielt 11 Danke für 11 Beiträge

    Standard

    wenn Du Dir nicht die Mühe machen willst mit dem auszählen der Tage, dann gibt es auch eine Funktion dafür.
    Lade Dir unter www.oscat.de die Bibliothek herunter. Die Funktion heißt SET_DATE und löst Dein Problem.

  7. #7
    Registriert seit
    26.03.2007
    Beiträge
    47
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo fmbux,
    ich wollte die Funktion SET_DATE v2.2 verwenden, doch nach laden des Bausteins geht meine CPU in STOP wegen Programmierfehler... Woran kann das liegen?
    CPU317-2DP
    Step7 v5.5

    IN YEAR: 2014
    IN MONTH: 12
    IN DAY: 5

    OUT natürlich eine DATE Variable deklariert...

  8. #8
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.186
    Danke
    923
    Erhielt 3.291 Danke für 2.660 Beiträge

    Standard

    Zitat Zitat von S1MoN Beitrag anzeigen
    Woran kann das liegen?
    Das findest Du im Diagnosepuffer der CPU. Der Eintrag vor dem STOP-Eintrag.

    Ich kenne den Baustein SET_DATE nicht, doch kann es sein, daß der Baustein intern noch andere Bausteine aufruft, welche Du aber nicht mit geladen hast?

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  9. #9
    Registriert seit
    26.03.2007
    Beiträge
    47
    Danke
    2
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ich kann nichts finden, die CPU geht wegen diesem Baustein in STOP

    Code:
     SET   
          SAVE  
          =     L      6.1
          L     #MONTH
          L     1
          >=I   
          TAK   
          T     LW     8
          TAK   
          SPB   A7d0
          T     LW     8
          SPA   A7d1
    A7d0: L     LW     8
          L     12
          <=I   
          SPB   A7d1
          T     LW     8
    A7d1: L     1
          L     LW     8
          ==I   
          SPB   A7d3
          SPA   A7d4
    A7d3: L     0
          T     #MTH_OFS
          SPA   A7d2
    A7d4: L     2
          L     LW     8
          ==I   
          SPB   A7d5
          SPA   A7d6
    A7d5: L     31
          T     #MTH_OFS
          SPA   A7d2
    A7d6: L     3
          L     LW     8
          ==I   
          SPB   A7d7
          SPA   A7d8
    A7d7: L     59
          T     #MTH_OFS
          SPA   A7d2
    A7d8: L     4
          L     LW     8
          ==I   
          SPB   A7d9
          SPA   A7da
    A7d9: L     90
          T     #MTH_OFS
          SPA   A7d2
    A7da: L     5
          L     LW     8
          ==I   
          SPB   A7db
          SPA   A7dc
    A7db: L     120
          T     #MTH_OFS
          SPA   A7d2
    A7dc: L     6
          L     LW     8
          ==I   
          SPB   A7dd
          SPA   A7de
    A7dd: L     151
          T     #MTH_OFS
          SPA   A7d2
    A7de: L     7
          L     LW     8
          ==I   
          SPB   A7df
          SPA   A7e0
    A7df: L     181
          T     #MTH_OFS
          SPA   A7d2
    A7e0: L     8
          L     LW     8
          ==I   
          SPB   A7e1
          SPA   A7e2
    A7e1: L     212
          T     #MTH_OFS
          SPA   A7d2
    A7e2: L     9
          L     LW     8
          ==I   
          SPB   A7e3
          SPA   A7e4
    A7e3: L     243
          T     #MTH_OFS
          SPA   A7d2
    A7e4: L     10
          L     LW     8
          ==I   
          SPB   A7e5
          SPA   A7e6
    A7e5: L     273
          T     #MTH_OFS
          SPA   A7d2
    A7e6: L     11
          L     LW     8
          ==I   
          SPB   A7e7
          SPA   A7e8
    A7e7: L     304
          T     #MTH_OFS
          SPA   A7d2
    A7e8: L     12
          L     LW     8
          ==I   
          SPB   A7e9
          SPA   A7ea
    A7e9: L     334
          T     #MTH_OFS
          SPA   A7d2
    A7ea: L     0
          T     #MTH_OFS
    A7d2: L     #YEAR
          ITD   
          CLR   
          U     L      6.1
          SAVE  
          L     L#1461
          *D    
          SPO   I007
          SPA   I008
    I007: CLR   
          =     L      6.1
    I008: L     L#2878172
          -D    
          SPO   I009
          SPA   I00a
    I009: CLR   
          =     L      6.1
    I00a: CLR   
          U     L      6.1
          SAVE  
          SRD   2
          SAVE  
          SAVE  
          L     #DAY
          TAK   
          T     LD     8
          TAK   
          L     #MTH_OFS
          +I    
          SPO   I00b
          SPA   I00c
    I00b: CLR   
          =     L      6.1
    I00c: ITD   
          CLR   
          U     L      6.1
          SAVE  
          L     LD     8
          +D    
          SPO   I00d
          SPA   I00e
    I00d: CLR   
          =     L      6.1
    I00e: T     #count
          CLR   
          U     L      6.1
          SAVE  
          L     #MONTH
          L     3
          <I    
          L     #YEAR
          T     LW     8
          =     L      6.2
          UC    FC   194
                P#L 8.0
                P#L 6.3
          U     L      6.2
          U     L      6.3
          SPBN  A7eb
          L     #count
          U     L      6.1
          SAVE  
          L     L#1
          -D    
          SPO   I00f
          SPA   I010
    I00f: CLR   
          =     L      6.1
    I010: L     L#7305
          -D    
          SPO   I011
          SPA   I012
    I011: CLR   
          =     L      6.1
    I012: PUSH  
          UD    DW#16#FFFF0000
          TAK   
          SPZ   I013
          CLR   
          =     L      6.1
    I013: T     #RET_VAL
          CLR   
          U     L      6.1
          SAVE  
          SPA   A7ec
    A7eb: L     #count
          CLR   
          U     L      6.1
          SAVE  
          L     L#7305
          -D    
          SPO   I014
          SPA   I015
    I014: CLR   
          =     L      6.1
    I015: PUSH  
          UD    DW#16#FFFF0000
          TAK   
          SPZ   I016
          CLR   
          =     L      6.1
    I016: T     #RET_VAL
          CLR   
          U     L      6.1
          SAVE  
    A7ec: CLR   
          U     L      6.1
          SAVE  
          BE

  10. #10
    Registriert seit
    22.11.2006
    Ort
    CH
    Beiträge
    3.618
    Danke
    776
    Erhielt 646 Danke für 492 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Und wieso geht sie auf Stop? Das steht im Buffer.

    mfG René

Ähnliche Themen

  1. Date To String
    Von ottokar24 im Forum Simatic
    Antworten: 15
    Letzter Beitrag: 13.04.2016, 14:20
  2. Uhzeit zusammensetzten in TOD
    Von Sony15ab im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 23.08.2011, 13:33
  3. Aus Variable DATE Jahr, Monat & Tag auslesen
    Von webinspirit im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 11.04.2009, 23:51
  4. Jahr aus Format Date ermitteln
    Von Gerri im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 08.01.2009, 11:31
  5. Time and Date
    Von paula23 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 22.10.2008, 08:50

Lesezeichen

Berechtigungen

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