Języki programowania sterowników PLC

21 Sierpień 2024

Witajcie w drugiej części naszego artykułu na temat sterowników PLC! Jeśli nie mieliście jeszcze okazji zapoznać się z pierwszą częścią, zachęcamy do zapoznania się z artykułem pt. "Co to jest sterownik PLC?".

W tej części Andrzej Bogusz, ekspert w dziedzinie automatyki z Raion Automatyka, przedstawia zarys historyczny rozwoju sterowników PLC oraz „ojca sterowników programowalnych”. Dogłębnie przyjrzymy się również językom programowania PLC i oprogramowaniu sprzętowemu – Hardware.





Historia

Powstanie pierwszego sterownika PLC miało swoje początki w 1968 roku, kiedy inżynierowie amerykańskiego przemysłu samochodowego zainicjowali prace nad nowym typem sterowania. Celem było stworzenie systemu, w którym algorytm działania byłby zapisany nie w „odrutowaniu”, lecz w pamięci. Firma General Motors rozpoczęła opracowywanie nowego uniwersalnego sterownika, który mógłby pracować w wymagających warunkach przemysłowych. Efektem tych prac był powstały w 1969 roku pierwszy programowalny sterownik, znany jako Modicon 084, zaprojektowany przez Dicka Morleya. Ten wynalazek zrewolucjonizował przemysł, wprowadzając nowoczesne podejście do sterowania procesami przemysłowymi.

W 1993 roku w odpowiedzi na potrzeby standaryzacji sterowników PLC oraz ujednolicenia języków ich programowania powstała norma IEC 61131. Na podstawie doświadczeń zgromadzonych przez wielu producentów i użytkowników sterowników, Międzynarodowa Komisja Elektrotechniki (IEC) opracowała normę IEC 61131, znaną także jako „Programmable Controllers”. Celem jej wprowadzenia było ułatwienie współpracy między różnymi systemami sterowania oraz zapewnienie spójności w ich programowaniu. Obecnie wykorzystywana jest trzecia część międzynarodowej normy IEC 61131 z 2013 roku opisująca graficzne i tekstowe języki programowania dla sterowników PLC.





LD

Schemat Drabinkowy (ang. Ladder Diagram) – graficzny język programowania sterowników PLC, który wywodzi się z elektrycznych schematów sterowania opartych na technice stykowo-przekaźnikowej. Podstawowe elementy schematu drabinkowego to:

  • Styki: Symbolizują wartości logiczne sygnałów wejściowych i zmiennych boolowskich.

  • Cewki: Przedstawiają dwustanowe wyjścia, które sterują wyjściami dyskretnymi i przypisują wartości logiczne do zmiennych boolowskich.

Schemat drabinkowy powstał jako metoda dokumentacji sterowania przekaźnikowego, stosowanego w produkcji i kontroli procesów. Każde urządzenie w szafie przekaźnikowej było reprezentowane przez odpowiedni symbol na schemacie, wraz z połączeniami między tymi urządzeniami. Dzięki temu schemat drabinkowy jest dla przeciętnego programisty prostszy i łatwiejszy do opanowania niż tekstowe języki programowania sterowników.

Oprócz podstawowych symboli styków i cewek, schemat drabinkowy pozwala na użycie bardziej zaawansowanych funkcji, takich jak: funkcje arytmetyczne, funkcje logiczne, funkcje porównań i relacji, bloki funkcjonalne (czasomierze, liczniki itp.).

Dzięki swojej prostocie i intuicyjności, schemat drabinkowy jest popularnym narzędziem do programowania sterowników PLC, umożliwiając łatwe tworzenie i zrozumienie programów sterowania.





FBD

Schemat Bloków Funkcyjnych (ang. Functional Block Diagram) – kolejny język graficzny, inspirowany schematami ideowymi stosowanymi w elektronice cyfrowej. W języku FBD program jest przedstawiany jako zestaw bloków i elementów sterujących (np. łączników, instrukcji skoków), które są połączone liniami, symbolizującymi przepływ sygnałów.

Podstawowe cechy schematu bloków funkcjonalnych:

  • Bloki i elementy sterujące: Główne komponenty schematu, które wykonują określone funkcje.

  • Połączenia liniowe: Linie łączące wyjścia jednych bloków z wejściami innych, umożliwiające przepływ sygnałów.

Program w FBD realizowany jest poprzez przepływ sygnałów od wyjść funkcji lub bloków funkcyjnych do przyłączonych wejść kolejnych funkcji lub bloków. Jest to odpowiednik schematu przepływu sygnału dla obwodów logicznych, przedstawianych za pomocą połączonych bramek logicznych oraz funkcji i bloków funkcyjnych.

