DATE zusammensetzten aus T M J

Sony15ab

Level-1
Beiträge
6
Reaktionspunkte
0
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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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.
 
Zuletzt bearbeitet:
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
 
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.
 
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...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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
 
Zurück
Oben