W poprzednim odcinku zajmowaliśmy się instrukcjami warunkowymi. Kiedy jednak istnieje potrzeba wykonania części kodu programu wiele razy, wykorzystujemy do tego pętle.
W programowaniu sterowników PLC pętle mają wiele zastosowań.
W języku ST wyróżnia się trzy rodzaje pętli:
- FOR
- WHILE
- REPEAT
Cechą wspólną wszystkich rodzajów pętli jest warunek zatrzymania pętli. Warunek dla pętli FOR oraz WHILE decyduje, czy pętla powinna się zatrzymać, czy pracować dalej. Z kolei dla pętli REPEAT warunek jest inny – pętla zatrzymuje się, kiedy warunek jest spełniony przy słowie kluczowym UNTIL.
Pętla FOR
Jest ona używana do wykonania pewnych operacji, określoną liczbę razy. Pętla FOR wyposażona jest w kilka słów kluczowych: TO, BY, DO and END_FOR.
Przykład składni dla pętli FOR w języku ST:
FOR iLicznik := wartość_początkowa TO wartość_końcowa BY wartość_inkrementacji DO
<wyrażenie>;
END_FOR;
Pierwsza linia może wydawać się dosyć skomplikowana, ale jeżeli podzielimy ją na kilka części, to wszystko stanie się jasne.
FOR:
Słowo kluczowe, które odpowiada za start pętli.
iLicznik := wartość_początkowa
Operacja przypisania jest do miejsca, gdzie wpisywana jest wartość początkowa, od której zaczynamy liczyć. iLicznik jest nazwą zmiennej, a wartość_początkowa jest wartością, od której chcemy zacząć liczyć.
TO:
Słowo kluczowe występujące przed wartością, do której chcemy liczyć.
Wartość_końcowa:
Jest to wartość, do której chcemy liczyć. Jeżeli np. wstawimy tutaj wartość 100, to pętla będzie liczyła do 100.
BY: // ta część nie jest obowiązkowa, domyślna wartość to 1
Słowo kluczowe odpowiedzialne za start inkrementacji z ustawioną wartością.
Wartość_inkrementacji: // ta część nie jest obowiązkowa, domyślna wartość to 1
Wartość o jaką chcemy zwiększyć zmienną iLicznik dla każdego wykonania pętli. Jeżeli ustawimy tutaj wartość 5 i będziemy zliczać do wartości 50, to pętla wykona się 10 razy.
DO:
<wyrażenie>; //wyrażenie wykonywane
END_FOR;
W poniższym przykładzie, w każdym obrocie pętli FOR będzie wpisywany pomiar wartości z wejścia analogowego do kolejnych wierszy tablicy.
Pętla WHILE
Jest ona nieco inna niż pętla FOR, ponieważ używa się jej do powtarzania pewnych części kodu tak długo, aż zostanie spełniony odpowiedni warunek.
Przykład składni dla pętli WHILE:
WHILE [wyrażenie_warunkowe] DP
<instrukcja>;
End_While;
Pomiędzy słowami kluczowymi WHILE oraz DO występuje wyrażenie warunkowe. Jeżeli wyrażenie warunkowe zostanie ustawione na wartość TRUE, to wszystkie instrukcje, aż do słowa kluczowego END_WHILE, zostaną wykonane.
W momencie osiągnięcia słowa kluczowego END_WHILE warunek pętli będzie sprawdzony jeszcze raz. Operacja będzie wykonywana w „kółko” do momentu, aż warunek będzie ustawiony na wartość FALSE.
Przykład dla pętli WHILE:
Warunek w pętli (1 linia kodu) jest sprawdzany pod kątem tego, czy zmienna iLicznik jest mniejsza od 100. Pętla będzie działała aż do momentu osiągnięcia przez zmienną iLicznik wartości 100. W drugiej linii kodu wykonywana jest iteracja. Oznacza to, że przy każdym wykonaniu pętli WHILE zmienna iLicznik będzie zwiększana o jeden.
W powyższym przykładzie pętla wykona się 100 razy. Kiedy wartość licznika osiągnie 100, wyrażenie warunkowe dla pętli zwróci wartość FALSE (ponieważ 100 nie jest mniejsze niż 100), a następnie pętla zostanie zatrzymana.
Pętla REPEAT
Ostatnim rodzajem pętli w ST jest pętla REPEAT. Działa w sposób całkiem odwrotny niż pętla WHILE. Ta pętla przestanie być wykonywana w momencie, gdy warunek dla pętli przyjmie wartość TRUE.
Składnia pętli REPEAT
REPEAT
<instrukcja>;
UNTIL [wyrażenie_warunkowe]
End_REPEAT;
Przykład algorytmu sortującego napisanego z wykorzystaniem pętli REPEAT.
Co dalej?
Poznałeś już wszystkie tajniki programowania w języku ST. Teraz czas przejść do działania. W kolejnym artykule opiszę kilka przykładów programów, bloków funkcyjnych i funkcji napisanych w języku ST oraz zaprezentuję środowiska programistyczne firmy WAGO, do tworzenia aplikacji dla projektów w automatyce.
Maciej Kurantowicz, WAGO.PL
Zobacz także:
Kurs programowania w języku ST, cz. 4
Kurs programowania w języku ST, cz. 3
Kurs programowania w języku ST, cz. 2
Kurs programowania w języku ST, cz. 1
Panie Macieju,
Bardzo ładnie Pan to opisał.
Ale gdzie można poczytać kolejne artykuły z programowaniem już prawdziwych maszyn?
Rozgrzałem się i mogę się się przeziębić….
Z poważaniem Tomasz Kamiński
Bardzo przystępnie opisane.
Świetny poradnik.
Dziękować.