Systemzeit setzen S7

chefren_new

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

versuche die Systemzeit ueber Wincc Flex zusetzen.

Uhrzeit im Tod Format hab ich bereits es fehlt noch das Datum.
Habe 3 Eingabefleder in Wincc Flex JAHR MONAT TAG aber leider keine Ahnung wie ich aus diesen 3 Daten ein DATE Format bekomme.

zum Testen habe fuer die FC FC 3 D_TOD_DT das Datum nich Variabel
und Time Variabel. nur leider geht die SPS auf Fehler.

Ich denke es lieget am Ausgabewert der FC 3 D_TOD_DT
Habe den Ausgabe Wert RET_VAL als Temp Variable DT erstellt das ist eventuell Falsch, in der FC Beschreibung steht
"Der Rückgabewert kann nur mit einer symbolisch definierten Variablen belegt werden".

Wie kann ich das verstehen.

Ich bitte um Hilfe fuer das Problem Datum und fuer die FC FC 3 D_TOD_DT

DANKE

Gruss
 
Hallo,
DATE bei Step7 gibt an, wieviele Tage seit dem 01.01.1990 vergangen sind. Du müßtest dir also deine Einzel-Eingabe entsprechend umrechnen - und die Schaltjahre dabei berücksichtigen ...

Gruß
LL
 
Hallo

Kann jetzt die Uhrzeit setzen aber leider hab ich noch immer keine Ahnung wie ich ein DATE bekomme.
In Wincc Flex hab ich 3 Eingabefelder mit Jahr Monat und Tag.

Kann mir Jemand sagen wie ich aus diesen 3 Felder ein DATE Format bekomme.

Gruß
 
... schade, dass du meinen Beitrag nicht gelesen hast (Beitrag #2 in diesem Thread) - oder ist dir daran noch etwas unklar ?
 
Nein ...
es gibt keinen mir bekannten einfacheren Weg.
Hier mal ein Code-Beispiel, wie das in SCL aussehen würde. Daraus könntest du dir auch einen AWL-Code bauen.
Code:
FUNCTION FC432 : VOID 
//     Bausteinparameter
 
VAR_INPUT 
   Jahr              : INT ;       // Jahr des Vorgabe-Date's
   Monat             : INT ;       // Monat des Vorgabe-Date's
   Tag               : INT ;       // Tag des Vorgabe-Date's
END_VAR
VAR_IN_OUT 
END_VAR
VAR_OUTPUT
   OUT_Date : DATE ;               // umgewandeltes Datum 
      i_Date AT OUT_Date : INT ;
   Wochentag         : INT ;       // Wochentag des Vorgabe-Date's  [1=So - 7=Sa]
   Schaltjahr        : INT ;       // Schaltjahr des Vorgabe-Date's
   Jahrestag         : INT ;       // Tag im Jahr des Vorgabe-Date's
   Kalenderwoche     : INT ;       // Kalenderwoche des Vorgabe-Date's
END_VAR
VAR_TEMP
   h_Jahr : INT ; 
   Anz_SJ : INT ; 
   Diff_J : INT ;
END_VAR
 
BEGIN
   h_Jahr := (Jahr MOD 100) + 10 ; // Bezug auf 1990
   
   i_Date := h_Jahr * 365 ;
   IF h_Jahr > 2 THEN i_Date := i_Date + ((h_Jahr -2) / 4) ; END_IF ;
   Schaltjahr := 0 ; IF (h_Jahr MOD 4) = 0 THEN Schaltjahr := 1 ; END_IF ;
   
   Jahrestag := Tag ;
   IF Monat >  1 THEN Jahrestag := Jahrestag + 31 ; END_IF ;
   IF Monat >  2 THEN Jahrestag := Jahrestag + 28 + Schaltjahr ; END_IF ;
   IF Monat >  3 THEN Jahrestag := Jahrestag + 31 ; END_IF ;
   IF Monat >  4 THEN Jahrestag := Jahrestag + 30 ; END_IF ;
   IF Monat >  5 THEN Jahrestag := Jahrestag + 31 ; END_IF ;
   IF Monat >  6 THEN Jahrestag := Jahrestag + 30 ; END_IF ;
   IF Monat >  7 THEN Jahrestag := Jahrestag + 31 ; END_IF ;
   IF Monat >  8 THEN Jahrestag := Jahrestag + 31 ; END_IF ;
   IF Monat >  9 THEN Jahrestag := Jahrestag + 30 ; END_IF ;
   IF Monat > 10 THEN Jahrestag := Jahrestag + 31 ; END_IF ;
   IF Monat > 11 THEN Jahrestag := Jahrestag + 30 ; END_IF ;
   
   i_Date := i_Date + Jahrestag ;
   Wochentag := (i_date MOD 7) + 1 ;
   Kalenderwoche := (Jahrestag + 7 + 3 - Wochentag) / 7 ;

END_FUNCTION
Gruß
LL
 
Zurück
Oben