Do Projektu iAutomatyka dołączyli:

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

5650 wyświetleń, autor: Piotr Gwiazdowski • iAutomatyka.pl.

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

Newsletter

Zapisz się i jako pierwszy otrzymuj nowości!

Zapoznałem się i akceptuję klauzulę informacyjną.
20 września 2018 / Kategoria: , ,

Reklama

NAJNOWSZE PUBLIKACJE OD UŻYTKOWNIKÓW I FIRM

>KLIKNIJ<

PLC i bazy SQL – prosta integracja

PLC i bazy SQL – prosta integracja

>KLIKNIJ<

Autonomiczny robot mobilny – co to jest?

Autonomiczny robot mobilny – co to jest?

>KLIKNIJ<

Przykłady zastosowania easyE4 w branży wod-kan z perspektywy elektryka

Przykłady zastosowania easyE4 w branży wod-kan z perspektywy elektryka

>KLIKNIJ<

Optymalizacja danych w procesach produkcyjnych napędza polską gospodarkę

Optymalizacja danych w procesach produkcyjnych napędza polską gospodarkę

>KLIKNIJ<

Jak powstają MATERIAŁY WYBUCHOWE? – Fabryki w Polsce

Jak powstają MATERIAŁY WYBUCHOWE? – Fabryki w Polsce

>KLIKNIJ<

Nowoczesne maszyny do zimowego utrzymania płyty lotnisk z elektroniką BODAS Bosch Rexroth

Nowoczesne maszyny do zimowego utrzymania płyty lotnisk z elektroniką BODAS Bosch Rexroth

>KLIKNIJ<

Wdrożenie systemu RTLS w fabryce Volkswagena w Poznaniu

Wdrożenie systemu RTLS w fabryce Volkswagena w Poznaniu

>KLIKNIJ<

Czy elektryk może programować sterowniki PLC?

Czy elektryk może programować sterowniki PLC?

>KLIKNIJ<

DWI Motion – Dawid Wróblewski | Twój ekspert w dziedzinie napędów

DWI Motion – Dawid Wróblewski | Twój ekspert w dziedzinie napędów

>KLIKNIJ<

Rozszerzona obsługa Modbus w systemie SCADA ICONICS

Rozszerzona obsługa Modbus w systemie SCADA ICONICS

>KLIKNIJ<

Roboty REECO nagrodzone Godłem TERAZ POLSKA

Roboty REECO nagrodzone Godłem TERAZ POLSKA

>KLIKNIJ<

[Webinar] Cyberbezpieczeństwo sieci OT/IT. Zagrożenia i wyzwania dla sektora produkcji

[Webinar] Cyberbezpieczeństwo sieci OT/IT. Zagrożenia i wyzwania dla sektora produkcji

>KLIKNIJ<

Nowy minikurs o serwomechanizmach z Mitsubishi Electric

Nowy minikurs o serwomechanizmach z Mitsubishi Electric

>KLIKNIJ<

Jak działa ROLLER COASTER? – Fabryki w Polsce

Jak działa ROLLER COASTER? – Fabryki w Polsce

>KLIKNIJ<

Czym jest protokół MQTT?

Czym jest protokół MQTT?

>KLIKNIJ<

Pomiary ochronne w maszynach przemysłowych

Pomiary ochronne w maszynach przemysłowych

>KLIKNIJ<

Centralizacja danych w chmurze – czyli koncepcja IoT na przykładzie rozwiązań firmy Weintek

Centralizacja danych w chmurze – czyli koncepcja IoT na przykładzie rozwiązań firmy Weintek

>KLIKNIJ<

Zaawansowana wizualizacja w systemie SCADA ICONICS

Zaawansowana wizualizacja w systemie SCADA ICONICS

>KLIKNIJ<

Ewolucja zamiast rewolucji

Ewolucja zamiast rewolucji

>KLIKNIJ<

MQTT, WAGO Cloud – dane z obiektu na wyciągnięcie ręki

MQTT, WAGO Cloud – dane z obiektu na wyciągnięcie ręki





MOŻESZ SIĘ TYM ZAINTERESOWAĆ

  • Szybki i bezpieczny dostęp do maszyn i fabryk Usługa u-link gwarantuje szybki i bezpieczny dostęp do maszyn i fabryk, co ułatwia zdalne utrzymanie ruchu, jednocześnie pozwalając na wydajne zarządzanie zakładami produkcyjnymi i stacjami klie...
  • Systemy RFID są ekonomiczne, uniwersalne i zapewniają niezawodność procesów, np. w intralogistyce. Zadania związane z identyfikacją stały się teraz łatwiejsze, szczególnie gdy potrzebna jest duża liczba punktów identyfikacji, dzięki  głowic...
  • Selektor napędów Panasonic umożliwia przeglądanie napędów z serii MINAS, wyszukiwanie ich w prosty sposób, a nawet porównywanie ze sobą. Dzięki wyszukiwaniu po słowach kluczowych i przy użyciu funkcji filtrowania, potrzeba zaledwie sekund a...
  • EPSITRON®ECO & COMPACT Power OSZCZĘDNOŚĆ KOSZTÓW Zasilacze EPSITRON® ECO i COMPACT Power to nie tylko oszczędność przy zakupie, ale również niższe koszty dzięki łatwej obsłudze oraz braku konieczności serwisowania. Są one doskonałym roz...
  • Nowoczesne dotykowe panele operatorskie HMI firmy WEINTEK Labs. – Bezpłatne oprogramowanie narzędziowe w pełnej wersji – Precyzyjne, dotykowe ekrany wyświetlające szczegółową grafikę – Obszerne biblioteki komponentów grafi...
  • EPLAN Electric P8 oferuje nieograniczone możliwości planowania projektu, tworzenia dokumentacji oraz zarządzania projektami automatyki. Zautomatyzowane tworzenie szczegółowych raportów opartych na schematach okablowania jest integralnym ele...