FBD pozwala układać logikę sterownika z gotowych, łatwych do śledzenia bloków
- FBD to graficzny język programowania PLC zgodny z rodziną norm IEC 61131-3.
- Bloki funkcyjne obsługują logikę, opóźnienia czasowe, zliczanie, porównania i regulację.
- Największa zaleta to czytelny przepływ sygnałów widoczny podczas diagnostyki online.
- Dobry program ma opisane zmienne, jednoznaczne warunki startu i poprawnie zaprojektowane blokady.
- FBD sprawdza się najlepiej w układach procesowych, napędowych, HVAC i automatyce maszyn.

Czym jest FBD i jak działa w sterowniku PLC
FBD, czyli Function Block Diagram, przedstawia program jako połączone ze sobą bloki funkcjonalne. Każdy blok ma wejścia, wykonuje określone działanie i przekazuje wynik na wyjście. Zamiast pisać długie instrukcje tekstowe, projektant układa sieć zależności przypominającą schemat przepływu sygnału.
Język ten należy do zestawu języków opisanych w normie IEC 61131-3. W tej samej rodzinie znajdują się między innymi Ladder Diagram, Structured Text i Sequential Function Chart. Sama norma porządkuje sposób budowania programów, ale konkretne biblioteki bloków, nazwy instrukcji i możliwości edytora zależą już od producenta sterownika.
Cykl pracy programu
PLC pracuje cyklicznie. Sterownik odczytuje wejścia, wykonuje program, aktualizuje wyjścia i rozpoczyna kolejny cykl. W prostym układzie może to wyglądać tak: przycisk START trafia do bloku logicznego, jego wynik przechodzi przez blok podtrzymania, a na końcu steruje wyjściem silnika.
To ważne, ponieważ FBD nie jest schematem elektrycznym w dosłownym znaczeniu. Położenie bloku na ekranie pomaga czytać program, ale o działaniu decydują połączenia, typy danych i kolejność wykonania ustalana przez środowisko programistyczne.
Funkcja a blok funkcyjny
| Element | Jak działa | Przykład zastosowania |
|---|---|---|
| Funkcja | Dla tych samych wartości wejściowych zwraca wynik bez przechowywania własnego stanu. | AND, OR, ABS, LIMIT, porównanie wartości. |
| Blok funkcyjny | Może zapamiętywać stan pomiędzy cyklami programu. | Timer TON, licznik CTU, przerzutnik SR, regulator PID. |
Różnica ma praktyczne znaczenie. Timer musi pamiętać, jak długo utrzymuje się sygnał, a licznik powinien przechowywać aktualną liczbę impulsów. Dlatego korzysta się z instancji bloku, czyli jego konkretnego egzemplarza przypisanego do określonych zmiennych.
Z jakich bloków buduje się program FBD
Podstawą są bloki logiczne AND, OR i NOT. Pozwalają sprawdzić, czy kilka warunków wystąpiło jednocześnie, czy wystarczy jeden z nich albo czy sygnał ma zostać odwrócony. W praktyce prawie zawsze łączy się je z sygnałami zezwolenia, alarmu i blokady bezpieczeństwa.
Timery i liczniki
Blok TON załącza wyjście dopiero po upływie ustawionego czasu. Przykładowo wentylator może uruchamiać się 5 sekund po włączeniu ogrzewania. TOF działa odwrotnie i podtrzymuje wyjście przez określony czas po zaniku sygnału, co przydaje się przy opóźnionym wyłączeniu wentylacji.
Liczniki CTU i CTD służą do zliczania impulsów, elementów na przenośniku albo cykli pracy. Jeżeli czujnik wykrywa detal, licznik może zatrzymać linię po 10 sztukach. Trzeba jednak zadbać o filtrację sygnału, ponieważ drgania styku lub zakłócenia mogą spowodować wielokrotne naliczenie jednego elementu.
Przerzutniki, zbocza i komparatory
Bloki SR i RS pozwalają zapamiętać stan, na przykład informację, że operator nacisnął START. Różnica między nimi dotyczy priorytetu wejścia ustawiającego i kasującego. W układach awaryjnych wybieram rozwiązanie, w którym sygnał STOP lub alarm ma pierwszeństwo przed podtrzymaniem pracy.
Bloki wykrywania zbocza reagują tylko na zmianę sygnału, a nie na jego stały poziom. Są przydatne przy impulsowym zwiększaniu licznika lub wyzwalaniu pojedynczego cyklu. Komparatory, takie jak >, < i =, zamieniają wartości analogowe na warunki logiczne, na przykład „uruchom pompę, gdy poziom spadnie poniżej 30%”.
Operacje na wartościach analogowych
Wartości z czujników często wymagają przeskalowania. Sygnał 4-20 mA może odpowiadać zakresowi od 0 do 10 bar, dlatego program powinien przeliczyć surową wartość wejściową na jednostkę używaną przez operatora. Przydatne są tu bloki SCALE, LIMIT i konwersji typu danych.
Nie pomijam ograniczenia wartości blokiem LIMIT. Jeżeli uszkodzony czujnik zwróci wartość spoza zakresu, ograniczenie nie naprawi awarii, ale może ochronić dalszą część algorytmu przed absurdem obliczeniowym. Równolegle powinien działać alarm przekroczenia zakresu i diagnostyka przewodu.
Jak zaprojektować prosty układ krok po kroku
Dobrym ćwiczeniem jest sterowanie silnikiem przenośnika. Załóżmy, że silnik może pracować po naciśnięciu START, ale tylko wtedy, gdy aktywne jest zezwolenie technologiczne i nie wystąpił sygnał awaryjny.
- Zdefiniuj sygnały wejściowe: START, STOP, E-STOP, GUARD_OK oraz MOTOR_FB.
- Utwórz warunek zezwolenia, łącząc GUARD_OK z brakiem E-STOP i aktywnym trybem AUTO.
- Zastosuj przerzutnik SR lub RS do podtrzymania komendy pracy po puszczeniu przycisku START.
- Dodaj priorytet zatrzymania, aby STOP, E-STOP lub zadziałanie zabezpieczenia kasowały podtrzymanie.
- Sprawdź sprzężenie zwrotne MOTOR_FB, czyli informację, że stycznik lub napęd rzeczywiście wykonał polecenie.
- Dodaj timer błędu, który zgłosi alarm, jeśli potwierdzenie nie pojawi się na przykład w ciągu 2 sekund.
Tak zbudowana sieć ma wyraźny przepływ od warunków wejściowych do wyjścia. Ja staram się oddzielać w programie komendę pracy od fizycznego wyjścia. Dzięki temu łatwiej dodać tryb ręczny, automatyczny, test serwisowy albo blokadę wynikającą z innego procesu.
| Element układu | Rola | Typowy błąd |
|---|---|---|
| START | Żądanie rozpoczęcia pracy | Bezpośrednie sterowanie wyjściem bez podtrzymania. |
| STOP i E-STOP | Kasowanie pracy | Brak priorytetu zatrzymania. |
| Blokada technologiczna | Warunek bezpiecznego uruchomienia | Sprawdzana tylko przy starcie, a nie podczas pracy. |
| Sprzężenie zwrotne | Potwierdzenie wykonania polecenia | Program zakłada, że wyjście zawsze zadziałało. |
FBD, LD czy ST, który język wybrać
Nie ma jednego języka najlepszego dla każdego zadania. FBD wygrywa czytelnością bloków i wygodną diagnostyką, ale przy bardzo rozbudowanych obliczeniach może zajmować dużo miejsca. Dlatego w większych projektach często łączy się kilka języków w jednym sterowniku.
| Język | Najmocniejsza strona | Kiedy wybrać | Ograniczenie |
|---|---|---|---|
| FBD | Graficzny przepływ sygnałów i gotowe bloki | Procesy, napędy, regulacja, HVAC, układy z timerami. | Duże algorytmy mogą stać się nieporęczne. |
| LD | Podobieństwo do klasycznych schematów przekaźnikowych | Prosta logika binarna i serwis maszyn. | Rozbudowane operacje analogowe bywają mniej przejrzyste. |
| ST | Krótki zapis obliczeń i warunków | Pętle, tablice, receptury i złożone algorytmy. | Diagnostyka wymaga większego obycia z kodem. |
| SFC | Opis sekwencji etapów | Maszyny pracujące według jasno określonych kroków. | Nie zastępuje szczegółowej logiki wykonawczej. |
Moja praktyczna zasada jest prosta: używam FBD tam, gdzie chcę widzieć zależności między blokami, a Structured Text tam, gdzie kod jest krótszy i łatwiejszy do utrzymania niż rozbudowana grafika. Największy błąd to wybór jednego języka z przyzwyczajenia, bez sprawdzenia, jak program będzie później diagnozowany przez zespół utrzymania ruchu.
Najczęstsze błędy w programowaniu FBD
Niejasne nazwy zmiennych
Zmienna o nazwie Motor_1 może oznaczać komendę, sprzężenie zwrotne albo fizyczne wyjście. Znacznie lepiej rozdzielić nazwy typu Motor_StartCmd, Motor_RunFb i Motor_Fault. Czytelne nazewnictwo skraca diagnostykę, zwłaszcza gdy program ma setki sieci.
Wielokrotne sterowanie tym samym wyjściem
Jeżeli kilka fragmentów programu zapisuje wartość do jednego wyjścia, końcowy rezultat może zależeć od kolejności wykonania. Ten błąd często pojawia się przy łączeniu trybu ręcznego i automatycznego. Rozwiązaniem jest najpierw wyliczenie jednej komendy nadrzędnej, a dopiero później przypisanie jej do fizycznego wyjścia.
Brak rozróżnienia poziomu i impulsu
Przycisk lub czujnik może utrzymywać stan przez wiele cykli PLC. Jeśli licznik reaguje na poziom TRUE zamiast na zbocze narastające, jedna sztuka może zostać policzona kilkadziesiąt razy. Przy szybkich sygnałach trzeba dodatkowo sprawdzić, czy wejście i czas cyklu sterownika są wystarczające.Nieprawidłowe resetowanie timerów i liczników
Timer albo licznik powinien mieć jasno określony warunek resetu. Pozostawienie starego stanu po zmianie trybu pracy prowadzi do trudnych do odtworzenia problemów. Podczas testów sprawdzam nie tylko normalny cykl, lecz także restart sterownika, zanik sygnału i powrót z alarmu.
Przeczytaj również: Jaki sterownik PLC do CODESYS wybrać? Praktyczny poradnik
Brak ograniczeń dla danych analogowych
Surowa wartość z wejścia analogowego nie powinna bez kontroli sterować zaworem, falownikiem czy grzałką. Oprócz skalowania potrzebne są limity, filtracja i reakcja na błąd czujnika. Szczególnie ostrożnie traktuję wartości typu REAL, ponieważ nieprawidłowa konwersja typu może dać wynik wyglądający poprawnie, ale niezgodny z rzeczywistością.
Gdzie FBD daje najlepsze rezultaty
FBD dobrze pasuje do układów, w których operator lub automatyk musi szybko prześledzić stan procesu. Dotyczy to między innymi sterowania pompami, wentylatorami, zaworami, przenośnikami i napędami. Graficzny zapis ułatwia też pracę osobom, które lepiej czytają schematy niż kod tekstowy.
- W instalacjach HVAC można łączyć temperaturę, harmonogram, tryb pracy i alarmy w jedną czytelną strukturę.
- W układach pompowych FBD pozwala pokazać naprzemienną pracę pomp, czas zwłoki i reakcję na suchobieg.
- W automatyce maszyn bloki timerów, przerzutników i komparatorów pomagają budować sekwencje oraz blokady.
- W napędach można połączyć komendę startu, wybór kierunku, zadawanie prędkości i potwierdzenie gotowości falownika.
Nie używałbym FBD bez zastanowienia do bardzo dużych tablic danych, skomplikowanych receptur lub obliczeń wymagających wielu pętli. W takim przypadku lepszy może być ST, a FBD warto zostawić do warstwy sygnałów, alarmów i interfejsu procesu. Najpraktyczniejsze projekty nie wybierają języka według mody, tylko według tego, kto będzie utrzymywał instalację za kilka lat.
Jak uporządkować projekt przed uruchomieniem maszyny
Przed wgraniem programu przygotowuję listę wejść, wyjść, alarmów i stanów pracy. Każdy sygnał powinien mieć opis, jednostkę, zakres oraz informację, czy jest aktywny stanem wysokim, czy niskim. Taki prosty dokument często oszczędza więcej czasu niż późniejsze szukanie błędu online.
Testuję najpierw pojedyncze bloki, później całe sieci, a na końcu zachowanie procesu. Sprawdzam również sytuacje nietypowe: uruchomienie po zaniku zasilania, utratę komunikacji, uszkodzenie czujnika i ręczne przełączenie trybu. Dopiero gdy te przypadki są opisane i przewidywalne, program jest gotowy do bezpiecznego uruchomienia.
Na ekranach HMI pokazuję operatorowi nie tylko „silnik nie działa”, lecz także przyczynę: brak zezwolenia, aktywny STOP, przeciążenie albo brak sprzężenia. FBD jest wtedy nie tylko sposobem programowania, ale również mapą diagnostyczną całego procesu.
Od czytelnego bloku do stabilnego sterowania
Największa wartość FBD nie polega na tym, że program wygląda jak schemat. Chodzi o to, aby każdy warunek był widoczny, nazwany i możliwy do sprawdzenia podczas pracy sterownika. Dobrze opisane bloki, poprawne priorytety resetu, kontrola sygnałów analogowych i jedno miejsce zapisu wyjścia robią większą różnicę niż liczba użytych funkcji.
Na początek wystarczy zbudować kilka małych ćwiczeń: podtrzymanie START-STOP, timer TON, licznik detali i sterowanie pompą z blokadą. Gdy te elementy działają poprawnie także po błędzie i restarcie PLC, można bezpiecznie przejść do większych układów automatyki.