Fragment programu jest zapisany w języku ST (Structured Text). Konstrukcja IF ... THEN ... END_IF oznacza: "jeżeli warunek jest prawdziwy, wykonaj instrukcje wewnątrz bloku".
Tutaj warunek ma postać NOT E. Operator NOT neguje wartość logiczną, więc:
- gdy E = TRUE (krańcówka aktywna), wtedy NOT E = FALSE i blok nie wykona się,
- gdy E = FALSE (krańcówka nieaktywna), wtedy NOT E = TRUE i blok się wykona.
Wewnątrz bloku jest przypisanie M := FALSE. Znak := w ST oznacza nadanie wartości zmiennej (to nie jest porównanie). Ustawienie M na FALSE oznacza wyłączenie sygnału sterującego silnikiem (w typowym modelu: 0 na wyjściu/zmiennej sterującej).
Dlaczego pozostałe odpowiedzi są błędne?
- "Jeżeli czujnik krańcowy jest aktywny, silnik zostaje wyłączony" – to byłoby prawdą dla warunku IF E THEN M := FALSE, ale tutaj jest negacja NOT E.
- "Jeżeli czujnik krańcowy jest aktywny, silnik zostaje włączony" – w kodzie nie ma żadnej instrukcji ustawiającej M := TRUE, więc nie wynika z niego włączanie.
- "Jeżeli czujnik krańcowy jest nieaktywny, silnik zostaje włączony" – jest sprzeczne z jednoznacznym przypisaniem M := FALSE wykonywanym właśnie przy nieaktywnym E.
Wskazówka egzaminacyjna: zawsze "przetłumacz" warunek na proste zdanie (tu: "jeżeli E jest FAŁSZEM") i dopiero potem oceniaj skutek przypisania.