KWALIFIKACJA ELM3 - TEST WIEDZY NR 6

PYTANIE NR 34.
BEGIN
  IF (Sensor1 = TRUE) THEN
    Motor1 := TRUE;
  ELSE
    Motor1 := FALSE;
  END_IF;
END;
Analizując powyższy fragment kodu, który jest napisany w języku ST (Structured Text), odpowiedz na pytanie: Kiedy silnik Motor1 zostanie włączony?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Motor1 zostanie włączony, gdy Sensor1 ma stan TRUE.
W gałęzi THEN program ustawia Motor1 := TRUE, a w gałęzi ELSE ustawia Motor1 := FALSE. Zatem wyjście Motor1 bezpośrednio "kopiuje" stan logiczny Sensor1.

Pełne wyjaśnienie:

Fragment programu jest zapisany w języku Structured Text i wykorzystuje instrukcję warunkową IF ... THEN ... ELSE. Warunek brzmi: (Sensor1 = TRUE). Oznacza to, że sterownik sprawdza, czy sygnał z czujnika Sensor1 ma wartość logiczną TRUE.

Jeżeli warunek jest spełniony (czyli Sensor1 = TRUE), wykonywana jest część THEN i następuje przypisanie: Motor1 := TRUE. W praktyce oznacza to ustawienie zmiennej/wyjścia sterującego silnikiem na stan włączenia.

Jeżeli warunek nie jest spełniony (czyli Sensor1 = FALSE), wykonywana jest część ELSE i program ustawia: Motor1 := FALSE, czyli wyłącza silnik.

Dlatego poprawna odpowiedź to: silnik Motor1 zostanie włączony, kiedy Sensor1 jest prawdziwy (TRUE).

  • "Kiedy Sensor1 jest fałszywy" – to błąd odwrócenia logiki. Dla Sensor1 = FALSE wykonywany jest blok ELSE, który wyłącza Motor1.
  • "Zawsze, niezależnie od stanu Sensor1" – nieprawda, bo w kodzie istnieje rozgałęzienie i zależność od warunku; Motor1 przyjmuje różne wartości w zależności od Sensor1.
  • "Nigdy, niezależnie od stanu Sensor1" – również nieprawda, ponieważ dla Sensor1 = TRUE program jawnie ustawia Motor1 na TRUE.

Wskazówka egzaminacyjna: czytaj instrukcję IF jak zdanie: "Jeśli Sensor1 jest TRUE, to włącz Motor1, w przeciwnym razie wyłącz Motor1". Zwracaj uwagę na różnicę między = (porównanie w warunku) i := (przypisanie wartości).

Dodatkowe pytania

Dodatkowe pytania (FAQ):

To instrukcja warunkowa: najpierw sprawdza warunek w nawiasie, a potem wykonuje tylko jedną z dwóch gałęzi.

Gdy warunek jest spełniony, wykonuje się część THEN, a gdy nie jest spełniony – część ELSE.

To porównanie logiczne: sterownik sprawdza, czy zmienna Sensor1 ma wartość TRUE.

Jeśli tak, wynik warunku jest TRUE i wykonywany jest blok THEN. Jeśli Sensor1 ma FALSE, wykonywany jest blok ELSE.

W wielu dialektach ST znak := oznacza przypisanie wartości do zmiennej, a = oznacza porównanie (np. w warunkach IF).

Dlatego Motor1 := TRUE ustawia Motor1, a nie porównuje.

Motor1 będzie TRUE wtedy, gdy warunek IF jest spełniony, czyli gdy Sensor1 = TRUE.

W gałęzi THEN program jawnie ustawia Motor1 := TRUE, więc jest to bezpośrednia zależność od stanu czujnika.

Tak, w tym konkretnym przykładzie efekt jest taki, jakby Motor1 przyjmował ten sam stan co Sensor1.

Dzieje się tak, bo dla TRUE ustawiane jest Motor1 := TRUE, a dla FALSE ustawiane jest Motor1 := FALSE. To typowy wzorzec logiki wejście–wyjście.

Najczęstsze pomyłki to odwrócenie logiki (uznanie, że włącza się przy FALSE), nieuwaga na ELSE oraz mylenie = z :=.

Pomaga czytanie kodu "na głos": jeśli warunek, to… w przeciwnym razie…

Nie, bo kod ma dwie różne ścieżki wykonania zależne od Sensor1. Gdy Sensor1 = TRUE, Motor1 jest włączany, a gdy Sensor1 = FALSE, Motor1 jest wyłączany.

Odpowiedź "zawsze" pasowałaby do kodu bez IF lub z ustawieniem TRUE w obu gałęziach.

Najprościej obserwować online zmienne w sterowniku: wymusić/zmienić stan wejścia (Sensor1) i sprawdzić, czy wyjście (Motor1) zmienia się zgodnie z IF.

W praktyce używa się podglądu zmiennych, trybu monitorowania i testów I/O.

Po zmianie Sensor1 na FALSE warunek IF przestaje być spełniony, więc wykonuje się gałąź ELSE i program ustawia Motor1 := FALSE.

W efekcie silnik zostanie wyłączony (o ile Motor1 steruje bezpośrednio wyjściem napędu).

Ćwicz czytanie krótkich fragmentów ST: IF/ELSE, operacje na zmiennych boolowskich, proste zależności wejście–wyjście.

Rób zadania z analizą "co jest TRUE/FALSE" i zawsze sprawdzaj, co jest w THEN oraz co w ELSE.

info

Około 72% zdających odpowiada poprawnie na to pytanie. średnio łatwe

Specjaliści zwracają uwagę: "Motor1 zostanie włączony, gdy Sensor1 ma stan TRUE.W gałęzi THEN program ustawia Motor1 := TRUE, a w gałęzi ELSE ustawia Motor1 := FALSE."

Źródła:

  • CODESYS Online Help – Structured Text (ST) / IF instruction: https://help.codesys.com/ (sekcja dot. ST i instrukcji warunkowych) - accessed 2026-02-18
  • Siemens S7-1200/S7-1500 TIA Portal – dokumentacja SCL/ST, instrukcje IF/ELSE (manuale online Siemens Industry): https://support.industry.siemens.com/ - accessed 2026-02-18

Materiały:

  • Dokumentacja środowiska PLC używanego w pracowni (opis ST i instrukcji IF/ELSE)
  • Materiały dydaktyczne z podstaw IEC 61131-3 (języki programowania PLC)
  • Zadania praktyczne: śledzenie (trace) zmiennych wejść/wyjść w symulatorze sterownika

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego