'Inteligenty' dom ze sterownikiem PLC

Główna => Programowanie => Wątek zaczęty przez: schuey w Sierpnia 12, 2020, 07:32:33 pm

Tytuł: Problem z CALENDAR z biblioteki Oscat
Wiadomość wysłana 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!
Tytuł: Odp: Problem z CALENDAR z biblioteki Oscat
Wiadomość wysłana przez: admin w Sierpnia 12, 2020, 09:18:50 pm
Cześć,

takie testowe pytanie - pracujesz na programie wgranym na sterownik, czy w trybie symulacji?
Tytuł: Odp: Problem z CALENDAR z biblioteki Oscat
Wiadomość wysłana przez: schuey w Sierpnia 13, 2020, 12:02:22 am
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
Tytuł: Odp: Problem z CALENDAR z biblioteki Oscat
Wiadomość wysłana przez: admin w Sierpnia 17, 2020, 08:37:15 am
Cześć,

a

Calendar.Utc := SysRtcGetTime(TRUE);

w ogóle działa w trybie symulacji?
Tytuł: Odp: Problem z CALENDAR z biblioteki Oscat
Wiadomość wysłana przez: schuey w Sierpnia 19, 2020, 01:53:54 pm
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.
Tytuł: Odp: Problem z CALENDAR z biblioteki Oscat
Wiadomość wysłana przez: schuey w Sierpnia 19, 2020, 04:55:01 pm
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ę.