Jak odmierzać czas w programie sterującym i jak konfigurować timery?
Kurs programowania PLC od podstaw
Odc. 5
Kontakt w sprawie artykułu: Kamil Zajdel - 2020-02-05
Z tego artykułu dowiesz się:
- Jakie rodzaje timerów dostępne są w środowisku Cscape?
- Jaka jest zasada działania odpowiednich timerów?
- Jak konfigurować bloki funkcyjne timerów?
W poprzednim artykule poznałeś/aś podstawowe elementy języka drabinkowego oraz stworzyłeś/aś swój pierwszy program. W tym artykule poznasz zasadę działania timerów oraz jak je konfigurować.
Kurs programowania PLC od podstaw dla automatyków i elektryków
Podstawy programowania sterowników PLC
Programowanie sterownika PLC w języku drabinkowym
Programowanie zintegrowanego panelu HMI
Komunikacja sterowników PLC w sieci szeregowej i Ethernet
Zaawansowane funkcje sterownika PLC
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.
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ę timery czyli po polsku przekaźniki czasowe. 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 zarejestrowana 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).
IN | Wejście Timera |
Q | Wyjście Timera |
PT – Present Time | Czas zadany |
ET – Elapsed Time | Czas odmierzony |
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.
IN | Wejście Timera |
Q | Wyjście Timera |
PT – Present Time | Czas zadany |
ET – Elapsed Time | Czas odmierzony |
Programowanie w akcji!
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 1: 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 2: Opisz funkcje podprogramu
W pierwszym szczeblu programu dodaj komentarz opisujący funkcję tworzonego podprogramu.
Krok 3: 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 górnego paska narzędziowego 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.
Do cewki resetującej przypisz zmienną mieszanie, a do cewki ustawiającej – zmienną grzanie:
Krok 4: 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 5: 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 odpowiednią ikonę, prześlij projekt do sterownika. Następnie upewnij się, że sterownik jest w trybie RUN.
Przy pomocy okna Data Watch oraz Debug 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.
Tworzona aplikacja ma już coraz większą funkcjonalność, jednak możliwości programowania w Cscape nie zostały wyczerpane! W dalszych częściach kursu poznasz kolejne funkcje i będziesz rozwijał/a aplikację.
Już w następnym artykule poznasz bloki służące do porównywania wartości i stworzysz logikę sterującą zaworami tak, by nie doszło do przepełnienia zbiorników.
W kolejnym artykule z cyklu kurs „Programowanie oraz konfiguracja sterowników PLC zintegrowanych z hmi”: Jak porównywać wartości i wykorzystać wyniki operacji logicznych?
- Jak działają bloki służące do porównywania wartości?
- Jakie typy bloków porównywania danych dostępne są w Cscape?
- Jak poprawnie wykorzystywać porównywanie danych w programie sterującym?