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ć.