Skip to main content

Podstawy programowania w języku Structured Text (ST)

Jako jeden z języków programowania PLC według normy IEC-61131, Structured Text, czy po prostu ST, przypomina tradycyjne języki programowania takie jak Python czy Java. Zamiast bloków języków graficznych, jak LAD czy FBD, Structured Text to po prostu tekst!

Zalety i wady języka ST

Jak każdy język programowania, Structured Text ma swoje zalety i wady, a także powody, dla których programista może wybrać ST do swojego kolejnego projektu PLC, więc przejdźmy od razu do konkretów:

  • Wysokopoziomowy język programowania
    ST jest podobny do tradycyjnych wysokopoziomowych języków programowania, dzięki temu może być stosunkowo łatwy do nauczenia się i opracowania projektów PLC dla wielu osób, które mogą nie mieć doświadczenia w programowaniu PLC, ale mają doświadczenie w tradycyjnym kodowaniu.
  • Oparty na tekście
    Znajdziesz tutaj znajome struktury rodem z języków wysokiego poziomu przeznaczone do kontroli przepływu programu typu: IF…ELSIF…ELSE czy CASE…OF. Dzięki temu w łatwy sposób uporządkujesz Twój program i będziesz pisał zaawansowane algorytmy. Taki program możesz łatwo modyfikować i debuggować, dzięki czemu przyśpieszysz swoją pracę.
  • Lekki język programowania
    Ponieważ język ST jest z definicji oparty na tekście, oznacza to, że nie ma obciążającego interfejsu graficznego, co może pozwolić optymalizację programu pod względem zajętości pamięci. To sprawia, że ST jest idealnym kandydatem do większych programów PLC, gdzie pamięć jest na wagę złota.

Podstawowe zasady składni języka ST

Składnia Structured Text kieruje się kilkoma podstawowymi zasadami:

  • Po pierwsze, wszystkie instrukcje w kończą się średnikiem.
  • Spacje i tabulatory nie są wymagane, ale dobry programista nadal będzie ich używał dla czytelności.
  • Ponadto, ST nie jest wrażliwy na wielkość liter, ale jeśli przypisujesz zmienną, znaną jako tag to używanie camelCase (ZaworKontrolny1) jest dobrą praktyką.
  • Nazwy zmiennych zwykle deklarujemy w notacji węgierskiej tzn. dodajemy odpowiedni prefiks określający typ danej zmiennej np. xLampka – typ BOOL, iTemperatura – typ INT

Używanie komentarzy

Inną bardzo powszechną i użyteczną składnią ST jest użycie komentarza. Jako początkujący programista, używanie komentarzy jest niezbędne do tworzenia kodu, który może być z łatwością odczytany przez innych programistów. Pamiętaj jednak, że najważniejsze są dobre i czytelne nazwy zmiennych.

Oto przykład komentarza w programie:

(*PRZYKŁADOWY PROGRAM STEROWANIA POMPĄ*)

Jak widać, aby dodać komentarz, zaczynasz od lewego nawiasu, a następnie gwiazdki. Aby zamknąć komentarz, dodajesz kolejną gwiazdkę, a następnie prawy nawias.

Operatory w języku Structured Text

ST używa również operatorów do manipulowania danymi. Przykłady operatorów to operatory logiczne, takie jak AND, OR i NOT. Operator logiczny jest używany do porównywania danych logicznych i tworzenia z nich logiki.

Przykłady:

IF NOT xZaworKontrolny1_Zamkniety AND xZaworKontrolny1_Otwarty THEN
	xPompaStart := TRUE;
END_IF

Jeżeli zawór nr 1 nie jest zamknięty i jest otwarty to pompa startuje.

IF xPrzyciskStart1 OR xPrzyciskStart2 
AND (NOT xZaworKontrolny1_Zamkniety AND xZaworKontrolny1_Otwarty) THEN
	xPompaStart := TRUE;
END_IF

Gdy wciśnięty jest przycisk start nr 1 lub przycisk start nr 2 i jeżeli zawór nr 1 nie jest zamknięty i jest otwarty to pompa startuje.

IF xPrzyciskStart1 OR xPrzyciskStart2 
AND (NOT xZaworKontrolny1_Zamkniety AND xZaworKontrolny1_Otwarty) THEN
	xPompaStart := TRUE;
ELSIF xPrzyciskStart1 OR xPrzyciskStart2 AND (xZaworKontrolny1_Zamkniety 
AND NOT xZaworKontrolny1_Otwarty) THEN
	xPompaStart := FALSE;
END_IF

Działa analogicznie do poprzedniego przykładu, lecz dodaliśmy tutaj operator „ELSIF”, więc jeśli warunek „IF” się nie jest spełniony to, sprawdzamy warunek dla „ELSIF” – jeśli spełniony to uruchamiamy pompę, a jeśli nie?

To wtedy musimy zastosować dodatkowo operator „ELSE” na wszystkie pozostałe możliwe przypadki:

IF xPrzyciskStart1 OR xPrzyciskStart2 
AND (NOT xZaworKontrolny1_Zamkniety AND xZaworKontrolny1_Otwarty) THEN
	xPompaStart := TRUE;
	xLampaAlarmowa := FALSE;
ELSIF xPrzyciskStart1 OR xPrzyciskStart2 
AND (xZaworKontrolny1_Zamkniety AND NOT xZaworKontrolny1_Otwarty) THEN
	xPompaStart := FALSE;
	xLampaAlarmowa := FALSE;
ELSE
	xPompaStop := FALSE;
	xLampaAlarmowa := TRUE;
END_IF

Gdy warunki „IF” oraz „ELSIF” się nie spełnią to wykonuje się kod pod operatorem „ELSE”.

POBIERZ INFORMATOR PDF Z PODSTAWOWYMI INSTRUKCJAMI JĘZYKA STRUCTURED TEXT

Sprawdź poniżej przykładowe instrukcje w Structured Text

Dowiedz się więcej na temat programowania sterowników PLC w języku tekstowym SCL przerabiając nasz kurs –> https://www.controlbyte.pl/st/

O autorze

Szymon Adamek

Author Szymon Adamek

Automatyk, Manager ds. klienta w ControlByte

Więcej postów tego autora Szymon Adamek