Strona główna ASTOR

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

  • 1. Wprowadzenie. Jak skonfigurować, podłączyć oraz uruchomić sterownik PLC?
  • 2. Jak tworzyć i edytować projekty w oprogramowaniu Cscape?
  • Programowanie sterownika PLC 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 dostępnych w oprogramowaniu Cscape?
  • 13. Jak korzystać z obiektu menu?
  • 14. Konfiguracja i obsługa alarmów w sterownikach PLC
  • 15. Kontrolka Data Trend
  • Komunikacja sterowników PLC w sieci szeregowej i Ethernet

  • 16. Komunikacja szeregowa Modbus RTU Master i Slave
  • 17. Komunikacja CsCAN
  • 18. Komunikacja Ethernet Modbus TCP
  • 19. Wysyłanie wiadomości Email w sterowniku PLC
  • Zaawansowane funkcje sterownika PLC

  • 20. Regulator PID
  • 21. Składowanie danych: Data logging
  • 22. Składowanie danych: karta MicroSD
  • 23. Trendy historyczne oraz receptury w programie
  • 24. Setpoint, backup i restore danych oraz generowanie raportów z poziomu sterownika
  • 25. Hasła i zabezpieczenia w programie, ustawienia języka oraz edytor dostępny w narzędziu, opcja autodokumentacji / Dodatkowe ustawienia i możliwości edycji
  • 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.

    Newsletter Poradnika Automatyka

    Czytaj trendy i inspiracje, podstawy automatyki, automatykę w praktyce

    Please wait...

    Dziękujemy za zapis do newslettera!

    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?

    Czy ten artykuł był dla Ciebie przydatny?

    Średnia ocena artykułu: 4.3 / 5. Ilość ocen: 7

    Ten artykuł nie był jeszcze oceniony.

    Zadaj pytanie

    Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *