Uhzeit zusammensetzten in TOD

Sony15ab

Level-1
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo

Ich habe die aktuelle Uhrzeit in einem DB jeweils einzeln als
Stunde
Minute
Sekunde

(wird empfangen von einem übergeordneten System (PC) )

jeweils als Int. wert.


Ist leider nur so möglich

wie setzte ich die "einzelnen" Teile zusammen um ein S7 TOD zu erhalten ?


im nächsten schritt muss auf die selbe weise Jahr Monat und Tag zu einem S7 Datum zusammengesetzt werden


gibt es für das Problem schon nen fertigen Baustein oder muss "gebastelt" werden


Danke schonmal an alle


Heiko
 
Hallo

Standard-library

IEC Function Blocks --> FC3,FC4,FC5,FC6,FC7,FC8

Da sollte was passendes dabei sein.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... ansonsten ist "etwas basteln" ja auch nicht so das Thema.

TOD ist die Anzahl der Millisekunden, die seit 0:00 Uhr des aktuellen Tages vergangen sind.

DATE sind die Tage, die seit dem 01.01.1990 vergangen sind ...

Gruß
Larry
 
weiterhelfen wird dir auch das
musst halt nur 'rückwärts' denken :ROFLMAO:
Code:
      CALL  SFC    1
       RET_VAL:=MW240
       OUT0   :=#ag_jetzt_datum_zeit    //LB 0 bis 7; typ: dt
      NOP   0
//variablen liegen im hex-format vor
      L     LB     0   
      T     DB80.DBB   10               //jahr
      L     LB     1   
      T     DB80.DBB   11               //monat
      L     LB     2   
      T     DB80.DBB   12               //tag
      L     LB     3   
      T     DB80.DBB   13               //stunde
      L     LB     4   
      T     DB80.DBB   14               //minute
      L     LB     5   
      T     DB80.DBB   15               //sekunde
      L     LB     6   
      T     DB80.DBB   16               //milisekunden
      L     LB     7   
      T     DB80.DBB   17               //linke tetrade: milisekunden; rechte tetrade: wochentag 1=sonntag
 
So haben wir das damals gemacht: (So zu Zeiten der RK512 Kopplung)

Code:
// Uhrzeit übernehmen vom Leitsystem
// auf neue Uhrzeit prüfen
// Wort 14 wird auf FFFF gesetzt wenn neue Uhrzeit übertragen wurde

      L     "Zeit und Datum".Time_and_Date.U_Flag
      L     0
      <>I   
      SPBN  ende

// Setzen der Uhrzeit

// Wort 14 zurücksetzen auf 0

      L     0
      T     "Zeit und Datum".Time_and_Date.U_Flag

// Jahr ausrechnen
// IDS-System hinkt 28 Jahre hinterher
// Jahr wird in Byte 0 und 1 übergeben

      L     "Zeit und Datum".Time_and_Date.Jahr
      L     28
      +I    
      L     2000
      -I    
      ITB   
      T     LB     0

// Monat übergeben

      L     "Zeit und Datum".Time_and_Date.Monat
      ITB   
      T     LB     1

// Tag übergeben

      L     "Zeit und Datum".Time_and_Date.Tag
      ITB   
      T     LB     2

// Stunde übergeben

      L     "Zeit und Datum".Time_and_Date.Stunde
      ITB   
      T     LB     3

// Minute übergeben

      L     "Zeit und Datum".Time_and_Date.Minute
      ITB   
      T     LB     4

// Sekunde übergeben

      L     "Zeit und Datum".Time_and_Date.Sekunde
      ITB   
      T     LB     5

// Neue Uhrzeit in CPU schreiben

      CALL  "SET_CLK"
       PDT    :=#Uhrzeit
       RET_VAL:=#val

// Fertig

ende: NOP   0

Uhrzeit ist ´ne Temp. Variable vom Typ DateAndTime ab LB0 ...
 
Zuletzt bearbeitet:
Zurück
Oben