Język tekstowy – Structured Text

controlbyte.pl 5 miesięcy temu

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.
  • Oparte 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ż Strukturalny Tekstowy jest z definicji oparty na tekście, oznacza to, iż nie ma obciążającego interfejsu graficznego, co może pozwolić optymalizację programu pod względem zajętości pamięci. To sprawia, iż 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 przez cały czas będzie ich używał dla czytelności.
  • Ponadto, ST nie jest wrażliwy na wielkość liter, ale jeżeli 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, iż 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.

W ten sam sposób możemy tworzyć obszerne komentarze:

(*PRZYKŁADOWY PROGRAM STEROWANIA POMPĄ*) (*1. Sprawdza czujniki 2. Myśli 3. Odpala pompę 4. Kończy cykl odpalania 5. Sprawdza czujniki na bierząco *)

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 o ile 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, ale dodaliśmy tutaj operator „ELSIF”, więc jeżeli warunek „IF” się nie spełni to sprawdzamy warunek dla „ELSIF” – jeżeli spełniony to uruchamiamy pompę, a jeżeli 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”.

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

Idź do oryginalnego materiału