Jak odmierzać czas w programie sterującym i jak konfigurować timery?
Kurs programowania sterowników Horner APG w środowisku Cscape 10, odc. 5
Kontakt w sprawie artykułu: Mateusz Pytel - 2025-09-09

W tym odcinku dowiemy się, jak odmierzać czas w programie sterującym, wykorzystując do tego timery w języku drabinkowym.
Kurs programowania sterowników Horner APG w środowisku Cscape 10
Wprowadzenie i podstawy
1. Jak skonfigurować, podłączyć oraz uruchomić sterownik PLC?2. Jak tworzyć i edytować projekty w oprogramowaniu Cscape 10?
Programowanie w języku drabinkowym
3. Jak tworzyć oraz konfigurować bazę zmiennych w środowisku Cscape?4. Jak korzystać ze styków, cewek i bloków operacji arytmetycznych w programie sterującym?
5. Jak odmierzać czas w programie sterującym i jak konfigurować timery?
6. Jak porównywać wartości i wykorzystać wyniki operacji logicznych?
7. Jak zliczać impulsy i konfigurować liczniki?
8. Jak konwertować typy zmiennych i przemieszczać zmienne w programie?
9. Jak sterować wykonywaniem programu logicznego? Instrukcja skoku warunkowego?
Programowanie zintegrowanego panelu HMI
10. Jak budować ekrany operatorskie z obiektami do wizualizacji i zadawania wartości zmiennych?11. Jak umożliwić nawigację między ekranami operatorskimi oraz jak korzystać z gotowych obiektów graficznych w środowisku Cscape?
12. Jak wizualizować zmienne analogowe oraz jak modyfikować ich wartości przy pomocy obiektów graficznych?
13. Jak korzystać z obiektu menu?
14. Konfiguracja i obsługa alarmów w sterownikach PLC.
15. Trend Graph.
Operacja odmierzania czasu w programie nie jest taka oczywista. Zależy ona od rodzaju zastosowanego przekaźnika czasowego oraz dobranej rozdzielczości. Takie zróżnicowanie powoduje, że timery można wykorzystać w różnych celach, zwiększając tym samym możliwości tworzonych programów.
Krok 1: Jak działają timery i jakie ich rodzaje dostępne są w środowisku Cscape?
Bloki funkcyjne w języku drabinkowym, odpowiedzialne za realizację zależności czasowych w sterowniku PLC, noszą nazwę timerów,czyli po polsku przekaźników czasowych. Służą one do odmierzania zadanego czasu przy określonej rozdzielczości. Podobnie jak styki, timery w PLC kontrolują i sterują przepływem sygnału, wykorzystując odpowiedni parametr czasu.
Organizacja pamięci timera wymaga dwóch kolejnych rejestrów. W pierwszym z nich przechowywana jest aktualna odliczana wartość. W drugim rejestrze na pierwszych 14 bitach timer przechowuje wartości własne, bit 15 informuje czy timer jest uruchomiony, natomiast bit 16 daje informacje, czy odliczanie zostało zakończone.
W sterownikach PLC Horner występują dwa typy timerów:
TON (Time On Delay) – opóźnione załączenie

Po otrzymaniu stanu wysokiego, na wejściu timera rozpoczyna się odliczanie do zadanej wartości (należy pamiętać, że zliczanie jest realizowane tylko wtedy, gdy na wejściu podtrzymywany jest stan wysoki). Gdy wartość zadana zostanie osiągnięta, na wyjściu timera ustawiany jest stan wysoki (logiczne 1). Wyjście zostanie ponownie postawione w stanie niskim, gdy na wejściu pojawi się stan niski (logiczne 0).


TOF (Time Off Delay) – opóźnione wyłączenie

Otrzymanie stanu wysokiego na wejściu timera powoduje ustawienie stanu wysokiego na jego wyjściu. Podanie na wejście stanu niskiego uruchamia odliczanie do wartości zadanej. Osiągnięcie tej wartości zmienia stan wyjścia timera na niski.


Sterujący program drabinkowy rozbudujesz teraz o logikę obsługującą funkcję mieszania i podgrzewania płynu w zbiorniku numer 3.
Załączenie procesu oraz jego czas trwania będzie ustawiany przez operatora. Timer wykorzystasz do zadawania i kontrolowania odmierzanego czasu. Po osiągnieciu zadanej wartości czasu timer wyłączy odpowiedni proces.
Krok 2: Jak rozdzielić sterowanie procesami od sterowania zaworami?
W celu rozbudowania programu sterującego stwórz kolejny podprogram, który będzie kontrolował procesy mieszania i grzania. W oknie Project Navigator stwórz nowy podprogram o nazwie Mieszanie_Grzanie.

Krok 3: Opisz funkcje podprogramu
W pierwszym szczeblu programu dodaj komentarz opisujący funkcję tworzonego podprogramu.

Krok 4: Stwórz logikę mieszania płynu
W kolejnym szczeblu wstaw styk normalnie otwarty odpowiedzialny za załączanie mieszania. Przypisz do niego zmienną o nazwie mieszanie.

Proces nie rozpocznie się, dopóki styk nie wykryje stanu wysokiego na przypisanym mu bicie.
Następnie z paska narzędziowego po lewej stronie wybierz timer i umieść go za stykiem.

Niezbędna jest konfiguracja tego bloku. W tym celu kliknij dwukrotnie na wstawiony element.
Okno konfiguracji:

Pierwsze okno służy do przypisania odpowiedniego rejestru dla timera. Należy pamiętać, że timer zajmie 2 kolejne rejestry, czyli w przypadku podania rejestru R1 zajęty będzie też rejestr R2.
Rozdzielczość timera mówi o tym, jak często zliczane będą kolejne impulsy. Rozdzielczość 100 ms spowoduje, że 10 razy w ciągu sekundy zwiększana będzie wartość aktualna, do momentu aż osiągnie wartość zadaną.
W tym oknie można również wybrać typ timera TON/TOF.
Poniżej znajduje się pole służące do przypisania zmiennej do wartości zadanej. Daje to możliwość zmiany wartości zadanej z poziomu okna Data Watch po wgraniu programu do sterownika.
Skonfiguruj timer zgodnie z poniższym wzorem:

Zgodnie z logiką działania, timer wystawi na wyjście stan wysoki w momencie, kiedy doliczy do wartości zadanej.
Ostatnimi elementami szczebla będą cewka resetująca, która zakończy proces mieszania oraz cewka ustawiająca, która rozpocznie proces grzania. Zarówno cewka SET jak i RESET znajdują się w zakładce Contacts and Coils.
Do cewki resetującej przypisz zmienną mieszanie, a do cewki ustawiającej – zmienną grzanie:

Krok 5: Jak sterować procesem ogrzewania?
Kolejny szczebel związany będzie z odmierzaniem czasu grzania i będzie analogiczny do odmierzania czasu mieszania.
W związku z tym najpierw wstaw styk normalnie otwarty i przypisz zmienną grzanie.

Proces grzania nie zostanie uruchomiony, dopóki bit przypisany do styku grzania nie będzie miał stanu wysokiego.
Kolejnym krokiem jest wstawienie bloku timera z opóźnionym załączeniem oraz jego konfiguracja:

Przypisz odpowiednie rejestry, rozdzielczość ustaw na 100 ms oraz wybierz rodzaj On Delay.
Zgodnie z logiką, po odmierzeniu zadanego czasu na wyjściu timera zostanie ustawiony stan wysoki. Wstawienie cewki resetującej jako kolejnego elementu, spowoduje zatrzymanie procesu po upłynięciu określonego czasu. Dlatego do cewki resetującej przypisz zmienną grzanie.

Krok 6: Jak wgrać projekt do sterownika i przetestować program?
Podprogram jest kompletny, więc można wgrać go do sterownika i przetestować jego działanie. W tym celu wybierając z paska narzędziowego opcję Download, pobierz program do sterownika, a następnie przełącz sterownik w tryb pracy RUN.
Następnie przejdź do zakładki Debug i przy pomocy Debug Mode oraz Data Watch przetestuj działanie programu.

W oknie Data Watch dodaj następujące zmienne przy użyciu przycisku Add:

Następnie ustaw czas mieszania i grzania, klikając dwukrotnie na odpowiednią zmienną. Dla Czas_Mieszanie ustaw przykładowo wartość 60 oraz dla Czas_Grzanie też przypisz wartość 60.

Jeśli podczas debugowania wystąpił poniższy błąd, należy zamknąć niepotrzebne okna podglądu kodu, tak by maksymalna liczba otwartych okien nie przekraczała 4.

Nie spowoduje to usunięcia ich z projektu, a tylko zminimalizowanie ich do Project Navigatora.

Po pomyślnym włączeniu trybu debugowania ustaw zmienną mieszanie w stan wysoki.

Następnie obserwuj zmiany wartości zmiennych Timer_Mieszanie, grzanie, Timer_Grzanie. Możesz zauważyć zmieniające się wartości aktualne timerów oraz zmiany stanu bitów w momentach przesterowania.
Następny odcinek: Jak porównywać wartości i wykorzystać wyniki operacji logicznych?
Autor artykułu:
Jacek Dynak
Praktykant ASTOR
Student IV roku kierunku „automatyka i robotyka” na Politechnice Krakowskiej