W tej części kursu opiszę:
Niejszy artykuł bazuje na pojęciach i plikach omawianych w poprzednich częściach - zachęcam więc, by czytać całość od samego początku
Sprawmy by sterownik wiedział, która jest godzina i reagował odpowiednio na zaplanowane wcześniej zdarzenia.
Odczytywanie wartości wbudowanego zegara wykonywane jest funkcją SysRtcGetTime(). Jako że wykonanie jej obciąża procesor i nie ma praktycznego sensu by aktualizować czas częściej niż 1 sekundę, stworzymy do tego zadania odrębny proces.
VAR_GLOBAL CURRENT_TIME : DATE_AND_TIME; END_VAR
a) Dodajemy zadanie wykonywania głównego programu: Prawy klawisz myszy na „Task configuration->Append Task, podajemy nazwę „Main” i określamy typ jako „freewheeling”, czyli działające bez przerwy.
Dodajemy wywołanie programu, który ma być realizowany w ramach tego zadania: prawy klawisz myszy na Main->Append Program Call->przycisk z „…” i wybieramy PLC_PRG;
b. Dodajemy zadanie do obsługi odczytów zegara: prawy klawisz na myszy na poprzednim zadaniu („Main”)->Insert Task, wpisujemy Name=ReadClock, Priority=10, Type=cyclic, Properties, Interval = T#1s, tworząc tym samym zadanie, które uruchamiać się będzie co 1 sekundę.
Pozostaje nam już tylko dodać wywołanie programu realizowanego w ramach tego zadania: prawy klawisz myszy na ReadClock->Append Program Call->Przycisk z „…” i wybieramy ReadClock();
Czas napisać program ReadClock: Zakładka POUs, podwójne kliknięcie na ReadClock (PRG).
W definicjach nie wpisujemy nic, w programie wystarczy 1 linia:
CURRENT_TIME := SysRtcGetTime(TRUE);
Problem jednak w tym, że nasz program nie zna tej funkcji… pochodzi ona z biblioteki, którą trzeba najpierw dodać: Zakładka Resources->Library Manager->prawy klawisz myszy na liście zainstalowanych bilbiotek->Additional Library
W katalogu „CoDeSys V2.3/Targets/WAGO/Libraries/32_Bit” wybieramy SysLibRtc.lib.
Dodajmy jeszcze jedno pole do wiazualizacji VIS_SETTINGS, które pokazywać będzie aktualny czas sterownika. Dodajemy prostokąt i konfigurujemy:
Program jest gotowy do kompilacji, wgrania i uruchomienia.
Oto plik programu z omawianym przykładem.
Ostatnia uwaga – procesy/programy poza PLC_PRG nie działają w trybie symulacji (Online->Simulation mode)