OSCAT Forum

oscat.lib => Bestehende Module / Existing Modules => Thema gestartet von: matt am 05. April 2011, 21:30:42

Titel: Problem mit CALENDAR_CALC
Beitrag von: matt am 05. April 2011, 21:30:42
Bibliothek: oscat_basic_331_codesys2.lib
calendar_calc Version 1.5 (2.Februar 2011)

Hallo zusammen,
die Berechnung von calendar.night in CALENDAR_CALC scheint nicht korrekt zu funktionieren. Dies wird gemacht:

   utod := DT_TO_TOD(xcal.UTC);
.
.
   xcal.night := utod < xcal.SUN_RISE OR utod > xcal.SUN_SET;

Soweit ich das sehe, liegen SUN_RISE und SUN_SET aber in der lokalen Zeit vor.

Gruß
matt
Titel: Re:Problem mit CALENDAR_CALC
Beitrag von: hugo am 06. April 2011, 08:55:22
ja du hast völlig recht, das werden wir im nächsten release anpassen
Titel: Re: Problem mit CALENDAR_CALC
Beitrag von: D-Platoon am 07. Mai 2020, 02:24:38
Auch wenn das Thema schon fast 10 Jahre alt ist, habe ich soeben auch einen Bug entdeckt:
Es steht da in Zeile 32 folgendes
sun(latitude := XCAL.LATITUDE, longitude := xcal.LONGITUDE, utc := DT_TO_DATE(xcal.UTC), H := H);
Der Programmcode wird beim Tageswechsel ausgeführt. Da wir ja aber hier in Deutschland den neuen Tag früher beginnen als UTC, werden die Werte vom Vortag berechnet. Wir hinken also immer um einen Tag hinterher.

Ich hab das bei mir schon geändert. Wäre aber auf jeden Fall auch ein Thema für ein nächstes Release. Dabei die Frage: ist da in absehbarer Zeit was geplant?
Titel: Re: Problem mit CALENDAR_CALC
Beitrag von: peewit am 10. Mai 2020, 11:36:50
ok

hast du bei UTC dann dein LOKAL-DATE angegeben ?

kannst du auch deine änderung-vorschlag posten


Titel: Re: Problem mit CALENDAR_CALC
Beitrag von: mattsches am 13. Mai 2020, 06:33:17
Änderungsvorschlag:

SUN_TIME, Zeile 5 der Klarheit halber ändern von
UTC : DATE; (* world time *)in
DAY : DATE; (* date of day to calculate times for *)
und Zeile 32 in CALENDAR_CALC von
sun(latitude := XCAL.LATITUDE, longitude := xcal.LONGITUDE, utc := DT_TO_DATE(xcal.UTC), H := H);in
sun(latitude := XCAL.LATITUDE, longitude := xcal.LONGITUDE, day := xcal.LDATE, H := H);
Dann wird der Baustein weiterhin um Mitternacht Lokalzeit getriggert, rechnet aber die Sonnenstandszeiten für den aktuellen Tag und nicht für den Vortag.
Titel: Re: Problem mit CALENDAR_CALC
Beitrag von: D-Platoon am 17. Mai 2020, 00:25:35
Sorry, hab einige Tage nicht hier rein geschaut.
Aber mattsches hat die Lösung, welche ich auch benutzt hab.
Dann gibt es nur noch zwei Tage im Jahr, an denen die Berechnung um eine Stunde nicht stimmt. Und das sind dann die Tage der Zeitumstellung. Da um Mitternacht berechnet wird und die Zeitumstellung erst später erfolgt, wird dies nicht mehr berücksichtigt.
Das hab ich durch folgenden Code in Zeile 22..24 angepasst:
IF dtemp <> last_day OR XCAL.DST_ON <> bDSTOn THEN
last_day := dtemp;
bDSTOn := XCAL.DST_ON;