oscat.lib > Bestehende Module / Existing Modules
Problem mit CALENDAR_CALC
matt:
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
hugo:
ja du hast völlig recht, das werden wir im nächsten release anpassen
D-Platoon:
Auch wenn das Thema schon fast 10 Jahre alt ist, habe ich soeben auch einen Bug entdeckt:
Es steht da in Zeile 32 folgendes
--- Code: ---sun(latitude := XCAL.LATITUDE, longitude := xcal.LONGITUDE, utc := DT_TO_DATE(xcal.UTC), H := H);
--- Ende Code ---
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?
peewit:
ok
hast du bei UTC dann dein LOKAL-DATE angegeben ?
kannst du auch deine änderung-vorschlag posten
mattsches:
Änderungsvorschlag:
SUN_TIME, Zeile 5 der Klarheit halber ändern von
--- Code: --- UTC : DATE; (* world time *)
--- Ende Code ---
in
--- Code: --- DAY : DATE; (* date of day to calculate times for *)
--- Ende Code ---
und Zeile 32 in CALENDAR_CALC von
--- Code: ---sun(latitude := XCAL.LATITUDE, longitude := xcal.LONGITUDE, utc := DT_TO_DATE(xcal.UTC), H := H);
--- Ende Code ---
in
--- Code: ---sun(latitude := XCAL.LATITUDE, longitude := xcal.LONGITUDE, day := xcal.LDATE, H := H);
--- Ende Code ---
Dann wird der Baustein weiterhin um Mitternacht Lokalzeit getriggert, rechnet aber die Sonnenstandszeiten für den aktuellen Tag und nicht für den Vortag.
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln