W dzisiejszym odcinku zajmiemy się instrukcjami warunkowymi. Są one używane w jednym celu, aby podejmować decyzje w programie PLC. W języku Structured Text dostępne są dwie opcje instrukcji warunkowych: warunek IF oraz warunek CASE.
Instrukcja warunkowa IF
Instrukcję warunkową IF trzeba zapisać w odpowiedni sposób. Istnieje specjalna składnia oraz słowa kluczowe.
Przykład poniżej.
Pierwsza i druga linijka zawiera dwa słowa kluczowe: IF oraz THEN. Pomiędzy nimi znajduje się sprawdzany warunek. Jeżeli wyrażenie warunkowe (IF) zwróci wartość TRUE, wtedy (THEN) instrukcja zostanie zrealizowana.
Wyrażenia warunkowe możemy podzielić na dwie grupy, w zależności od tego, jaką wartość zwracają.
- Wyrażenia binarne (zwracają wartość TRUE lub FALSE)
Przykłady: 2 = 3
To wyrażenie zwraca wartość FALSE, ponieważ liczba 2 nie jest równa liczbie 3.
6 > 5
W tym przypadku wyrażenie zwraca wartość TRUE, bo liczba 6 jest większa niż liczba 5.
- Wyrażenia numeryczne
Mogą operować na wartościach typu integer oraz wartościach typu float.
Wyrażenie numeryczne może wyglądać następująco: 16.7 + 19.2 – 23.5 Wyrażenie to zwraca liczbę zmiennoprzecinkową.
Wyrażenia binarne używane są do zdefiniowania warunku w instrukcji IF.
Sterownik PLC wykona instrukcje zlokalizowane po słowie kluczowym THEN, jeżeli wyrażenie warunkowe zwróci wartość TRUE. Widać to w poniższym przykładzie:
Trzecia linia zostanie wykonana, jeżeli zmienna X będzie równa wartości 100. W powyższym przypadku warunek ten będzie spełniony. Wartość 100 została wpisana do zmiennej X zaraz przed warunkiem IF.
Czy już wiesz, jak działa warunek IF?
W powyższym przykładzie, w warunku IF jest podejmowana decyzja w zależności od wartości zmiennej zawartej w warunku. Jest to po prostu pytanie – czy zmienna X jest równa wartości 100?
Poniżej przedstawię prosty warunek odnoszący się do programowania PLC. Jest to wysterowanie wyjścia cyfrowego w zależności od stanu wejścia cyfrowego.
Przykład ilustruje, jak można wykonywać warunki decyzyjne w sterowniku PLC. Zmienna reprezentująca wyjście (w tym przypadku xKontrolka) zostanie ustawiona w stan wysoki tylko wtedy, gdy wejście (xPrzycisk) zostanie ustawione w stan wysoki.
Co robi PLC, gdy warunek IF nie jest spełniony?
Poznałeś warunek IF, w którym instrukcja wewnątrz warunku zostanie wykonana tylko wówczas, gdy wyrażenie sprawdzane w warunku jest równe wartości TRUE.
Co w przypadku, gdy program wymaga zapisania kilku instrukcji warunkowych pod rząd? Oczywiście można to zrobić, wykorzystując wiele instrukcji IF, ale język ST posiada opcję wykorzystania wielu warunków dzięki instrukcjom ELSIF oraz ELSE.
Poniżej przykładowa składnia dla warunków ELSIF oraz ELSE:
Jeżeli wyrażenie warunkowe w pierwszej linii kodu jest równe wartości FALSE, instrukcja poniżej po prostu nie zostanie wykonana i zostanie sprawdzony kolejny warunek. Na końcu mamy instrukcję ELSE. Jeżeli wszystkie wyrażenia warunkowe w warunkach IF oraz ELSIF przyjmują wartość FALSE, wtedy zostanie wykonana instrukcja w warunku ELSE.
Wykorzystanie operatorów w celu budowania zaawansowanych wyrażeń warunkowych
Oprócz opcji budowania wielu warunków, można także rozszerzyć swoje warunki zawierając w wyrażeniach warunkowych wiele zmiennych. Wykorzystaj do tego algebrę Boole’a (operatory logiczne np. AND czy OR).
Pompa zostanie odblokowana (wpisanie wartości TRUE do zmiennej xPompa_Enable) w momencie, gdy zmienna xPrzycisk, xCzujnik oraz xZabezpiczenie_terminiczne przyjmują wartość TRUE.
Instrukcja CASE
Kolejną instrukcją, odpowiadającą za decyzje w języku ST jest CASE. Jest ona podobna do IF, ale wykorzystuje wyrażenia numeryczne zamiast wyrażeń binarnych.
Przykład składni dla instrukcji CASE:
W instrukcji CASE występuje tylko jedno wyrażenie warunkowe. Wynik z wyrażenia warunkowego wskazuje, które wyrażenie ma być wykonane. Instrukcja CASE posiada także domyślą opcję ELSE. Wyrażenie poniżej ELSE jest wykonywane w przypadku, gdy wynik nie pasuje do żadnego z warunków zawartych w instrukcji CASE.
Poniżej prosty przykład:
Pokazuje on, jak napisać wyrażenie warunkowe w zależności od wyrażenia numerycznego zawartego w instrukcji CASE. Wykonując inkrementację zmiennej iKROK przechodzimy z od jednego kroku do następnego.
Czasami istnieje potrzeba wykonania części kodu programu wiele razy. Wykorzystujemy do tego pętle.
Maciej Kurantowicz, WAGO.PL
Zobacz także:
Kurs programowania w języku ST, cz. 5
Kurs programowania w języku ST, cz. 3
Kurs programowania w języku ST, cz. 2
Kurs programowania w języku ST, cz. 1