Do Projektu iAutomatyka dołączyli:

Publikacja zgłoszona do 🎁 Konkursu iAutomatyka

Koncepcje programowania sekwencyjnego w sterownikach PLC

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.



27 marca 2020 / Kategoria: , ,

Reklama

Newsletter

Zapisz się i jako pierwszy otrzymuj nowości!

Zapoznałem się i akceptuję klauzulę informacyjną.



.

NAJNOWSZE PUBLIKACJE OD UŻYTKOWNIKÓW I FIRM

>KLIKNIJ<

ZA DARMO?!?! Przetestuj i zachowaj u siebie laserowy czujnik pomiarowy

ZA DARMO?!?! Przetestuj i zachowaj u siebie laserowy czujnik pomiarowy

>KLIKNIJ<

Laserowe spawanie złączy konektorowych

Laserowe spawanie złączy konektorowych

>KLIKNIJ<

Czujniki ultradźwiękowe do stosowania w ekstremalnie niskich temperaturach — seria L2 teraz w wersjach niskotemperaturowych

Czujniki ultradźwiękowe do stosowania w ekstremalnie niskich temperaturach — seria L2 teraz w wersjach niskotemperaturowych

>KLIKNIJ<

Nowe systemy do pakowania w ofercie antystatycznych mebli REECO

Nowe systemy do pakowania w ofercie antystatycznych mebli REECO

>KLIKNIJ<

Sieci zasilające DC i selektywność z wykorzystaniem VACON® NXP DCGuard™

Sieci zasilające DC i selektywność z wykorzystaniem VACON® NXP DCGuard™

>KLIKNIJ<

ActiveShuttle – wprawia logistykę wewnątrzzakładową w ruch

ActiveShuttle – wprawia logistykę wewnątrzzakładową w ruch

>KLIKNIJ<

Zakupy online w Endress+Hauser – poznaj nowe udogodnienia

Zakupy online w Endress+Hauser – poznaj nowe udogodnienia

>KLIKNIJ<

Jak stworzyć program? Pierwsze kroki w Codesys| Kurs programowania w Codesys odc. 1

Jak stworzyć program? Pierwsze kroki w Codesys| Kurs programowania w Codesys odc. 1

>KLIKNIJ<

Technologia PoE w automatyce przemysłowej i jej przyszłość

Technologia PoE w automatyce przemysłowej i jej przyszłość

>KLIKNIJ<

Szafy osuszające do zabezpieczania komponentów elektronicznych

Szafy osuszające do zabezpieczania komponentów elektronicznych

>KLIKNIJ<

Inteligentne kolumny sygnalizacyjne rewolucjonizują utrzymanie ruchu

Inteligentne kolumny sygnalizacyjne rewolucjonizują utrzymanie ruchu

>KLIKNIJ<

Smart Function Kit – wyższy poziom obsługi!

Smart Function Kit – wyższy poziom obsługi!

>KLIKNIJ<

Modernizacja zabezpieczeń – sprawna realizacja wirtualnych planów 3D

Modernizacja zabezpieczeń – sprawna realizacja wirtualnych planów 3D

>KLIKNIJ<

Zmniejszenie obciążenia chwilowego przy jednoczesnym wzroście bezpieczeństwa eksploatacyjnego

Zmniejszenie obciążenia chwilowego przy jednoczesnym wzroście bezpieczeństwa eksploatacyjnego

>KLIKNIJ<

#HOWTO: Sterowanie silnikiem krokowym z użyciem sterownika Kinco i panelu Array SH-300

#HOWTO: Sterowanie silnikiem krokowym z użyciem sterownika Kinco i panelu Array SH-300

>KLIKNIJ<

Zaprojektuj Fabrykę Przyszłości

Zaprojektuj Fabrykę Przyszłości

>KLIKNIJ<

Jak podłączyć przycisk E-STOP? | Kurs podłączania i konfigurowania przekaźników bezpieczeństwa dla maszyn i stanowisk produkcyjnych odc.1

Jak podłączyć przycisk E-STOP? | Kurs podłączania i konfigurowania przekaźników bezpieczeństwa dla maszyn i stanowisk produkcyjnych odc.1

>KLIKNIJ<

Systemy wizyjne YAMAHA w branży automotive  

Systemy wizyjne YAMAHA w branży automotive  

>KLIKNIJ<

YAMAHA wspiera badania nad 3D MID na Uniwersytecie w Norymberdze

YAMAHA wspiera badania nad 3D MID na Uniwersytecie w Norymberdze

>KLIKNIJ<

Gotowe rozwiązania dla podwykonawców infrastruktury przeciwdziałania epidemii

Gotowe rozwiązania dla podwykonawców infrastruktury przeciwdziałania epidemii





MOŻESZ SIĘ TYM ZAINTERESOWAĆ