FBD opisuje funkcje między zmiennymi wejściowymi a wyjściowymi za pomocą zestawu bloków elementarnych. Wejścia i wyjścia bloków są połączone liniami, które przenoszą dane z lewego końca na prawy koniec połączenia. Linie te mogą łączyć:

  • Zmienną wejściową z wejściem bloku.

  • Wyjście bloku z wejściem innego bloku.

  • Wyjście bloku ze zmienną wyjściową.

Połączenia muszą być zorientowane, co oznacza, że linia przenosi dane w jednym kierunku, a oba końce połączenia muszą być tego samego typu. Prawy koniec linii może się rozdzielać, prowadząc do kilku wejść.

Dzięki swojej graficznej naturze i jasnemu przedstawieniu przepływu sygnałów, FBD jest łatwy do zrozumienia i używania, co czyni go popularnym wyborem wśród sterownik bezpieczeństwa.





ST

Tekst Strukturalny (ang. Structured Text) – jest językiem programowania wysokiego poziomu używanym do programowania sterowników PLC. Należy do grupy języków wyższego poziomu (język tekstowy), ponieważ nie używa operatorów zorientowanych maszynowo. Struktura ST przypomina języki algorytmiczne, takie jak Pascal czy Basic, które były powszechnie stosowane do tworzenia oprogramowania dla komputerów PC.

Podstawowe elementy języka ST to wyrażenia i instrukcje. Dzięki temu powstały kod jest czytelny i zwięzły, zbudowany z typowych struktur programowych, takich jak:

  • Instrukcje warunków: IF, THEN, ELSE, ELSIF, CASE.

  • Instrukcje pętli: FOR, WHILE, DO, REPEAT, CONTINUE, EXIT.

  • Instrukcje bloków: GOTO, RETURN.

W niektórych przypadkach programy napisane w ST są bardziej czytelne i zrozumiałe, ale działają wolniej i zużywają więcej zasobów pamięci operacyjnej w porównaniu do tych zakodowanych bezpośrednio w języku IL.





IL

Lista Instrukcji (ang. Instruction List) – język tekstowy niskiego poziomu używany do programowania sterowników PLC. Struktura IL jest podobna do asemblera i składa się z zestawu instrukcji mnemotechnicznych, które obejmują podstawowe: operacje logiczne, operacje arytmetyczne, funkcje czasowe i licznikowe, operacje porównania i operacje transferu danych.

Język IL jest zaprojektowany dla programowalnych sterowników logicznych (PLC) i jest odpowiednikiem języka asemblera. Każda instrukcja w IL ma swoją nazwę i sposób wywołania, które zależą od typu sterownika. Kod napisany w IL jest mniej przejrzysty w porównaniu do innych języków programowania PLC, dlatego jest rzadko stosowany do zapisu całego algorytmu sterowania. Jednak IL jest idealny do kodowania złożonych algorytmów obliczeniowych, ponieważ instrukcje są proste i szybko wykonywane przez procesor sterownika.

Lista instrukcji to jeden z 5 podstawowych języków obsługiwanych przez początkowe wersje normy IEC 61131-3, lecz aktualnie w najnowszej edycji normy ten język jest uznany za przestarzały i powoli wycofywany przez producentów PLC.





SFC

Sekwencyjna Karta Funkcji (ang. Sequential Function Chart) – ten język opiera się na koncepcji GRAFCET, która bazuje na binarnych sieciach Petriego. Stosowany w programowalnych sterownikach logicznych w szczególnie złożonych sekwencyjnych układach sterowania.

Podstawowe elementy SFC to:

  • Kroki (etapy): Reprezentują poszczególne zadania lub stany w procesie sterowania. Kroki mogą być aktywne lub nieaktywne. Akcje są wykonywane tylko dla aktywnych kroków.

  • Warunki przejścia (tranzycje): Określają logiczne warunki, które muszą zostać spełnione, aby przejść z jednego kroku do następnego.

  • Połączenia między krokami i warunkami przejścia: Bezpośrednie powiązania, które definiują przepływ procesu.

Schemat SFC jest używany do opisania struktury sekwencyjnych zadań sterowania w sposób graficzny. W ramach SFC tworzy się nadrzędną strukturę programu, a poszczególne zadania sterowania koduje się w jednym z czterech języków programowania zdefiniowanych w normie IEC 61131-3.

Kroki mogą być aktywne z dwóch powodów:

  • Krok początkowy określony przez programistę.

  • Krok aktywowany podczas cyklu skanowania, który nie został jeszcze dezaktywowany.

Kroki są aktywowane, gdy wszystkie poprzedzające je kroki są aktywne, a warunek przejścia jest spełniony (superaktywne). Gdy warunek przejścia zostanie spełniony, poprzednie kroki są dezaktywowane, a następne kroki są aktywowane.

SFC umożliwia programowanie procesów, które można podzielić na wyraźne kroki i etapy, co pozwala na lepszą organizację i przejrzystość programów sterowania.





Inne języki programowania

Często producenci sterowników PLC powołując się na normę IEC 61131-3 tworzy własne odpowiedniki wyżej wymienionych języków lub tworzy całkiem nowe warianty. Jednym z takich języków jest CEM firmy Siemens.

Macierz Przyczyn i Skutków (ang. Cause Effect Matrix) – to nowy i łatwy do zrozumienia język programowania, który umożliwia szybkie i łatwe tworzenie programów dla sterowników PLC. Dostępny jest w oprogramowaniu TIA Portal od wersji V17. CEM opisuje zdarzenia procesowe i definiuje możliwe reakcje, co pozwala na przejrzyste przedstawienie związków między przyczynami a skutkami w procesie sterowania.

Podstawowa struktura CEM to tabela, gdzie:

  • Wiersze reprezentują przyczyny (zmienne wejściowe).

  • Kolumny reprezentują skutki (zmienne wyjściowe).

Relacje między przyczynami a skutkami są definiowane na przecięciu wierszy i kolumn. W komórkach tych można określać różne akcje, takie jak:

  • S (Set): ustawienie wartości.

  • R (Reset): resetowanie wartości.

  • N (true): przypisanie wartości, gdy warunek jest spełniony.

Dzięki graficznemu interfejsowi, tworzenie programu jest stosunkowo proste i intuicyjne. Macierz CEM pozwala na łatwe konfigurowanie zależności między modułami, co sprawia, że czytanie i analizowanie programów jest łatwiejsze i bardziej przejrzyste. CEM oferuje doskonały przegląd kodu PLC, ułatwia debugowanie i analizę logiczną. Ponieważ relacje między zmiennymi są widoczne na pierwszy rzut oka, język CEM może znacznie przyspieszyć identyfikację i rozwiązywanie problemów z logicznymi połączeniami między stanami maszyn.





Programowanie Hardware i sieci przemysłowe

Zaawansowane sterowniki PLC umożliwiają również zaprogramowanie warstwy sprzętowej (hardware). Wiąże się to możliwością przypisania przez programistę konkretnych parametrów do wybranych modułów sterownika. Odpowiednie zaprogramowanie hardware może przyczynić się do łatwiejszego i prostszego programowania warstwy software. Dodatkowo tak przygotowany sterownik PLC zapewnia bezproblemową diagnoza w przypadku wystąpienia awarii lub jeśli jest konieczność wymiany poszczególnego modułu sterownika.

Obecnie każdy sterownik pozwala na przyłączenie się do sieci przemysłowej lub do samodzielnego zarzadzania daną siecią, co też przekłada się na odpowiednie oprogramowanie sterownika w tej kwestii. Taki PLC trzeba zarówno zaprogramować w warstwie hardware, gdzie może znajdować się cała topologia sieci, jak i w software poprzez odpowiednio skonfigurowane bloki funkcyjne. Oczywiście parametryzacja oraz programowanie sieci przemysłowych różni się między sobą, każda sieć posiada swoje zalety, jak i wady. Najpopularniejsze sieci przemysłowych w Europie to między innymi:

  • PROFINET

  • EtherCAT

  • EtherNet/IP

  • PROFIBUS DP

  • Modbus-TCP

  • Modbus-RTU

  • CANopen

Świetny przykładem koniecznego zaprogramowania warstwy sprzętowej są sterowniki PLC wykorzystywane do kontroli napędów, które muszą posiadać wspólną sieć oraz bloki funkcyjne współpracujące z danym modelem napędu.

Zakończenie

Aktualnie sterowniki PLC cały czas ewoluują, producenci z roku na rok prześcigają się w nowych rozwiązaniach technologicznych dopasowując się pod szerokie grono klientów. Prawdopodobnie w najbliższym czasie powstanie język programowania sterowników związany z sztuczną inteligencją (AI), a w sieciach przemysłowych coraz większą popularność zyskuje IO-Link.

Wróć