Najważniejsze zasady pracy z logiką drabinkową
- LD przedstawia warunki sterowania jako styki i cewki ułożone w szczeblach.
- Szeregowe styki realizują funkcję AND, a gałęzie równoległe odpowiadają funkcji OR.
- Program PLC wykonuje się cyklicznie, dlatego znaczenie ma kolejność szczebli i czas skanu.
- Układ START-STOP powinien mieć podtrzymanie, blokadę bezpieczeństwa i kontrolę sprzężenia zwrotnego.
- Timery i liczniki działają różnie zależnie od producenta, dlatego trzeba sprawdzać konwencję konkretnego sterownika.

Czym jest język drabinkowy w sterowniku PLC
Ladder Diagram, oznaczany skrótem LD, jest graficznym językiem programowania sterowników PLC. Jego wygląd nawiązuje do klasycznego schematu sterowania przekaźnikowego: po lewej stronie znajdują się warunki, a po prawej element wykonawczy, na przykład cewka wyjścia.
Najprostszy szczebel można czytać jak zdanie warunkowe. Jeżeli wszystkie wymagane styki są aktywne, sterownik załączy cewkę. Ta prostota jest dużą zaletą, szczególnie dla elektryków i automatyków, którzy potrafią szybko przełożyć istniejący schemat obwodu na program.
W standardzie IEC 61131-3 język drabinkowy występuje obok między innymi Structured Text oraz Function Block Diagram. Nie oznacza to jednak, że każdy producent używa identycznych nazw, adresów i instrukcji. Siemens, Allen-Bradley, Mitsubishi, Omron czy WAGO mogą inaczej opisywać timery, markery i pamięć retencyjną.
Styki i cewki
Styk normalnie otwarty sprawdza, czy przypisana zmienna ma wartość TRUE. Styk normalnie zamknięty sprawdza warunek przeciwny, ale nie należy mylić jego symbolu z fizycznym typem przycisku. To instrukcja logiczna, a nie informacja o tym, czy element w szafie ma zestyk NO lub NC.
Cewka przypisuje wynik logiczny do wyjścia albo zmiennej wewnętrznej. Początkujący często umieszczają tę samą cewkę w kilku niezależnych szczeblach. Program może wtedy działać inaczej, niż wynika z rysunku, ponieważ ostatni zapis w cyklu może nadpisać wcześniejszy.
Jak czytać szczebel i budować warunki sterowania
Logikę drabinkową czytam od lewej do prawej, a szczeble od góry do dołu. Połączenie szeregowe oznacza, że wszystkie warunki muszą być spełnione. Połączenie równoległe pozwala załączyć wyjście na kilka różnych sposobów.
|----[ START ]----[/ STOP ]----------------( SILNIK )----|
W takim uproszczonym przykładzie silnik może działać tylko wtedy, gdy aktywny jest przycisk START, a warunek STOP pozostaje spełniony. W prawdziwej maszynie dodałbym jeszcze sygnał gotowości napędu, brak alarmu, potwierdzenie osłony i właściwy tryb pracy. Sam przycisk START to za mało, aby bezpiecznie sterować napędem.
Funkcje AND i OR w praktyce
Załóżmy, że pompa ma pracować tylko wtedy, gdy zbiornik nie jest pusty i operator wybrał tryb automatyczny. W ladderze umieszczę oba warunki szeregowo. Jeżeli pompa może zostać uruchomiona przez poziom minimalny albo ręczny przycisk serwisowy, zastosuję dwie gałęzie równoległe.
|----[ POZIOM_OK ]----[ AUTO ]----------------( POMPA )----|
|----[ POZIOM_OK ]----[ START_RECZNY ]--------( POMPA )----|
W większym programie lepiej nie sterować fizycznym wyjściem z wielu miejsc. Czytelniejsza konstrukcja polega na obliczeniu jednej zmiennej, na przykład Pompa_Polecenie, a dopiero później przypisaniu jej do wyjścia. Ułatwia to diagnostykę i ogranicza ryzyko konfliktu zapisów.
Podtrzymanie po zwolnieniu przycisku
Przycisk START zwykle jest chwilowy, dlatego po jego puszczeniu trzeba podtrzymać stan pracy. Najczęściej robi się to przez dołożenie styku pomocniczego równolegle do START.
|----+----[ START ]----+----[/ STOP ]--------( SILNIK )----|
| | |
| +----[ SILNIK ]---+
Ten układ nazywa się często samopodtrzymaniem albo zatrzaskiem. Po naciśnięciu START cewka SILNIK załącza własny styk, który podtrzymuje pracę. Naciśnięcie STOP przerywa obwód. W maszynach wymagających wyższego poziomu bezpieczeństwa zatrzymanie awaryjne powinno być realizowane przez odpowiedni obwód bezpieczeństwa, a nie wyłącznie przez zwykły szczebel PLC.
Timery, liczniki i pamięć zdarzeń
Program bez timerów i liczników wystarcza do prostego włączania wyjść, ale automatyka szybko wymaga reakcji zależnych od czasu lub liczby zdarzeń. Timer TON załącza sygnał po upływie ustawionego czasu, TOF może podtrzymać sygnał po zaniku warunku, a timer retencyjny zachowuje naliczony czas zgodnie z zasadami danego środowiska.
Przykładowo wentylator może uruchomić się 5 sekund po starcie nagrzewnicy. Warunek grzania załącza timer TON, a styk zakończenia odliczania steruje wentylatorem. Trzeba jednak sprawdzić, czy timer resetuje się natychmiast po zaniku warunku, czy zachowuje wartość. Ta różnica często wyjaśnia pozornie losowe działanie programu.
|----[ GRZANIE ]----------------[ TON T_WENTYLATOR 5 s ]----|
|----[ T_WENTYLATOR.DN ]--------------------( WENTYLATOR )--|
Licznik CTU zwiększa wartość po kolejnych impulsach, na przykład po przejściu produktów przez czujnik. Jeśli czujnik pozostaje aktywny przez kilka cykli skanu, jeden produkt może zostać policzony wielokrotnie. Dlatego przy szybkich sygnałach potrzebne jest wykrywanie zbocza narastającego, czyli impuls generowany tylko przy zmianie stanu z 0 na 1.
Przykład kontroli partii
Załóżmy, że przenośnik ma zatrzymać się po 20 elementach. Czujnik wyzwala impuls, licznik zwiększa wartość, a po osiągnięciu preset wynoszącego 20 aktywowany zostaje warunek zakończenia partii.
- czujnik wykrywa element,
- blokada zbocza tworzy pojedynczy impuls,
- CTU zwiększa wartość licznika,
- porównanie z wartością 20 zatrzymuje przenośnik,
- sygnał RESET przygotowuje licznik do następnej partii.
Sam licznik nie rozwiązuje problemu, jeśli nie przewidzimy resetu, braku produktu, błędu czujnika i przerwania cyklu. Właśnie na takich szczegółach najczęściej wykładają się pierwsze programy, które działają poprawnie tylko w idealnych warunkach.
Najczęstsze zastosowania w automatyce i warsztacie
Logika drabinkowa dobrze pasuje do układów, w których decyzje wynikają z jasno określonych stanów wejść. W technice warsztatowej można ją spotkać przy sterowaniu pompami, wentylacją, sprężarkami, transporterami, siłownikami i prostymi stanowiskami montażowymi.
| Zastosowanie | Typowa logika | Na co uważać |
|---|---|---|
| Silnik START-STOP | Samopodtrzymanie i blokada STOP | Przeciążenie, sprzężenie zwrotne, kierunek obrotów |
| Pompa poziomu | Warunek poziomu, histereza, alarm | Suchobieg i częste załączanie |
| Siłownik pneumatyczny | Wysuw, czujnik położenia, czas oczekiwania | Brak potwierdzenia ruchu i zacięcie |
| Przenośnik | Czujnik produktu, timer, licznik | Podwójne zliczanie i opóźnienie czujnika |
| Wentylacja | Termostat, opóźnienie, alarm awarii | Filtr zabrudzony lub brak przepływu |
Najbardziej uniwersalny wzorzec to polecenie, warunki zezwolenia i potwierdzenie wykonania. Na przykład silnik dostaje rozkaz pracy, ale sterownik utrzymuje go tylko wtedy, gdy nie ma alarmu i napęd potwierdza gotowość. Takie rozdzielenie daje czytelny ślad diagnostyczny, zamiast jednego wielkiego szczebla, którego nie da się szybko przeanalizować.
Logika drabinkowa a FBD i Structured Text
Nie każdy problem warto rozwiązywać w LD. Dla prostych blokad, sekwencji i sterowania binarnego język drabinkowy jest zwykle bardzo wygodny. Przy rozbudowanych obliczeniach, tablicach danych albo algorytmach matematycznych lepszy może być Structured Text.
| Język | Najlepsze zastosowanie | Ograniczenie |
|---|---|---|
| LD | Styki, cewki, blokady, diagnostyka wejść i wyjść | Duże algorytmy szybko stają się rozbudowane |
| FBD | Regulatory, funkcje blokowe, przetwarzanie sygnałów | Przy wielu warunkach trudniej śledzić przepływ |
| Structured Text | Obliczenia, pętle, tablice i operacje na danych | Mniej intuicyjny dla osób pracujących głównie ze schematami |
Moje podejście jest pragmatyczne. Dla obwodu bezpieczeństwa, blokady napędu czy kontroli czujników wybieram LD, bo technik utrzymania ruchu może szybko obserwować stan każdego warunku. Dla przeliczenia parametrów technologicznych użyłbym ST, a funkcje regulacyjne często umieściłbym w FBD.
Największym błędem jest wybieranie języka według przyzwyczajenia, bez uwzględnienia tego, kto będzie później usuwał awarie. Program ma być zrozumiały nie tylko dla autora, lecz także dla osoby, która o drugiej w nocy szuka przyczyny postoju maszyny.
Uruchamianie i diagnozowanie programu PLC
Przy uruchomieniu nie zaczynam od wymuszania wyjścia. Najpierw sprawdzam, czy sterownik jest w trybie RUN, czy program wykonuje daną sekcję i czy wejścia mają takie stany, jakie rzeczywiście występują na zaciskach. Dopiero później analizuję warunki w konkretnym szczeblu.
- Sprawdź zasilanie sterownika i modułów wejścia-wyjścia.
- Porównaj opis sygnału z rzeczywistym urządzeniem w szafie.
- Obserwuj online każdy styk, timer i bit pomocniczy.
- Znajdź pierwszy warunek, który nie przechodzi od lewej strony szczebla.
- Zweryfikuj wyjście, przewody, przekaźnik pośredni i urządzenie wykonawcze.
- Po poprawce przetestuj również zatrzymanie, alarm i powrót zasilania.
Jeżeli wyjście nie działa, nie zakładam od razu, że winny jest program. Przyczyną może być przerwany przewód, zły wspólny potencjał, uszkodzony moduł, blokada falownika albo brak potwierdzenia z aparatury. Najszybciej działa metoda polegająca na przejściu od sygnału wejściowego do wyjścia i znalezieniu pierwszego miejsca, w którym stan różni się od oczekiwanego.
Przeczytaj również: EtherCAT w automatyce - jak działa i kiedy warto go wybrać?
Znaczenie cyklu skanu
PLC odczytuje wejścia, wykonuje program i aktualizuje wyjścia w powtarzającym się cyklu. Przy prostych układach trwa on często bardzo krótko, ale czas zależy od modelu sterownika, długości programu, komunikacji i użytych funkcji.
To ważne przy impulsach, szybkich czujnikach i licznikach. Sygnał, który pojawi się i zniknie między kolejnymi odczytami, może nie zostać zauważony przez zwykły styk. W takich sytuacjach trzeba zastosować szybkie wejście, sprzętowy licznik, przerwanie albo odpowiednią funkcję przechwytywania impulsu.
Jak pisać program, który da się utrzymać
Dobry program powinien być uporządkowany według funkcji, a nie według kolejności przypadkowego dodawania szczebli. Osobno umieszczam warunki bezpieczeństwa, sterowanie ręczne, automatykę, alarmy, timery i mapowanie wejść oraz wyjść. Takie grupowanie skraca czas szukania usterki.
- nadawaj zmiennym nazwy opisujące funkcję, a nie tylko adres,
- unikaj wielu zapisów do jednego wyjścia,
- dodawaj komentarze przy nietypowych blokadach,
- rozróżniaj rozkaz pracy od potwierdzenia wykonania,
- testuj także brak sygnału, uszkodzenie czujnika i restart sterownika,
- zapisuj wersję programu oraz listę zmian.
Nie przepadam za programami, w których każdy problem rozwiązuje się zatrzaskiem SET/RESET. Zatrzask bywa potrzebny, na przykład przy zapamiętaniu alarmu, ale użyty bez jasnej logiki resetu potrafi zostawić maszynę w stanie, którego operator nie rozumie. Zwykła cewka i jednoznaczne warunki są często bezpieczniejsze oraz łatwiejsze do serwisowania.
Przed podłączeniem maszyny warto przeprowadzić test w symulatorze lub na stanowisku z odłączonym obciążeniem, jeśli pozwala na to procedura. Nie zastępuje to próby na rzeczywistym urządzeniu, ale pozwala wcześniej wychwycić błędy w kolejności sekwencji, resetach i warunkach blokujących.
Od pierwszej drabinki do stabilnego sterowania
Najlepiej uczyć się na małych, kompletnych układach: lampka START-STOP, silnik z blokadą, timer opóźniający wentylator, licznik produktów i prosty siłownik z kontrolą położenia. Każdy przykład powinien obejmować nie tylko normalną pracę, ale też reset, alarm i brak potwierdzenia.
Język drabinkowy nadal ma dużą wartość tam, gdzie liczy się szybkie zrozumienie zależności między sygnałem a reakcją maszyny. Nie zastąpi wszystkich metod programowania, lecz dobrze zaprojektowany program LD pozostaje przejrzystym narzędziem codziennej automatyki, szczególnie wtedy, gdy po jego uruchomieniu ktoś będzie musiał sprawnie znaleźć przyczynę przestoju.