11
« am: 28. März 2016, 20:59:09 »
Hallo,
nach Wechsel auf die Sommerzeit bleibt der Sonnenaufgang und der Sonnenuntergang in der gleichen schönen Folge wie in den letzten Tagen der Winterzeit:
Log-Werte:
25.03.2016 00:00:00: Neuberechnung: Sonnenuntergang: 1849
26.03.2016 00:00:00: Neuberechnung: Sonnenuntergang: 1851
27.03.2016 00:00:00: Neuberechnung: Sonnenuntergang: 1853
28.03.2016 00:00:00: Neuberechnung: Sonnenuntergang: 1854
28.03.2016 09:48:03: Neuberechnung: Sonnenuntergang: 1856 hier sollte spätestens 1956 stehen (oder?)
Das Programm:
var
SONNENSTAND: SUN_TIME;
Time_Zone_Verschiebung:WORD:=60; (* 60 Minuten Verschiebung ist der Unterschied von Greenwich-Time zu Berliner Zeit (Zeitzone) ,
nur so stimmen Sonnenauf und Untergang mit der Praxis bei Winterzeit überein *)
DT_Sonnenuntergang:DT;
DT_Sonnenaufgang:DT;
DT_Sonnenuntergang_DST:DT;
DT_Sonnenaufgang_DST:DT;
heute:DATE; (*Local time *)
heute_utc: DT; (* Weltzeit *)
end_var
....
heute:=DT_TO_DATE(ActDateAndTime); (* ActDateAndTime wird in PLC_DaylightSaving (extra Task) ermittelt *)
heute_utc:=LTIME_TO_UTC(LTIME:=ActDateAndTime,DST:=Sommerzeit,TIME_ZONE_OFFSET:=60);
SONNENSTAND( H:=hoehe, Latitude:=50.7, Longitude:=12.58, UTC:=DT_TO_DATE(heute_utc) );
(* Nachfolgend bringt DST_ENABLE keinen Unterschied ob true oder false eingestellt, wohl aber der Time_Zone_Offset *)
DT_Sonnenuntergang:=DATE_TO_DT(heute) + DT_TO_TIME(UTC_TO_LTIME
(UTC:=TOD_TO_DT(SONNENSTAND.SUN_SET),DST_ENABLE:=FALSE,Time_Zone_Offset:=Time_Zone_Verschiebung));
DT_Sonnenaufgang := DATE_TO_DT(heute) + DT_TO_TIME(UTC_TO_LTIME
(UTC:=TOD_TO_DT(SONNENSTAND.SUN_RISE),DST_ENABLE:=FALSE,Time_Zone_Offset:=Time_Zone_Verschiebung));
(* Nachfolgend bringt DST_ENABLE keinen Unterschied ob true oder false eingestellt (Sommerzeit zur Zeit TRUE),
wohl aber der Time_Zone_Offset *)
DT_Sonnenuntergang_DST:=DATE_TO_DT(heute) + DT_TO_TIME(UTC_TO_LTIME
(UTC:=TOD_TO_DT(SONNENSTAND.SUN_SET),DST_ENABLE:=Sommerzeit,Time_Zone_Offset:=Time_Zone_Verschiebung));
DT_Sonnenaufgang_DST := DATE_TO_DT(heute) + DT_TO_TIME(UTC_TO_LTIME
(UTC:=TOD_TO_DT(SONNENSTAND.SUN_RISE),DST_ENABLE:=Sommerzeit,Time_Zone_Offset:=Time_Zone_Verschiebung));
Die Sommerzeit ist der Umrechnung DT_TO_TIME vollkommen egal (siehe Anhang).
Hat jemand eine Idee ??
Viele Grüße
Thomas
[gelöscht durch Administrator]