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]