OP177B Uhrzeit und Datum

Hallo
ich hab das mal mit einem FB realiesiert, hab den mal als Quelle reingestellt.

Code:
    Monat : BYTE ; //Monat (1-12)
    Jahr : BYTE ; //Jahr (80-99/0-29)
    Reserviert_5 : BOOL ; 
   END_STRUCT ; 
  END_STRUCT ; 
END_VAR
VAR_TEMP
  retval : INT ; 
END_VAR
BEGIN
NETWORK
TITLE =Auftragsnummer an VISU senden
// Auftrag "41" an die Visualisierung senden, damit diese ihre Zeit im Auftragsfach aktualisiert
      L     41; 
      T     #Bereichszeiger.Steuerungsauftrag.Autragsnummer; 
NETWORK
TITLE =Datum/Uhrzeit von der Visu umkopieren
      L     P##Datum_Uhrzeit_VISU; 
      LAR1  ; 
      L     #Bereichszeiger.Datum_Uhrzeit.Jahr; 
      T     DIB [AR1,P#0.0]; 
      L     #Bereichszeiger.Datum_Uhrzeit.Monat; 
      T     DIB [AR1,P#1.0]; 
      L     #Bereichszeiger.Datum_Uhrzeit.Tag; 
      T     DIB [AR1,P#2.0]; 
      L     #Bereichszeiger.Datum_Uhrzeit.Stunde; 
      T     DIB [AR1,P#3.0]; 
      L     #Bereichszeiger.Datum_Uhrzeit.Minute; 
      T     DIB [AR1,P#4.0]; 
      L     #Bereichszeiger.Datum_Uhrzeit.Sekunde; 
      T     DIB [AR1,P#5.0]; 
      L     0; // Wert für ms, hier auf 0 da WinCC flexible keine ms schreibt
      T     DIB [AR1,P#6.0]; 
      L     #Bereichszeiger.Datum_Uhrzeit.Wochentag; 
      T     DIB [AR1,P#7.0]; 
NETWORK
TITLE =SPS-Zeit aktualisieren
      U     #Datum_Uhrzeit_setzen; 
      SPBN  goto; 
      CALL "SET_CLK" (
           PDT                      := #Datum_Uhrzeit_VISU,
           RET_VAL                  := #retval);
      SET   ; 
      R     #Datum_Uhrzeit_setzen; 
goto: NOP   0; 
END_FUNCTION_BLOCK

Den bindest du dann an WinCC an unter Verbindungen Bereichszeiger.
Da kannst du Datum Uhrzeit aktivsetzen und den dazugehörigen IDB anfügen.

Dann habe ich ein Bit (#Datum_Uhrzeit_setzen), welches die von dir einstellbare Zeit setzt und in die CPU Zeit überträgt.

Achso hab ich vergessen der SET_CLK ist der SFC0 von sienens.
 
Zuletzt bearbeitet:
Zurück
Oben