Reklama: Chcesz umieścić tutaj reklamę? Zapraszamy do kontaktu »
Reklama: Chcesz umieścić tutaj reklamę? Zapraszamy do kontaktu »
Powrót do listy artykułów Aktualizowany: 2022-03-02
Język strukturalny (ST) | Kurs programowania w Codesys odc. 7

Z tego artykułu dowiesz się:

  • czym jest język strukturalny ST,
  • jak tworzy się programy z wykorzystanie ST w Codesys,
  • jaką składnie posiada ST,
  • jakie są najważniejsze jego funkcje i jak je stosować.

Witamy w kolejnej części naszego kursu programowania w Codesys. Ostatnio poznałeś/aś podstawy tworzenia wizualizacji. W tym odcinku wracamy do programowania. Poznasz kolejny język dostępny w środowisku Codesys – język strukturalny, w skrócie ST od ang. Structured Text. Jest on odpowiedni dla użytkowników, którzy wolą tworzyć program przy pomocy tekstu, niż przeciągnięć graficznych elementów. Język ST to język pisemny, przypominający wyglądem i składnią takie języki programowania jak C lub Python. Chcesz dowiedzieć się więcej? Zapraszamy na kolejny odcinek kursu!

 


Czym jest i jak działa język ST?


Język Structured Text, podobnie jak język drabinkowy, jest zdefiniowany w międzynarodowej normie IEC 61131-3. Wprawdzie Ladder Diagram wciąż pozostaje najczęściej używanym językiem programowania sterowników PLC, jednak język ST plasuje się w notowaniu tuż za nim.

Jak już wspomniałem, język ST przypomina języki C, Pascal lub Python. Dlatego większość programistów, którzy posiadają choćby minimalne doświadczenie z tymi językami, korzysta też z języka strukturalnego. Podobieństwa polegają główne na sposobie pisania programu oraz deklaracji zmiennych, używanych do jego wykonania. Ponieważ język strukturalny jest językiem pisemnym, program będziesz w całości zapisywać za pomocą klawiatury i praktycznie nie spotkasz w nim elementów graficznych.

 

Język strukturalny czy drabinkowy? Który wybrać?


Każda funkcja, którą poznałeś/aś w odcinku 3 o języku drabinkowym, jest również dostępna w języku ST. Mówimy tu o funkcjach logicznych (takich jak AND, OR, XOR), operacjach matematycznych (dodawanie, odejmowanie itd.), a także o blokach funkcyjnych (jak np. zegary i liczniki). W przypadku obu języków, napisany w nich program będzie wykonywał się na takiej samej zasadzie. Pozwoli Ci to w łatwy sposób łączyć ze sobą różne funkcje, a nawet całe bloki funkcyjne, bez ryzyka pojawienia się błędów, co jest niezwykle przydatne przy tworzeniu zaawansowanych projektów.

To główne podobieństwa języka strukturalnego i języka drabinkowego. Jednak trzeba wspomnieć o znaczącej różnicy między nimi.

Język ST jest bardziej zaawansowany pod względem możliwości. Co to konkretnie oznacza? Otóż język ten wykorzystuje się w głównej mierze do tworzenia zaawansowanych projektów, ponieważ zapewnia więcej funkcji, które można wykorzystać podczas programowania. Pozwala to na wykonywanie przez sterownik bardziej skomplikowanych operacji, które potrzebują dużej mocy obliczeniowej. Natomiast język LD, ze względu na swoją strukturę i mniejszą dostępność funkcji, jest używany do prostszych projektów. Podczas poznawania składni oraz dostępnych funkcji języka ST przekonasz się, dlaczego istnieje taka zależność.

Język strukturalny warto stosować gdy:

  • Tworzysz zaawansowany projekt – przy zaawansowanych programach pisemny język programowania jest łatwiejszy do zrozumienia.
  • Projekt ma być ogólnodostępny – ze względu na małe różnice w sposobie pisania, program zapisany w języku ST można łatwo przekonwertować do innego środowiska.
  • Projektujesz algorytmy i obliczenia matematyczne – język ST posiada najprostszą strukturę obliczeń matematycznych, co ułatwia pisanie algorytmów.
  • Stosujesz dużą ilość pętli – pętle w języku drabinkowym są problematyczne do zaprojektowania, więc przy ich dużej ilości zaleca się stosowanie języka ST.

 

Jak stworzyć projekt w języku ST w Codesys?


Przejdźmy więc do Codesys! Tak samo jak w przypadku języka drabinkowego, poznasz możliwości działania oprogramowania Codesys wraz z językiem ST oraz zrealizujesz przykłady w symulatorze. Zapewne wiesz już jak utworzyć nowy program. Jeżeli jednak przegapiłeś/aś wcześniejsze odcinki, zapoznaj się z podstawami przedstawionymi w odcinku 1.

Przy tworzeniu nowego projektu, musisz zmienić język programowania na Structured Text (ST).

 

Codesys_Kurs_Astraada_One_ASTOR_Jezyk_ST_ZmianaST.gifZmiana języka na ST, źródło: ASTOR

Aby zacząć pracę nad programem, otwórz segment o nazwie PLC_PRG. Znajdziesz go w drzewku głównym, domyślnie znajdującym się po lewej stronie ekranu.

 

Codesys_Kurs_Astraada_One_ASTOR_Jezyk_ST_Otwieranie.gifOtwarcie PLC_PRG z drzewka głównego programu Codesys, źródło: ASTOR

Jak widzisz program wygląda prawie identycznie, jak w przypadku programowania w języku drabinkowym. Możesz jednak zauważyć, że ToolBox, który już poznałeś/aś w odcinku 3 jest pusty. (Jeżeli nie widzisz takiego okienka, kliknij w prawym górnym rogu w głównym menu opcję View, a następnie wybierz ToolBox.) Dlaczego okno ToolBox jest puste? Niestety, przy projektowaniu za pomocą języka strukturalnego, Codesys nie posiada „szablonów", takich jak przy stosowaniu języka drabinkowego. Jedynym sposobem na dodanie wybranej struktury jest jej własnoręczne wpisanie za pomocą klawiatury.

 

 

Jak zapisać algorytm w języku ST? Składnia kodu


Na początek musisz się zaznajomić ze składnią języka ST. Zaczniemy od trzech podstawowych zasad:

  • deklaracja zmiennych i komendy poleceń muszą być zakończone średnikiem;
  • kompilator nie widzi różnicy między małymi i dużymi literami, więc można ich używać dowolnie;
  • odstępy nie spełniają żadnej funkcji, służą tylko do poprawy kodu.

A teraz typy danych. W normie IEC 61131-3 zawarta jest informacja o dwóch typach danych: elementarnych oraz pochodnych.

Elementarne typy danych to:

  • Integer – przechowuje wartości liczbowe. Przykładowe pochodne to: int, uint, sint.
  • Float – przechowuje zwykle duże wartości liczbowe. Pochodne to Real i Lreal
  • Time – przechowuje wartości czasu. Przykładowe pochodne to: Time, Date.
  • String – przechowuje ciąg znaków lub wartości bitowe. Przykładowe pochodne to: Bool, String, Byte, Word.

Znasz już podstawowe zasady i zmienne, przejdźmy więc do operatorów. Operatorem nazywamy konstrukcję jedno bądź wieloargumentową, zwracającą wartość.

Argument to nic innego, jak wartość lub jedna z danych, przekazana do parametru funkcji. Wieloargumentowa konstrukcja to taka, która korzysta z więcej niż jednego argumentu, aby wykonać operację.

W języku ST możemy uwzględnić:

  • operatory arytmetyczne,
  • operatory porównania,
  • operatory operacji logicznych,
  • operatory operacji bitowych,
  • operatory przypisania.

O wszystkich rodzajach operatorów dowiesz się z dalszej części tego odcinka.

Funkcja to wydzielona część programu, wykonująca określone operacje, możliwa do wykonania podczas wykonywania programu. Funkcje stosuje się, aby uprościć program główny i zwiększyć czytelność kodu. Funkcje to np.: zegary oraz liczniki.

W funkcjach najczęściej używamy zmiennych. Zmienna to konstrukcja, dzięki której możemy przechowywać różnego rodzaju dane. Każdej zmiennej nadajemy nazwę. Używamy jej później, kiedy odwołujemy się do miejsca w pamięci, gdzie schowane są dane, które chcemy wykorzystać. Każda zmienna otrzymuje inny typ danych do przechowywania.

 

 

Dodawanie komentarzy i deklarowanie zmiennych w języku ST


W języku ST istnieje możliwość dodawania komentarzy do kodu programu. Możesz dzięki nim zapisać pewne objaśnienia lub wskazówki odnoszące się do linijki kodu lub nawet do całej jego sekcji. Poniżej zobaczysz 3 sposoby tworzenia komentarzy.

 

Codesys_Kurs_Astraada_One_ASTOR_Jezyk_ST_KOMETARZE.pngSposoby tworzenia komentarzy w środowisku Codesys, źródło: ASTOR

 

 

Deklaracja zmiennych


Deklaracje zmiennej możesz wykonać ręcznie lub poprzez poznaną już przez Ciebie podczas kursu funkcję Auto Declare (naciśnięcie klawiszy SHIFT i F2). Tym razem jednak nie będziesz korzystać z tego narzędzia, a zadeklarujesz zmienną ręcznie.

Deklarowanie w języku strukturalnym jest identyczne jak w języku drabinkowym. Nadanie typu zmiennej odbywa się poprzez dopisanie dwukropka „:" pomiędzy nazwę a typ zmiennej.

 

Codesys_Kurs_Astraada_One_ASTOR_Jezyk_ST_DeklaracjaZmiennejLok.gifDeklaracja zmiennej lokalnej w języku ST, źródło: ASTOR

Utworzyłeś właśnie pierwszą zmienną lokalną. Możesz dodać jej domyślną wartość, którą przyjmie zaraz po rozpoczęciu programu. Robimy to następująco:

Codesys_Kurs_Astraada_One_ASTOR_Jezyk_ST_DomyslnaWartosc.gifNadanie zmiennej domyślnej wartości, źródło: ASTOR

Tym sposobem możesz nadać wartość domyślną każdemu typowi zmiennej.

W przypadku używania dużych ilości zmiennych, zaleca się używanie prefiksów w ich nazwach. Ułatwia to identyfikację typu zmiennej, a także poprawia czytelność kodu.

 

Codesys_Kurs_Astraada_One_ASTOR_Jezyk_ST_PREFIKSY.pngPrzykładowe użycie prefiksów w nazwach zmiennych, źródło: ASTOR

 

 

Operatory przypisania, porównania i arytmetyczne


Instrukcja przypisania jest fundamentalną instrukcją zawartą w normie IEC. Zapisuje się ją następująco

X:=Y;

Kompilator odczytuje tę instrukcję w znaczeniu: „Odczytaj wartość Y i zapisz ją pod zmienną X".

Do instrukcji przypisania możesz dołączyć np. operacje matematyczne.

X:=Y+50;

Wtedy zmienna X otrzyma wartość Y, zwiększoną o 50.

Operatorem przypisania jest symbol „:=". Oznacza on przypisanie wartości Y oraz przypisanie jej zmiennej X. Częstym błędem jest mylenie tego symbolu z symbolem operatora porównania „=".

Użycie operatora porównania w przypadku takim jak powyżej, dokona operacji porównania i zwróci nam wartość Prawda lub Fałsz.

X=Y

Jak możesz zauważyć, powyższa linijka kodu nie jest zakończona średnikiem. Nie jest ona instrukcją, a operacją, dlatego dodanie średnika na końcu linijki kodu jest błędem.

Operatorami porównania są:

= (równa się),
< (mniejsze od),
<= (mniejsze od bądź równe),
> (większe niż),
>= (większe od bądź równe),
<> (nierówne).
Przejdziemy teraz do operatorów logicznych. Służą one do wykonywania operacji logicznych, w których jako rezultat otrzymujemy wartości typu BOOL, czyli Prawda/Fałsz.

Operatory logiczne dostępne w języku ST:

  • AND (suma logiczna),
  • OR (alternatywa logiczna),
  • XOR (alternatywa rozłączna),
  • NOT (zaprzeczenie).

Przykładowe użycie operatora logicznego wygląda następująco:

X AND Y

Jeżeli obie wartości X i Y to Prawda, operacja zwróci wartość Prawda. Jeśli jedna lub obie wartości to Fałsz, operacja zwróci wartość Fałsz.

Ostatnim rodzajem operatorów, są operatory arytmetyczne. Dzięki nim możesz dokonywać odpowiednich operacji matematycznych.

Operatory matematyczne wyglądają następująco:

+ (dodawanie),
– (odejmowanie),
* (mnożenie),
** (potęgowanie),
% (dzielenie modulo).
Przykładowe użycie operatora matematycznego:

wWynik:= X+Y;

Pod zmienną wWynik zapisze się wynik dodawania wartości X i Y.

 

 

Operacje bitowe


Operacje bitowe możesz wykonywać dzięki operatorom logicznym oraz funkcjom. Operacja logiczna jest wykonywana na każdym bicie wartości. Przykładowo:

wWynik:= 14 AND 9;

W zmiennej wWynik zapiszemy wynik operacji logicznej na 4 bitach, wykorzystując bity wartości zawarte w operacji. Wartości w postaci binarnej wyglądają następująco:

14 = 1110

9 = 1001

Aplikując funkcję logiczną AND między bitami obu liczb, otrzymasz wynik równy 1000. Wartość binarna wyniku odpowiada liczbie 8. Sterowniki PLC posiadają także możliwość wykorzystania funkcji operujących na bitach. Dzięki nim można zmieniać wartości zmiennych typu BYTE, WORD oraz DWORD.

Funkcje bitowe to:

  • ROR (obrót bitowy w prawo),
  • ROL (obrót bitowy w lewo),
  • SHR (przesunięcie bitowe w prawo),
  • SHL (przesunięcie bitowe w lewo).

Obrót bitowy polega na zmianie kolejności bitów w bajcie. Na zdjęciu poniżej możesz zobaczyć schemat przedstawiający funkcję ROL. Pierwszy bit z lewej jest przepisywany na miejsce pierwszego bitu z prawej. Pozostałe bity są przepisywane o jedno miejsce w lewo.

Schemat ukazujący działanie funkcji ROL, źródło: ASTOR
Taka operacja zapisana w środowisku Codesys wygląda następująco:

 

Codesys_Kurs_Astraada_One_ASTOR_Jezyk_ST_ROL.pngPrzykładowe użycie funkcji ROL, źródło: ASTOR

Wyniki użycia funkcji ROL na dwóch typach danych różnią się, ponieważ typy ...

.

Zobacz pełną wersję artykułu na portalu Poradnik Automatyka > >.

.

Zainteresował Cię artykuł i chcesz poznać więcej wartościowych treści?

Sprawdź Poradnik Automatyka!

www.astor.com.pl

Autor:
Mateusz Steczkowski
Źródło:
https://www.astor.com.pl/poradnikautomatyka/
Dodał:
ASTOR Sp. z o.o.