Bug in BLIND_SHADE

Begonnen von Homesps, 21. August 2013, 08:10:55

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

Homesps

Mir ist heute morgen aufgefallen, dass meine Raffstore im Osten nicht verschatten.

Bei der Analyse habe ich im BLIND_SHADE einen Bug gefunden. Dort steht


IF UP AND DN AND enable AND sun_delay.Q AND cx.SUN_HOR > direction - angle_offset AND cx.SUN_HOR < direction + angle_offset AND
DT_TO_TOD(cx.UTC) > cx.SUN_RISE + sunrise_offset AND DT_TO_TOD(cx.UTC) < cx.SUN_SET - sunset_preset THEN


Dabei gibt cx.UTC die Zeit in UTC aus, aktuell 6:04:00, cx.SUN_RISE aber die lokale Zeit, aktuell 6:16:00.

Meiner Meinung nach muss dort cx.LDT benutzt werden, also ebenfalls die lokale Zeit.


IF UP AND DN AND enable AND sun_delay.Q AND cx.SUN_HOR > direction - angle_offset AND cx.SUN_HOR < direction + angle_offset AND
DT_TO_TOD(cx.LDT) > cx.SUN_RISE + sunrise_offset AND DT_TO_TOD(cx.LDT) < cx.SUN_SET - sunset_preset THEN


Gruß
Homesps

Homesps

#1
Heute fiel mir auf, das die Zeiten wieder nicht stimmen. Eine genauere Analyse ergab, dass das Problem nicht in BLIND_SHADE sondern in CALENDAR_CALC zu sein scheint. In CALENDAR_CALC wird der Baustein SUN_TIME verwendet. Dieser erwartet die Zeit in UTC und berechnet auch die Ergebnisse in UTC.

Im Screenshot ist dies zu sehen. SUN_RISE wird mit  TOD#04:30:32.138 berechnet.
In meinem CALENDAR ist UTC und LDT richtig, Offset ist gesetzt und DST_EN auch. Soweit alles gut.

CALENDAR_CALC berechnete als SUN_RISE jetzt aber TOD#05:30:32.138, liegt also eine volle Stunde daneben.

Dies scheint daran zu liegen, dass ich ein neues Programm geladen habe. Nach dem Start wird CALENDAR_CALC ausgeführt, bevor mein Programm DST_EN gesetzt hat. Damit liegt die Berechnung dann eine Stunde daneben. Da CALENDAR_CALC nur 1x pro Tag ausgeführt wird, bleibt der einmal errechnete Wert dann bis zum nächsten Tag erhalten.

Die Analyse hat aber auch gezeigt, dass CALENDAR.SUN_RISE von CALENDAR_CALC als lokale Zeit berechnet wird, die IF-Prüfung in BLIND_SHADE mit cx.UTC daher falsch ist.

Gruß
Homesps

[gelöscht durch Administrator]

linsenpago

Das gleiche ist mir auch schon aufgefallen und habs hier mal reingeschrieben.
Bei mir liegen die berechneten Sunrise und Sunset Zeiten auch immer eine Stunde daneben.

Ich bin aber auf Codesys nicht so fit, sodaß ich das selber analysieren konnte was hier nicht stimmt.

Ich berechne die Zeiten derzeit (als Workaround) über den Suntime Baustein und schreibe das Ergebniss manuell in die XCAL Struktur. Das funktioniert.