KWALIFIKACJA ELM6 - TEST WIEDZY NR 4

PYTANIE NR 16.
Podczas analizy programu sterownika PLC napisanego w języku ST (Structured Text) natknąłeś się na poniższy fragment kodu:
IF (Input1 AND NOT Input2) THEN
    Output := TRUE;
ELSE
    Output := FALSE;
END_IF;
Określ, kiedy wyjście "Output" będzie prawdą.
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Output przyjmuje TRUE tylko wtedy, gdy spełniony jest warunek z instrukcji IF: Input1 ma wartość TRUE oraz jednocześnie Input2 ma wartość FALSE (bo użyto NOT Input2). W każdej innej kombinacji wejść wykona się gałąź ELSE i Output będzie FALSE.

Pełne wyjaśnienie:

W języku ST (Structured Text) instrukcja IF...THEN...ELSE działa jak klasyczny warunek: gdy wyrażenie logiczne w nawiasie jest prawdziwe, wykonywany jest kod po THEN; w przeciwnym razie wykonywany jest kod po ELSE.

W analizowanym fragmencie warunek ma postać:

Input1 AND NOT Input2

Operator AND (koniunkcja) wymaga, aby obie strony były TRUE. Druga strona to NOT Input2, czyli negacja. To oznacza, że ta część jest TRUE tylko wtedy, gdy Input2 jest FALSE.

Zatem wyjście Output := TRUE zostanie ustawione wyłącznie w jednej sytuacji:

  • Input1 = TRUE oraz Input2 = FALSE.

Dlaczego pozostałe odpowiedzi są błędne?

  • Gdy Input1 i Input2 są TRUE, to NOT Input2 staje się FALSE, a całe wyrażenie TRUE AND FALSE jest FALSE, więc wykona się gałąź ELSE.
  • Gdy Input1 jest FALSE, niezależnie od Input2, wyrażenie z AND nie może być TRUE (bo AND wymaga TRUE po obu stronach). To typowa własność koniunkcji.
  • Gdy oba wejścia są FALSE, wtedy NOT Input2 jest TRUE, ale nadal mamy FALSE AND TRUE, czyli FALSE, więc Output pozostaje FALSE.

W praktyce taka logika jest często używana jako prosta blokada: sygnał zezwolenia (Input1) musi być aktywny, a sygnał blokujący/awaryjny (Input2) nie może występować.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Operator AND oznacza koniunkcję: całe wyrażenie jest TRUE tylko wtedy, gdy oba składniki są TRUE. Jeśli choć jeden składnik ma wartość FALSE, wynik AND będzie FALSE. To podstawowy operator logiki boolowskiej używany w programach PLC.
NOT to negacja logiczna: odwraca wartość BOOL. Gdy Input2 jest TRUE, to NOT Input2 jest FALSE. Gdy Input2 jest FALSE, to NOT Input2 jest TRUE. W PLC często używa się tego do warunków blokady.
Część po THEN wykona się wtedy, gdy warunek w nawiasie przy słowie IF ma wartość TRUE. Jeśli warunek jest FALSE, wykonywana jest część po ELSE (jeżeli występuje), a następnie program przechodzi do END_IF.
Gałąź ELSE jest wykonywana, gdy warunek IF jest niespełniony. Przypisanie Output := FALSE wymusza jednoznaczny stan wyjścia w każdym cyklu programu. To ogranicza "pamiętanie" poprzedniego stanu i ułatwia diagnozowanie logiki w PLC.
Rozpisz cztery kombinacje wejść (TRUE/FALSE) dla Input1 i Input2. Najpierw policz NOT Input2, a dopiero potem wynik AND. Zobaczysz, że tylko dla Input1=TRUE i Input2=FALSE całe wyrażenie jest TRUE.
Tak, często zapisuje się to jako pojedyncze przypisanie: Output := Input1 AND NOT Input2;. Daje to identyczny efekt logiczny jak IF z THEN/ELSE, o ile zależy Ci wyłącznie na ustawieniu wyjścia na TRUE lub FALSE zgodnie z warunkiem.
To typowy schemat "zezwolenie i brak blokady": Input1 bywa sygnałem start/zezwolenia, a Input2 sygnałem stop/awarii. Wyjście jest aktywne tylko wtedy, gdy zezwolenie jest obecne i jednocześnie nie ma sygnału blokującego.
Najczęstszy problem to przeoczenie krótkiego operatora NOT w środku warunku lub automatyczne czytanie "Input1 i Input2" bez analizy. Pomaga nawyk: najpierw zawsze upraszczaj negacje (NOT), potem wykonuj AND/OR zgodnie z logiką.
Dla samej logiki boole’owskiej AND jest przemienne, ale NOT Input2 musi pozostać przy Input2, bo negacja dotyczy konkretnej zmiennej. W praktyce kolejność może mieć znaczenie dla czytelności i diagnostyki, choć wynik logiczny pozostaje ten sam.
Użyj szybkiej reguły: przy AND wynik TRUE jest rzadki, zwykle tylko w jednej kombinacji. Następnie "odwróć" zmienną z NOT: jeśli ma być NOT Input2 TRUE, to Input2 musi być FALSE. To pozwala w kilka sekund wskazać właściwy stan.
info

To pytanie poprawnie rozwiązuje 79% zdających egzamin. średnio łatwe

Według specjalistów z branży: "Output przyjmuje TRUE tylko wtedy, gdy spełniony jest warunek z instrukcji IF: Input1 ma wartość TRUE oraz jednocześnie Input2 ma wartość FALSE (bo użyto NOT Input2)."

Źródła:

  • IEC 61131-3:2013, Programmable controllers — Part 3: Programming languages (Structured Text; instrukcja IF; operatory boolowskie AND/NOT)

Materiały:

  • Podręczniki i materiały dydaktyczne do IEC 61131-3 (sekcja Structured Text)
  • Zadania treningowe z tablic prawdy dla AND/OR/NOT
  • Dokumentacja środowiska PLC używanego w szkole (opis składni ST/SCL i typów BOOL)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego