Autor Thema: Fehler in CALENDAR_CALC und DST / Error in CALENDAR_CALC and DST  (Gelesen 6834 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline TomB

  • Newbie
  • *
  • Beiträge: 1
    • Profil anzeigen
    • E-Mail
Bei einer DST Änderung werden die Aufgang- und Untergangszeiten falsch kalkuliert, weil sie um Mitternacht berechnet werden. Sie sollten aber nach dem Zeitwechsel neu aktualisiert werden. Ich schlage folgende Lösung vor:

On DST change the sunrise and sunset times are wrong calculated, because they are computed at midnight. They should be updated after the local time change. I suggest following solution:

FUNCTION_BLOCK CALENDAR_CALC
...
VAR_TEMP
  ...
  old_DST_ON : BOOL;
END_VAR

...
  (* run once per hour *)
  tmp := HOUR(txcal.LTOD);
  IF  tmp <> last_hour THEN
    old_DST_ON := tXCAL.DST_ON;
    tXCAL.DST_ON := DST(tXCAL.UTC) AND txcal.DST_EN;
    IF tXCAL.DST_ON <> old_DST_ON THEN
        // update sun times on DST change
        tXCAL.SUN_RISE := DINT_TO_TOD(TOD_TO_DINT(sun.sun_rise) + tXCAL.OFFSET * 60000 + SEL(G:=tXCAL.DST_ON,IN0:=DINT#0,IN1:=3600000));
        tXCAL.SUN_SET := DINT_TO_TOD(TOD_TO_DINT(sun.sun_set) + tXCAL.OFFSET * 60000 + SEL(G:=tXCAL.DST_ON,IN0:=DINT#0,IN1:=3600000));
        tXCAL.SUN_MIDDAY := DINT_TO_TOD(TOD_TO_DINT(sun.MIDDAY) + tXCAL.OFFSET * 60000 + SEL(G:=tXCAL.DST_ON,IN0:=DINT#0,IN1:=3600000));
    END_IF;
    last_hour := tmp;
  END_IF;
...


Ich benutze OSCAT schon länger und bei jedem DST Wechsel musste ich manuell eingreifen. Hoffentlich kann meine Änderung jemanden hilfreich sein.
I use OSCAT for a long time and at every DST change I had to take a manual action. Hopefully my change can be helpful for someone.
« Letzte Änderung: 18. November 2015, 13:42:17 von TomB »

Offline tugsi

  • Newbie
  • *
  • Beiträge: 9
    • Profil anzeigen
    • E-Mail
Re: Fehler in CALENDAR_CALC und DST / Error in CALENDAR_CALC and DST
« Antwort #1 am: 11. April 2016, 15:47:45 »
Ich war schon lange nicht mehr Online hier, weil mein Projekt im "Provisorium" ja gut lief, aber ich nun mal so langsam das Ein oder Andere ändern bzw anpassen möchte.
Das Problem mit dem DST hatte ich auch immer und es nervte, aber es war ja nur an 2 Tagen im Jahr, konnte also damit bisher leben.

Ich schaue mir das mal an und werde es mal einbinden.
Klingt gut.

Danke dafür!

Offline david

  • Newbie
  • *
  • Beiträge: 22
    • Profil anzeigen
Re: Fehler in CALENDAR_CALC und DST / Error in CALENDAR_CALC and DST
« Antwort #2 am: 05. Juni 2016, 21:52:14 »
The night calculation is true for one scan on startup of the plc.
The night calculation must be moved after the 'run once per day' calculations