Do Projektu iAutomatyka dołączyli:

https://iautomatyka.pl/wp-content/uploads/2018/09/Kurs_ST.jpg

Mitsubishi Electric: Podstawy programowania sterowników PLC w języku strukturalnym ST


Artykuł z serii: Podstawy urządzeń automatyki - Mitsubishi Electric


Ukończyłem automatykę i robotykę na pierwszym stopniu i o języku strukturalnym usłyszałem dopiero podczas praktyk. Na uczelni w praktyce korzystaliśmy tylko z języka drabinkowego, a w teorii słuchaliśmy o liście instrukcji (IL / STL). Kiedy pierwszy raz zderzyłem się z programowaniem z użyciem języka ST byłem lekko zszokowany. Jak to? Można pisać tekstowo? Wcześniej programowałem trochę w C, więc język strukturalny przyniósł mi duże ułatwienie i pozwolił w dużym stopniu wykorzystać możliwości sterownika. Jakiś czas temu na grupie Automatyk Może Więcej na facebooku zobaczyłem ankietę, z której wynika, że zdecydowana większość osób na co dzień korzysta z języka drabinkowego, chociaż język strukturalny uplasował się na drugim miejscu (z ogromną stratą do pierwszego). Ostatnio w ręce wpadł mi poradnik, czy też krótki kurs, z podstaw programowania sterowników właśnie w języku ST, wydany przez Mitsubishi Electric i chciałbym się nim z wami podzielić.

Rozdział 1 – Przegląd tekstu strukturalnego

Język ST jest zdefiniowany w trzeciej międzynarodowej normie IEC 61131-3, która opisuje graficzne i tekstowe języki programowania dla sterowników PLC. Przy korzystaniu z każdego języka programowania należy trzymać się pewnych zasad składniowych. Zasady te określają symbole, które są dostępne oraz w jaki sposób łączyć symbole w większe struktury. Norma określa następujące symbole i instrukcje:

Operacja Zapis Operacja Zapis
Negacja – albo NOT Koniunkcja & albo AND
Potęgowanie ** Alternatywa OR
Mnożenie * Alternatywa rozłączna XOR
Dzielenie / Przypisanie :=
Modulo MOD Koniec instrukcji ;
Dodawanie + Zwrócenie wartości RETURN
Odejmowanie Instrukcja warunkowa IF / WHILE
Porównanie >, <, <=, >= Instrukcja wyboru CASE
Równość = Instrukcja iteracyjna FOR
Nierówność <> Wyjście z pętli EXIT

Rozdział 2 – Podstawowe zasady zapisu w języku ST

Powyższy przykład opisuje program, który załącza wyjście Y10 wtedy, kiedy wejście X0 jest włączone, oraz wyłącza wyjście Y10, gdy wejście X0 jest wyłączone. Taka linia kodu składa się z:

  • instrukcji – określa ona operację jaka ma być wykonana,
  • argumentów – komórka pamięci / wejście / wyjście / coś na czym operuje program. Argumenty są używane do opisana zmiennych, wyrażeń arytmetycznych itp,
  • przecinka – oddziela argumenty,
  • średnik – musi znajdować się zawsze na końcu linii.

Następny przykład przedstawia program, w którym zastosowano wyrażenie przypisania. Poniższe wyrażenie przypisuje stałą dziesiętną 5 do zmiennej D10.

Komentarze w języku ST umieszcza się w nawiasie pomiędzy dwiema gwiazdkami (* *). Oczywiście można posługiwać się różnymi typami, nie tylko liczbami dziesiętnymi. Poniższa tabela przedstawia listę typów zapisów numerycznych stosowanych w języku ST.

Za pomocą liczb można też reprezentować wartości bitowe. Oprócz tego można używać słów TRUE i FALSE. Poniżej przedstawiono przykłady przypisania wartości do zmiennych typu bit.

Rozdział 3 – Obsługiwanie wejść i wyjść

Podstawowym zadaniem sterownika PLC jest wysterowywanie wyjść na podstawie przetworzonego programu, w oparciu o zebrane z urządzeń wejściowych sygnały. Często jako instrukcji wyjścia używa się funkcji OUT. Posiada ona dwa argumenty, pierwszy to warunek wykonania instrukcji, a drugi to wyjście, które ma być wysterowane.

Oczywiście to samo co wyżej można zapisać na różne sposoby. Na przykład stosując operator przypisania.

Przy tworzeniu programów korzystać można oczywiście z operatorów logicznych. W jednej linii można wykorzystywać nieskończenie wiele operatorów logicznych. Dla przykładu poniżej przedstawiono obwód z samo-podtrzymaniem.

Jeżeli na wejściu X0 pojawi się sygnał i jednocześnie nie będzie go na wejściu X1 to wyjście Y70 zostanie wysterowane. Jeżeli wyjście Y70 jest już wysterowane to nie ma konieczności obecności sygnału na wejściu X0. Krótko mówiąc za pomocą wejścia X0 wystarczy raz „uruchomić” wyjście Y70 a zostanie oni załączone dopóki nie wystąpi inne zakłócenie w obwodzie. Powyższy program mógłby być zapisany w języku drabinkowym w następujący sposób:

Rozdział 4 – operacje arytmetyczne

W języku strukturalnym operacje arytmetyczne zapisujemy niemal jak w zeszycie. Należy jedynie pamiętać, że operatorem przypisania jest „:=”, a nie zwykły znak równa się. Oprócz tego możemy używać poniższych operatorów:

Dla przykładu poniżej zapisano fragment programu, który zlicza całkowitą wartość produkcji z dwóch linii produkcyjnych biorąc pod uwagę elementy odrzucone.

Ten sam program w języku drabinkowym można zapisać w następujący sposób:

