KWALIFIKACJA ELM6 - TEST WIEDZY NR 1

PYTANIE NR 34.
Zidentyfikuj błąd w poniższym fragmencie kodu programowania sterownika PLC, który ma za zadanie uruchomić silnik (M) po naciśnięciu przycisku start (S) i zatrzymać go po naciśnięciu przycisku stop (ST).
IF S THEN
    M := TRUE;
ELSE IF ST THEN
    M := FALSE;
END_IF;
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
W logice IF/ELSE IF, gdy S i ST są jednocześnie TRUE, wykona się tylko pierwsza gałąź, więc M zostanie ustawione na TRUE (priorytet START).
W praktyce sterowania napędami często wymaga się priorytetu STOP, więc taki zapis bywa traktowany jako błąd projektu. Dodatkowo składnia ST bywa oczekiwana jako ELSIF.

Pełne wyjaśnienie:

Fragment programu ma realizować klasyczną funkcję START/STOP dla silnika: naciśnięcie START ustawia wyjście (M) na pracę, a naciśnięcie STOP zatrzymuje napęd. W języku ST (Structured Text) kluczowe jest to, że konstrukcja typu IF … ELSE IF/ELSIF … działa wykluczająco: po spełnieniu pierwszego warunku kolejne gałęzie nie są już sprawdzane.

To prowadzi do problemu w sytuacji konfliktowej, gdy oba sygnały są aktywne jednocześnie (S=TRUE i ST=TRUE). Wtedy wykonywana jest tylko pierwsza gałąź z ustawieniem M := TRUE, a część odpowiadająca STOP nie ma szans zadziałać. W efekcie logika nadaje priorytet START.

Z punktu widzenia praktyki przemysłowej i bezpieczeństwa często przyjmuje się zasadę: STOP ma mieć priorytet nad START. Oznacza to, że przy jednoczesnych sygnałach układ powinien przejść w stan zatrzymania. Aby to uzyskać, typowym podejściem jest sprawdzenie STOP jako pierwszego warunku (najpierw "reset", potem "set") albo użycie elementów pamiętających stan, np. przerzutnika SR/RS, które mają zdefiniowany priorytet.

Dlaczego pozostałe propozycje odpowiedzi są problematyczne?

  • Stwierdzenie, że nie ma błędu, pomija przypadek brzegowy S=ST=TRUE oraz aspekt priorytetów.
  • Uwagi o stanie początkowym zwykle nie są sednem w PLC, bo wyjścia po uruchomieniu programu często mają stan zainicjalizowany (w wielu praktycznych zastosowaniach FALSE), a problem dotyczy logiki warunków.
  • Twierdzenie o braku obsługi sytuacji "żaden przycisk nie jest naciśnięty" nie musi być błędem: zachowanie zatrzaskowe (utrzymanie ostatniego stanu M) jest typowe dla START/STOP.

Wskazówka egzaminacyjna: analizuj zawsze przypadki skrajne (TRUE/TRUE, TRUE/FALSE, FALSE/TRUE, FALSE/FALSE) i sprawdzaj, czy w konflikcie sygnałów logika zachowuje się bezpiecznie oraz jednoznacznie.

Dodatkowe pytania

Dodatkowe pytania (FAQ):

Priorytet STOP oznacza, że gdy sygnały START i STOP pojawią się jednocześnie lub prawie jednocześnie, układ ma przejść w stan bezpieczny, czyli zatrzymać napęd.

W praktyce realizuje się to przez sprawdzanie STOP jako pierwszego warunku albo przez użycie przerzutnika z priorytetem resetu.

Instrukcja IF z ELSIF działa wykluczająco: gdy pierwszy warunek jest spełniony, kolejne gałęzie nie są już analizowane.

To ważne przy sygnałach konfliktowych, bo kolejność warunków definiuje priorytet działania (np. START może "przykryć" STOP, jeśli jest sprawdzany wcześniej).

To przypadek brzegowy, bo ujawnia konflikt sterowania: dwa polecenia wymuszają różne stany wyjścia.

Jeśli program nie ma zdefiniowanego priorytetu, wynik zależy od kolejności instrukcji, co bywa niebezpieczne i trudne do diagnozowania w uruchomieniu maszyny.

Typowe błędy to pomijanie sytuacji S=TRUE i ST=TRUE, mylenie ELSIF z niezależnym IF oraz brak świadomego zdefiniowania priorytetu STOP.

Często też źle rozumie się zachowanie zatrzaskowe, oczekując, że M samo wróci do FALSE, gdy puści się START.

Nie musi to być błąd. W sterowaniu START/STOP typowe jest "pamiętanie" stanu: START ustawia M, a STOP kasuje M, a gdy żaden przycisk nie jest naciśnięty, stan pozostaje bez zmian.

To odpowiada klasycznemu zatrzaskowi i jest często oczekiwane.

Najprościej ustawić warunek STOP jako pierwszy: jeśli STOP jest aktywny, wyjście ma zostać wyłączone niezależnie od START.

Alternatywnie używa się przerzutnika SR/RS, gdzie reset ma priorytet, co daje jednoznaczne zachowanie w konflikcie.

SR/RS to element logiki "set-reset", który pamięta stan wyjścia: sygnał SET ustawia, a RESET kasuje.

Stosuje się go, aby w prosty sposób zbudować zatrzask START/STOP oraz jawnie zdefiniować priorytet w konflikcie, co ułatwia analizę i uruchomienie.

Zrób tabelę przypadków: S/ST = 0/0, 1/0, 0/1, 1/1 i prześledź, która gałąź IF się wykona.

To pozwala szybko wykryć konflikty oraz zobaczyć, czy brak sygnałów utrzymuje stan (zatrzask), czy wymusza wyłączenie.

To zależy od konkretnego środowiska i implementacji ST. W wielu opisach i standardowych przykładach spotyka się formę ELSIF jako dedykowaną gałąź warunkową.

Na egzaminie warto trzymać się typowej składni ELSIF, bo bywa traktowana jako poprawna forma w ST.

Ćwicz czytanie krótkich fragmentów ST: IF/ELSIF, operacje przypisań, logikę zatrzaskową i priorytety. Zawsze analizuj przypadki brzegowe (np. jednoczesne sygnały).

Pomaga też przepisywanie logiki na tabelę prawdy i porównywanie jej z oczekiwanym zachowaniem układu.

info

Około 35% zdających odpowiada poprawnie na to pytanie. bardzo trudne

W praktyce zawodowej kluczowe jest to, że dodatkowo składnia ST bywa oczekiwana jako ELSIF.

Materiały:

  • Materiały producenta PLC do języka ST (instrukcje IF/ELSIF, przykłady START/STOP)
  • Podręczniki do IEC 61131-3 (Structured Text) – składnia i semantyka instrukcji
  • Ćwiczenia laboratoryjne: implementacja START/STOP z priorytetem STOP oraz z blokami SR/RS

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego