Pokazany fragment programu w języku ST realizuje czystą logikę kombinacyjną, czyli taką, która nie zapamiętuje stanu. W sterowniku PLC instrukcje są wykonywane cyklicznie (w kolejnych skanach programu), dlatego wynik przypisania do zmiennej M jest w praktyce odświeżany w każdym obiegu.
Instrukcja:
IF S THEN M := TRUE; ELSE M := FALSE; END_IF;
oznacza: gdy sygnał S jest aktywny (TRUE), wyjście/zmienna M ma być TRUE; w przeciwnym razie ma być FALSE. Taki zapis można uprościć do równoważnej zależności M := S. W konsekwencji silnik (M) pracuje wyłącznie wtedy, gdy przycisk start (S) jest wciśnięty, a po puszczeniu sygnał znika i w następnym skanie PLC M przechodzi na FALSE.
Dlaczego pozostałe opisy nie pasują?
- Opis mówiący o pozostaniu włączonym po puszczeniu przycisku odpowiada sterowaniu bistabilnemu lub samopodtrzymaniu. Do tego potrzebny byłby element pamięci (np. SET/RESET albo warunek z podtrzymaniem), którego w kodzie nie ma.
- Stwierdzenie, że silnik nie uruchamia się nigdy, przeczy temu, że przy S=TRUE program jawnie ustawia M:=TRUE.
- Wariant z wyłączeniem po czasie wymagałby użycia timera (funkcji czasowej) lub dodatkowej logiki odmierzającej czas. W przedstawionym fragmencie nie ma żadnych mechanizmów czasowych, więc zachowanie jest natychmiastowe w sensie skanu PLC.
W praktyce takie sterowanie nazywa się często JOG (ruch impulsowy): napęd działa tylko tak długo, jak długo operator utrzymuje sygnał sterujący. To przydatne w trybie ręcznym, do testów i precyzyjnego pozycjonowania.