Jak widać stosując język strukturalny można zwiększyć czytelność i zmniejszyć wizualną objętość programu. Fragment kodu, zapisany w języku drabinkowym, zajmujący 3 linijki w języku strukturalnym można zapisać w jednej.

Podczas wykonywania operacji na zmiennych należy zawsze pamiętać o tym, by miały one taki sam typ. Tak jak w każdym języku porównywać ze sobą można jedynie dane tego samego typu. Dobrą praktyką jest umieszczanie w nazwie zmiennej prefiksu określającego typ danych, aby ułatwić wzrokową identyfikację typów i uniknąć pomyłek. Dla przykładu dla zmiennych całkowitych i zmiennych typu bit prefiksy zawarto w poniższej tabeli.

Dzięki stosowaniu takiego zapisu w łatwy sposób możemy wychwycić błędy podczas pisania programu. Chcąc do zmiennej ValueA przypisać wartość zmiennej ValueB otrzymalibyśmy błąd na etapie kompilowania kodu, ponieważ są one różnych typów. Dzięki używaniu prefiksów możemy wizualnie zobaczyć, że popełniliśmy błąd i oszczędzić sobie czasu przy próbie analizy ostrzeżeń z kompilatora.

Rozdział 5 – operacje warunkowe

Operacje warunkowe wykonywane są, gdy zostanie spełniony dany warunek. Nie trudno wyobrazić sobie taką sytuację: gdy wcisnę przycisk, chcę aby linia zatrzymała się. W tym celu w programach pisanych w języku strukturalnym używa się instrukcji warunkowej IF (z ang. jeżeli). Wyrażenie rozpoczyna się od słowa IF i kończy na END_IF;, po IF zapisuje się warunek, następnie słowo THEN (wtedy) oraz instrukcje, która ma się wydarzyć jeżeli warunek zostanie spełniony. Na podstawie poniższego przykładu można to nawet przetłumaczyć na język polski: JEŻELI temperatura spadła poniżej zera (wTemperature < 0) WTEDY włącz grzałkę (bHeater := 1).

Wyrażenia IF stosujemy, kiedy uzależniamy wykonanie instrukcji od spełnienia warunku. W momencie, kiedy nasza zmienna warunkowa może przybierać kilka wartości całkowitych, a w zależności od tych wartości mają wykonywać się różne instrukcje można użyć operacji warunkowej CASE zamiast kilku operacji IF.

Instrukcja rozpoczyna się od słowa CASE i kończy na END_CASE;. Po słowie CASE wpisujemy nazwę zmiennej warunkowej. To w zależności od wartości tej zmiennej będą wykonywane kolejne instrukcje. Następnie używamy słowa OF oraz zapisujemy kolejno instrukcje do wykonania dla każdej przewidzianej wartości zmiennej warunkowej. Po słowie ELSE zapisujemy instrukcję, która ma się wykonać jeżeli zmienna warunkowa przybierze inną wartość niż zakładane. Dla przykładu załóżmy układ, gdzie użytkownik z panelu może wpisać ilość załączonych grzałek w kotle. Może wybrać od jednej do czterech grzałek (bHeater1 – bHeater4), lub wyłączyć wszystkie ustawiając 0.

CASE wIloscGrzalek OF

1: bHeater1 := 1; bHeater2 := 0; bHeater3 := 0; bHeater4 :0;

2: bHeater1 := 1; bHeater2 := 1; bHeater3 := 0; bHeater4 :0;

3: bHeater1 := 1; bHeater2 := 1; bHeater3 := 1; bHeater4 :0;

4: bHeater1 := 1; bHeater2 := 1; bHeater3 := 1; bHeater4 :1;

ELSE bHeater1 := 0; bHeater2 := 0; bHeater3 := 0; bHeater4 :0;

END_CASE;

Więcej

Nie jest to wszystko, co znajdziemy w kursie wydanym przez Mitsubishi. W poradniku można przeczytać:

  • w jaki sposób odczytywać i zapisywać dane,
  • jak tworzyć i organizować tabele,
  • czym jest i jak działa pętla FOR,
  • czym jest struktura powiązanych danych,
  • jak zapisywać i odczytywać tablice struktur,
  • jak przetwarzać ciągi znaków.

Na końcu znajdziemy również test, który pomoże sprawdzić jak uważnie czytaliśmy kurs oraz jak dużo nauczyliśmy się języka strukturalnego.

Cały kurs możesz pobrać z TEJ strony. Więcej kursów i przydatnych materiałów znajdziesz na platformie e-learningowej Mitsubishi Electric.

Moim zdaniem warto poznać język strukturalny, ponieważ jest to nowa jakość w dziedzinie programowania sterowników. Już od jakiegoś czasu widać zwiększającą się popularność w używaniu języka ST, a trend ten powinien jedynie rosnąć. Korzystając z języka strukturalnego można pisać zaawansowane skrypty i funkcje dużo łatwiej niż w innych językach programowania sterowników PLC.


Więcej z serii: Podstawy urządzeń automatyki - Mitsubishi Electric


Utworzono: / Kategoria: , ,
  • Autor: Piotr Gwiazdowski • iAutomatyka.pl
  • Redaktor Naczelny iAutomatyka.pl
    Inżynier automatyki i robotyki, z doświadczeniem jako pracownik utrzymania ruchu. Pasjonuje mnie pisanie, produkcja wideo i dzielenie się wiedzą. Swoje pasje i umiejętności inżynierskie łączę poprzez pracę dla portalu iAutomatyka.pl
  • Profil Autora

Reklama



PRZECZYTAJ RÓWNIEŻ



NAJNOWSZE PUBLIKACJE OD UŻYTKOWNIKÓW I FIRM

Reklama



POLECANE FIRMY I PRODUKTY