Do Projektu iAutomatyka dołączyli:

Publikacja zgłoszona do 🎁 Konkursu iAutomatyka

Koncepcje programowania sekwencyjnego w sterownikach PLC

1181 wyświetleń, autor: Kamil Leś.

W dobie internetu i łatwości pozyskiwania informacji łatwo odnaleźć wiele interesujących materiałów dotyczących sterowników PLC. Zaczynając naukę programowania lub też chcąc poszerzyć swoją wiedzę można skorzystać z wielu bardzo dobrych książek, instrukcji producentów i innych publikacji pozwalających dość dogłębnie poznać zasadę działania i funkcjonalność sterowników programowalnych. Moją uwagę zwrócił fakt, że znaczna część literatury, z którą się do tej pory spotkałem, skupia się głównie na wytłumaczeniu działania poszczególnych funkcji lub przedstawia rozwiązania dla bardzo uproszczonych przypadków i zagadnień. Oczywiście jest to ogromna część wiedzy, którą można zdobyć szczególnie na początku swojej przygody z programowaniem. Warto jednak zagłębić się również w samą algorytmikę i koncepcję programowania. W tym artykule zostanie przedstawiona koncepcja programowania sekwencyjnego, a także sposoby jej realizacji w różnych językach programowania.

Podstawą koncepcji programowania sekwencyjnego jest pojęcie maszyny stanów (ang. state machine). W dużym uproszczeniu jest to system, w którym istnieje określona liczba stanów, a przejścia między stanami są możliwe po spełnieniu określonych warunków. Wyjścia układu nie zależą tylko od stanów wejść ale także od aktualnego stanu maszyny. Bardzo dobrze obrazuje to rysunek 1

lll

Rys. 1. Uproszczona koncepcja maszyny stanów

Przy stanie 0 musi zostać spełniony warunek 0 aby możliwe było przejście do stanu 1. W tym wypadku nie ma możliwości przejścia ze stanu 0 do stanu 2 z pominięciem stanu 1. Jeżeli stany połączymy z wykonaniem konkretnej akcji, to umożliwione zostanie działanie sekwencyjne oparte na stanach.

W tym miejscu należałoby zadać pytanie: czy to jest nam potrzebne? Jeśli potrzebujemy zrealizować prostą logikę, to cała ta koncepcja wydaje się bezużyteczna. Problem pojawia się gdy nasza aplikacja zaczyna rosnąć, a my chcemy dalej zachować nad nią kontrolę. Przy bardziej złożonych aplikacjach przemysłowych, które wymagają działania sekwencyjnego, taka realizacja algorytmu sterowania staje się wręcz koniecznością.

Istnieje wiele możliwości zbudowania układu sekwencyjnego na sterownikach PLC. Wiele zależy też od języków programowania jaki oferuje nam producent sterownika. Tutaj zostaną przedstawione trzy przykłady opracowane na sterownikach firmy Siemens i oprogramowaniu TIA Portal. Zostaną wykorzystane następujące języki programowania (w nawiasie nazwy zgodnie z IEC 61131-3) :

  • GRAPH (SFC)
  • LAD (LD)
  • SCL (ST)

GRAPH (SFC)

Jest język stworzony z myślą o programowaniu sekwencyjnym. Bazuje się tutaj na 3 podstawowych pojęciach: krok (ang. step), tranzycja (ang. trans) i kwalifikator (ang. qualifier). Pierwsze dwa pojęcia wydają się oczywiste. Kwalifikator jest to natomiast nic innego jak akcja jaką chcemy wykonać (np.: set, reset, delay, itd.) w danym stanie (kroku), w którym aktualnie się znajdujemy. Przykład został przedstawiony na rysunku 2.

Rys. 2. Maszyna stanów w języku GRAPH

W przedstawionym przykładzie po inicjalizacji znajdujemy się w kroku 1 (Step 1). Wyjścia lampki czerwonej i zielonej zostają zresetowane. Aby umożliwić przejście do kroku 2 konieczne jest spełnienie pierwszego warunku (trans 1). Należy więc nacisnąć zielony przycisk. Spowoduje to przejście do kroku 2, w którym zostaje wykonana akcja setowania wyjścia lampki zielonej. Będąc w kroku 2 maszyna oczekuję na przycisk czerwony. Naciśnięcie przycisku czerwonego gdy maszyna stanów jest w drugim kroku pozwala na przejście do 3 kroku i zaświecenie lampki czerwonej.

Warto zauważyć najważniejszą zaletę tego systemu. Gdy jesteśmy w kroku 1 to naciśnięcie przycisku czerwonego nie powoduje wykonania akcji. Nie musimy dodawać żadnych dodatkowych warunków, cyklem wyjść zarządza nasza maszyna stanów. Jest to bardzo prosty przykład i w tym wypadku wydaje się być swego rodzaju przerostem formy nad treścią. Trzeba jednak zastanowić się co jeśli zamiast 2 przycisków i 2 lampek mamy 30 czujników i 10 siłowników. Ten prosty algorytm nie ma na celu opisu rozwiązanego już problemu, lecz ma pozwolić na  zrozumienie idei.

LAD (LD)

Często spotykamy się jednak z sytuacją, że z jakiegoś powodu nie możemy zastosować języka GRAPH. Są to przyczyny sprzętowe (np. S7-1200 nie obsługują tego języka) ale również wymagania klienta, który nie zawsze zgadza się na program w danym języku. Jak zrealizować maszynę stanów w języku drabinkowym przedstawia rysunek 3.

Rys. 3. Maszyna stanów w języku LAD

Na początku trzeba stworzyć zmienną typu Integer, która będzie przechowywać aktualny stan maszyny. W tym przypadku jest to zmienna „krok” w bloku danych DB o nazwie „Sekwencja” ( „Sekwencja”.Krok). Każda linia stanowi osobny krok (stan), w której porównujemy obecną wartość kroku z wartością naszego kroku, a następnie jeśli spełniony jest warunek przejścia do następnego kroku to wpisujemy do naszej zmiennej „krok” nową wartość. Dla przykładu w networku 1 sprawdzamy czy wartość kroku jest równa 0. Jeśli warunek jest spełniony i naciśniemy przycisk zielony to wpisujemy za pomocą instrukcji MOVE do zmiennej „krok” wartość 10. Następnie komparator w networku 1 nie będzie spełniał już warunku, bo wartość kroku wynosi 10. Spełniony jest warunek dla kroku 10, czyli w networku 2. Gdy jesteśmy więc w kroku 10 to setujemy lampkę zieloną. Cała sekwencja działa dokładnie tak samo jak w przypadku języku GRAPH.

Warto zwrócić uwagę na zapis. Z kroku 0 przechodzimy do 10 z 10 do 20. Nasuwa się pytanie dlaczego nie z kroku 1 do 2, z 2 do 3 itd. Odpowiedź jest prosta. W aplikacjach przemysłowych ze względu na zmiany zaistniałe w procesie tworzenia i uruchomienia oprogramowania często potrzebujemy coś dodać między dwoma akcjami. W tym wypadku staje się to bardzo proste, bo zamiast przesuwać wszystkie kroki w górę, wystarczy tylko dodać krok pośredni (np. krok 5).

SCL (ST)

Inaczej pod względem zapisu kodu, lecz opierając się na na tej samej koncepcji maszyny stanów możemy wykorzystać język strukturalny SCL. Najbardziej naturalne jest zastosowanie instrukcji CASE. Postępujemy podobnie jak dla języka LAD. Tworzymy odpowiednią zmienną, która będzie przechowywać aktualną wartość maszyny stanów. Zapis tej samej sekwencji, która została przedstawiona dla jezyka GRAPH i LAD został zaprezentowany na rysunku 4 dla języka SCL.

Rys. 4. Maszyna stanów w języku SCL

Instrukcją CASE przełącza nas do odpowiedniego kroku, gdzie przy pomocy instrukcji warunkowej IF  definiujemy warunek przejścia do następnego kroku.

Podsumowanie

W powyższym opisie zostały pominięte kwestie związane z interfejsem użytkownika. Celem było przedstawienie ogólnej i stosunkowo uniwersalnej idei realizacji sterowania sekwencyjnego. Przykłady stanowią swego rodzaju minimalizację zagadnienia i są przedstawione w dużym uproszczeniu. Istnieje również kilka innych, nie opisanych tutaj metod, które pozwolą uzyskać podobne efekty. Przedstawione tutaj informacje stanowią jednak podstawę, która pozwoli w łatwy sposób zrealizować i zrozumieć inne przypadki. Są to narzędzia umożliwiające pisanie przejrzystych, skalowalnych i łatwo zarządzanych sekwencji. Należy jednak pamiętać, że nie wszystkie aplikacje przemysłowe wymagają sekwencyjnego działania, szczególnie aplikacje procesowe.

Artykuł został nagrodzony w Konkursie iAutomatyka – edycja Marzec 2020. Nagrodę  Voucher na szkolenie + zestaw gadżetów dostarcza ambasador konkursu, firma EMT-SYSTEMS.

Newsletter

Zapisz się i jako pierwszy otrzymuj nowości!

Zapoznałem się i akceptuję klauzulę informacyjną.
27 marca 2020 / Kategoria: , ,

Reklama

NAJNOWSZE PUBLIKACJE OD UŻYTKOWNIKÓW I FIRM

>KLIKNIJ<

Pierwsza na świecie inteligentna kamera dla przemysłu z technologią głębokiego uczenia

Pierwsza na świecie inteligentna kamera dla przemysłu z technologią głębokiego uczenia

>KLIKNIJ<

Obsługa przemysłowych routerów i modemów GSM odc. 1: Co to jest router przemysłowy GSM i jak go podłączyć do sieci GSM?

Obsługa przemysłowych routerów i modemów GSM odc. 1: Co to jest router przemysłowy GSM i jak go podłączyć do sieci GSM?

>KLIKNIJ<

Pierwsze kroki z przekaźnikiem programowalnym akYtec PR200

Pierwsze kroki z przekaźnikiem programowalnym akYtec PR200

>KLIKNIJ<

Jak działa NOWOCZESNY TARTAK? – Fabryki w Polsce

Jak działa NOWOCZESNY TARTAK? – Fabryki w Polsce

>KLIKNIJ<

Przemysł 4.0:  Zbieranie danych na przykładzie obrabiarki – część 2

Przemysł 4.0:  Zbieranie danych na przykładzie obrabiarki – część 2

>KLIKNIJ<

Programowanie paneli HMI – kurs dla automatyków (wygraj panel HMI 7″!)

Programowanie paneli HMI – kurs dla automatyków (wygraj panel HMI 7″!)

>KLIKNIJ<

Serwer VNC i FTP na przykładzie panelu HMI DOP-100

Serwer VNC i FTP na przykładzie panelu HMI DOP-100

>KLIKNIJ<

[Webinar] Laserowe czujniki pomiarowe – zastosowanie w przemyśle

[Webinar] Laserowe czujniki pomiarowe – zastosowanie w przemyśle

>KLIKNIJ<

Jak wygląda praca programisty robotów? Wywiad z Sebastianem Kilichowskim

Jak wygląda praca programisty robotów? Wywiad z Sebastianem Kilichowskim

>KLIKNIJ<

Dlaczego Twój silnik lub instalacja trójfazowa potrzebuje przekaźnika kontroli napięcia?

Dlaczego Twój silnik lub instalacja trójfazowa potrzebuje przekaźnika kontroli napięcia?

>KLIKNIJ<

Przemysł też może działać zdalnie

Przemysł też może działać zdalnie

>KLIKNIJ<

Jak powstają WINDY? – Fabryki w Polsce

Jak powstają WINDY? – Fabryki w Polsce

>KLIKNIJ<

Otwarte webinarium SCADA od Elmark Automatyka

Otwarte webinarium SCADA od Elmark Automatyka

>KLIKNIJ<

Miniaturowy fotoprzekaźnik laserowy wykrywający obiekty również przez otwory

Miniaturowy fotoprzekaźnik laserowy wykrywający obiekty również przez otwory

>KLIKNIJ<

[Zapis webinaru] Odkrywamy tajniki znakowania laserem

[Zapis webinaru] Odkrywamy tajniki znakowania laserem

>KLIKNIJ<

IMScompact: system prowadzenia i pomiarów, który nie wymaga dodatkowego miejsca

IMScompact: system prowadzenia i pomiarów, który nie wymaga dodatkowego miejsca

>KLIKNIJ<

Bosch Rexroth utrzymuje w 2019 roku rekordowy poziom obrotów z poprzedniego roku

Bosch Rexroth utrzymuje w 2019 roku rekordowy poziom obrotów z poprzedniego roku

>KLIKNIJ<

Serwis chłodziarek przemysłowych – podstawa sukcesu!

Serwis chłodziarek przemysłowych – podstawa sukcesu!

>KLIKNIJ<

Automatycy APA Group rewolucjonizują linię produkcyjną światowego giganta

Automatycy APA Group rewolucjonizują linię produkcyjną światowego giganta

>KLIKNIJ<

Jak dobrać szafę sterowniczą do aplikacji? Testujemy RiCS

Jak dobrać szafę sterowniczą do aplikacji? Testujemy RiCS





MOŻESZ SIĘ TYM ZAINTERESOWAĆ

  • Poniższy poradnik jest zbiorem schematów połączeń elektrycznych. W poradniku zapoznamy się z podstawami wprowadzenia do systemów przekaźnikowych, sekwencji przełączeń przekaźników, porównania systemów przekaźnikowych z systemami tradycyjnym...
  • Urządzenia XV300 wyposażone są w przemysłowe wyświetlacze wysokiej rozdzielczości z technologią wielodotyku. To, w połączeniu z precyzyjnym i intuicyjnym interfejsem użytkownika, umożliwia operatorom pracę od zaraz. Dodatkowo te wysoko wyda...
  • RPC-2A-UNI  przekaźnik czasowy – Działający po zaniku napięcia zasiania, przy załączonym przekaźniku wykonawczym.   Przekaźnik przeznaczony do stosowania w instalacjach niskiego napięcia w automatyce przemysłowej, w automatyce budynko...
  • Selektor napędów Panasonic umożliwia przeglądanie napędów z serii MINAS, wyszukiwanie ich w prosty sposób, a nawet porównywanie ze sobą. Dzięki wyszukiwaniu po słowach kluczowych i przy użyciu funkcji filtrowania, potrzeba zaledwie sekund a...
  • Nowe modułowe sterowniki programowalne PLC firmy Eaton umożliwiają producentom maszyn i systemów opracowywanie nowoczesnych koncepcji automatyki, zwłaszcza w połączeniu z systemem XN300 I/O i panelem dotykowym XV300. Modułowy sterownik zape...
  • Nowoczesne dotykowe panele operatorskie HMI firmy WEINTEK Labs. – Bezpłatne oprogramowanie narzędziowe w pełnej wersji – Precyzyjne, dotykowe ekrany wyświetlające szczegółową grafikę – Obszerne biblioteki komponentów grafi...



KATEGORIE ARTYKUŁÓW
POLECANE ARTYKUŁY
Wydarzenia