Autor Thema: Problem mit CALENDAR_CALC  (Gelesen 3125 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

matt

  • Gast
Problem mit CALENDAR_CALC
« 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

Offline hugo

  • Global Moderator
  • *****
  • Beiträge: 2 143
    • Profil anzeigen
Re:Problem mit CALENDAR_CALC
« Antwort #1 am: 06. April 2011, 08:55:22 »
ja du hast völlig recht, das werden wir im nächsten release anpassen

Offline D-Platoon

  • Newbie
  • *
  • Beiträge: 27
    • Profil anzeigen
Re: Problem mit CALENDAR_CALC
« Antwort #2 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?

Offline peewit

  • Moderator
  • *****
  • Beiträge: 2 352
    • Profil anzeigen
Re: Problem mit CALENDAR_CALC
« Antwort #3 am: 10. Mai 2020, 11:36:50 »
ok

hast du bei UTC dann dein LOKAL-DATE angegeben ?

kannst du auch deine änderung-vorschlag posten



Offline mattsches

  • Sr. Member
  • ****
  • Beiträge: 251
    • Profil anzeigen
Re: Problem mit CALENDAR_CALC
« Antwort #4 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.

Offline D-Platoon

  • Newbie
  • *
  • Beiträge: 27
    • Profil anzeigen
Re: Problem mit CALENDAR_CALC
« Antwort #5 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;