Sommer- Winterzeitumstellung mit S7-200 CPU221

cozmik

Level-1
Beiträge
15
Reaktionspunkte
4
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Tag,

ich habe hier eine S-7 200 cpu221 mit Uhrmodul zur verfügung. Dieses Modell kann noch keine Sommer- Winterzeit Umschaltung. Hat jemand vieleicht eine Idee wie man trotzdem die Umstellung realisieren könnte ohne dies manuell zu tun? Ich bin noch relativ neu auf diesem Gebiet und über jede hilfe dankbar :)

Viele Grüße cozmik
 
kannst du die zeit mit READ_RTC auslesen? ...kenne das modul nämlich nicht :rolleyes:

umschaltung zur sommerzeit ist IMHO am letzten März-wochenende, also vergleichst du die ausgelesene zeit zu erst auf den monat, wenn dieser nicht märz ist, überspringst du die nachfolgende routine. wenn märz ist vergleichst du auf datum und wochentag, der letzte sonntag liegt irgendwo zwischen dem 25. und 31. märz. wenn sonntag ist schriebst du um 2 deine neue uhrzeit und merkst dir, dass du auf sommerzeit umgestellt hast.

winterzeit ist letztes oktoberwochenende, da stellst du um, wenn das sommerzeitbit true ist und setzt dieses zurück (auf sommerzeit stellst du nur um, wenn das sommerzeit-bit false ist)

uhrzeit schreiben geht mit SET_RCD ... die hilfe im microwin ist recht ausführlich zu aufbau und funktion dieser beiden funktionen
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Vierlagig,

ja funktioniert mit read_rtc das auslesen. Ich hab über die Suchfunktion noch ne Formel zur Sommer Winterzeit Berechnung gefunden von Mr.Spok die funktioniert aber meiner Meinung nach nicht.

Code:
Formel von Mr.Spok:
[B]Formel zur Berechnung des Beginns der europäischen [COLOR=#ff0000]Sommerzeit[/COLOR][/B]
 
Sonntag (31 - (5*Jahr/4 + 4) mod 7) März um 01.00 Uhr UTC
(Gültig bis 2099).

Hierbei bekomm ich für das Jahr 2008 schon einen falschen Wert raus nämlich den 31. Sonntag war aber der 30. Ich probier das Morgen mal nach deinem System aus hab jetzt gleich Feierabend. Vielen dank noch für die Hilfe.
 
So da bin ich wieder :)
Mußte Gestern noch ne Klausur schreiben. So du kommst auf 29. Hmm kannst du mir das mal vorrechnen? Ich Rechen dir mal vor wie ich das machen würde.

Code:
Berechnung für das Jahr 2008 also als Jahr setz ich 8 ein.
Ausgangsformel: (31 - (5*Jahr/4 + 4) mod 7)
 
Ich würde wie folgt Rechnen:
 
(31 - (5*8/4 + 4) mod 7)
=(31 - (10 + 4) mod 7)
=(31 - 14 mod 7) => so 14 mod 7 ist Meiner Meinung nach 0
=31-0
=31

Kann das jemand bestätigen oder dementieren? Vieleicht hab ich auch einen dicken Denkfehler da drin.
Übrigens der Link zu dem Thread aus dem die Formel ist ist hier:
http://www.sps-forum.de/showthread.php?t=19675&highlight=sommerzeit
 
So ich habs hinbekommen :sm17:

Für alle die irgendwann mal das selbe Problem haben hier die lösung:

Die Formel zur Ausgabe des Tages an dem die Uhr im März auf Sommerzeit gestellt wird ( letzter Sonntag im Monat) lautet:

Code:
[B]31-((Jahr + 5 + (Jahr/4)) mod 7)[/B]

Die Formel für den Tag an dem zurückgestellt wird (letzter Sonntag im Oktober) lautet:

Code:
[B]31-((Jahr + 2 + (Jahr/4)) mod 7)[/B]

Danke nochmal für Eure Hilfe

Gruß cozmik
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

habe gerade diesen Thread gelesen und bin auch auf der Suche nach dieser Formel.
Kann mir jemand erklären was in der Formel

31-((Jahr + 5 + (Jahr/4)) mod 7)

"mod 7" bedeutet?

Danke
Gruß
Tompson
 
Ahh.
Bei Wiki hatte ich auch geschaut, aber wenn man da mod eingibt, kommen da einige Antworten. Und da dann die richtige zu finden.....


Aber vielen Dank!
 
Hallo

ich wollte die umstellung der Sommerzeit in eine DT schreiben. Hierzu verwende ich eine AT sich auf eine DT Variable und schreibe die Tag und da Jahr in die Variable. Leider erhalte ich auf dem Panel nur #######################


Code:
 // Berechnung der UmstellungsTag Sommerzeit
    DT_TIME1:=DT#2010-03-01-02:00:00.0;
    AT_DT_TIME1.JAHR:=WORD_TO_BYTE(INT_TO_BCD (AKTUELLE_ZEIT.Jahr));
    TAG_Sommerzeit:=31-((AKTUELLE_ZEIT.Jahr + 5 + (AKTUELLE_ZEIT.Jahr/4)) MOD 7);
    AT_DT_TIME1.TAG:=WORD_TO_BYTE(INT_TO_BCD (TAG_Sommerzeit));
    AKTUELLE_ZEIT.Umstellungs_Sommerzeit:=DT_TIME1;

was mache ich falsch ?
 
Zurück
Oben