Step 7 Uhrzeit

heli100

Level-2
Beiträge
68
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo;

wie kann ich die mit SFC1 ausgelesene Uhrzeit in einem DB1 in der Variablen "Beginn_Zeit" sichern und von dieser Variablen später die Stunde und Minute auslesen?
CALL SFC 1
RET_VAL:=MW0
CDT:=#Datum_und_Zeit (Typ Date_and_time)

Im DB1:
Schicht1 STRUCT
Beginn_Schicht DATE_AND_TIME

Danke
 
kopieren mit sfc20

auslesen / auswerten
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   //LB 12 im OB1
      T     DB80.DBB   10               //jahr
      L     LB     1   //13
      T     DB80.DBB   11               //monat
      L     LB     2   //14
      T     DB80.DBB   12               //tag
      L     LB     3   //15
      T     DB80.DBB   13               //stunde
      L     LB     4   //16
      T     DB80.DBB   14               //minute
      L     LB     5   //17
      T     DB80.DBB   15               //sekunde
      L     LB     6   //18
      T     DB80.DBB   16               //milisekunden
      L     LB     7   //19
      T     DB80.DBB   17               //inke tetrade: milisekunden; rechte tetrade: wochentag 1=sonntag
oder du lädst dir von meinerr hp das runterr. splitten date_and_time auf
http://lischis-home.selfhost.eu/php4/download.php?pfad=files/SPS/S7/&datei=Split_dt.zip
 

Anhänge

  • Zwischenablage02.jpg
    Zwischenablage02.jpg
    44 KB · Aufrufe: 19
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Kopieren: Mit BLKMOV von #Datum_und_Zeit nach "DB1".Beginn_Zeit kopieren, oder "DB1".Beginn_Zeit gleich direkt am Ausgang CDT des SFC1 angeben.

Schau Dir in der Step7-Hilfe das Format des Datentyps DATE_AND_TIME an. Da findest Du, daß Stunde und Minute getrennt im 4. und 5. Byte im BCD-Format vorliegen.

Mit der Forumssuche nach "DATE_AND_TIME stunde minute" findest Du viele Programmbeispiele für die Zerlegung des DATE_AND_TIME-Formats, z.B. dieses und dieses


Alternativ kann man auch mit dem FC8 "DT_TOD" die Uhrzeit als TIME_OF_DAY (ms seit 0:00) aus dem DATE_AND_TIME extrahieren. Danach die Stunden und Minuten mit einfacher Mathematik aus dem TOD herausrechnen:
Code:
TOD_Uhrzeit = DT_TOD("DB1".Beginn_Zeit)
Minuten = TOD_Uhrzeit / 60000
Minute = Minuten MOD 60
Stunde = Minuten / 60

Harald
 
Zurück
Oben