Beiträge anzeigen

Diese Sektion erlaubt es ihnen alle Beiträge dieses Mitglieds zu sehen. Beachten sie, dass sie nur solche Beiträge sehen können, zu denen sie auch Zugriffsrechte haben.


Themen - TomB

Seiten: [1]
1
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.

Seiten: [1]