'Inteligenty' dom ze sterownikiem PLC
Główna => Programowanie => Wątek zaczęty przez: schuey w Sierpnia 12, 2020, 07:32:33 pm
-
Witajcie,
W tutorialach jest mowa o stosowaniu zmiennej Calendar do sterowania zachodami / wschodami słońca. Dodałem zmienną typu CALENDAR z moimi współrzędnymi i offsetem +2h na strefę czasową od UTC:
VAR
Calendar : CALENDAR:=(LATITUDE:=53.0, LONGITUDE:=14.0, OFFSET:=120);
END_VAR
a następnie w bloku programu inicjuję czas UTC:
Calendar.Utc := SysRtcGetTime(TRUE);
Gdy próbuję użyć tej zmiennej w BLIND_NIGHT ( będącym poprawiona wersją wg inego posta na forum ), to atrybuty SUN_SET oraz SUN_RISE, oraz LDT są wszystkie błędne. Zachody wschody pokazują 0:00 a lokalny czas LDT to unixowy rok 1970-01-01.
Blind_Night(
...
DTIN := Calendar.LDT,
SUNSET := Calendar.SUN_SET,
SUNRISE := Calendar.SUN_RISE
);
Co robię źle, w moim rozumieniu zmienna Calendar powinna automatycznie obliczyć mi LDT, SUN_SET i SUN_RISE wg podanego położenia geograficznego i strefy czasowej?
Pozdrawiam!
-
Cześć,
takie testowe pytanie - pracujesz na programie wgranym na sterownik, czy w trybie symulacji?
-
Cześć
Sprawdzam w trybie symulacji, ale do ćwiczeń przeniosłem cały "zegar" do bloku funkcyjnego od kontrolowania rolety. Gdzieś na forum mignęła mi informacja, że przy symulacji nie działają programy spoza PLC_PRG
-
Cześć,
a
Calendar.Utc := SysRtcGetTime(TRUE);
w ogóle działa w trybie symulacji?
-
OK, w moim kodzie najprawdopodobniej brakowało wywołania funkcji:
Calendar_Updater(XCAL:=Calendar, HOLIDAYS:=Holidays);
Po dodaniu tego wyskakują mi błędy kompilacji w bibliotece Oscat, np. w pliku CONSTANTS_MATH
FACTS : ARRAY[0..12] OF DINT := 1,1,2,6,24,120,720,5040,40320,362880,3628800,39916800,479001600;
przyczepia się "COOO6: ';' expected instead of ','
Czy w którejś wersji zmieniły się sposoby deklaracji tablic? Zakładam, że taki błąd pojawiałby się także w waszych programach.
-
Cześć,
a
Calendar.Utc := SysRtcGetTime(TRUE);
w ogóle działa w trybie symulacji?
Tak, działa OK jak sobie wskoczę w podgląd READ_CLOCK to wyraźnie zmienna UTC "cyka" co sekundę.