SommerWinterzeit berechnen

  • Hallo,


    ich möchte gerne eine Zeitumstellung am BP ausgeben, wenn es soweit ist. Damit der Bediener die Zeit im TP manuel umstellen kann (da es automatisch nicht geht).


    Ein Ex-Kollege hatte mal eine Funktion geschrieben.
    Diese Funk. meldet auch 2 mal im Jahr die Umstellung, aber an den falschen Tagen/Monaten.


    FUNC bool fSommerWinterTag ()

    VAR bool bLocHilf;
    VAR bool bLocZeitUmstellen;
    VAR bool bLocWechselMerker;
    VAR num nLocSommer;
    VAR num nLocWinter;
    VAR num nLocSommerZWB;
    VAR num nLocWinterZWB;
    VAR string strLocPart;
    VAR num nLocZahl1;
    VAR num nLocZahl2;
    VAR num nLocZahl3;
    VAR num strLocStdNeu;

    !--Aktuelle Uhrzeit und Datum auslesen
    strUhrNeu:=CTime();
    strDatNeu:=CDate();
    bLocHilf:=StrToVal(StrPart(strDatNeu,9,2),nTagNeu);
    bLocHilf:=StrToVal(StrPart(strDatNeu,6,2),nMonNeu);
    bLocHilf:=StrToVal(StrPart(strDatNeu,1,4),nJahNeu);
    bLocHilf:=StrToVal(StrPart(strUhrNeu,1,2),strLocStdNeu);
    !
    nLocSommerZWB:=(nJahNeu-2002)+(Trunc((nJahNeu-2000)*0.25));
    nLocSommer:=31-(Round(7*((nLocSommerZWB/7)-Trunc(nLocSommerZWB/7))));
    nLocWinterZWB:=(nJahNeu-2004)+(Trunc((nJahNeu-2004)*0.25));
    nLocWinter:=31-(Round(7*((nLocWinterZWB/7)-Trunc(nLocWinterZWB/7))));
    !
    nLocZahl1:=(nMonNeu)+(nTagNeu/100);
    nLocZahl2:=(nMonNeu)+(nLocSommer/100);
    nLocZahl3:=(nMonNeu)+(nLocWinter/100);
    IF (nLocZahl1>=nLocZahl2) AND (nLocZahl1<nLocZahl3) THEN
    nStdNeu:=strLocStdNeu;
    strLocPart:=StrPart(strUhrNeu,3,6);
    strUhrNeu:=NumToStr(nStdNeu,0)+strLocPart;
    bLocZeitUmstellen:=TRUE;
    ELSE
    nStdNeu:=strLocStdNeu;
    strLocPart:=StrPart(strUhrNeu,3,6);
    strUhrNeu:=NumToStr(nStdNeu,0)+strLocPart;
    !--Merker, dass man die Zeit beim Start von Main einstellen soll.
    !--Die Zeit sollte (egal ob im Sommer oder Winter) nach Winterzeit (für Michael: nach Normalzeit)
    !--eingestellt werden, sonnst wird das ganze verkehrt abgespeichert!
    bLocZeitUmstellen:=FALSE;
    ENDIF
    bLocWechselMerker:=bZeitUmstellen<>bLocZeitUmstellen;
    bZeitUmstellen:=bLocZeitUmstellen;
    RETURN bLocWechselMerker;
    !
    ENDFUNC


    Kann mir da einer Helfen? :nocheck:

  • ANZEIGE
  • Ach, das war ja auch so'n Sch...., irgendwas hamma da vergessn.
    Wolltste mal meine neue Kreation in der Hinsicht testen? Sollte deutlich besser funktionieren und kann auch mehr. Schicke ich aber nur per Mail, ist 'ne Beta-Version und ästhetisch peinlich.


    Michael

Hilfe und Support für ABB Roboter Programmierung, Konfiguration, Inbetriebnahme finden Sie hier im ABB Roboter Forum. ABB Rapid Programmierung ist einfach, die Roboterforum Community hilft sehr gerne.

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden