Andrzej Purczyński
JĘZYKI PROGRAMOWANIA STEROWNIKÓW PLC
W opracowaniu przedstawiono krótko podstawowe cechy języków programowania sterowników PLC, objętych głównie normą IEC 61131-3. W szczególności uwzględniono: sekwencyjny język graficzny (SFC), język diagramów przepływowych (FC), język schematów bloków funkcyjnych (FBD), język schematów drabinkowych (LD), język strukturalny (ST) i język listy instrukcji (IL).
Słowa kluczowe: Sterowniki programowalne, języki programowania PLC
WPROWADZENIE
W ostatnich kilkunastu latach nastąpił bardzo szybki postęp w dziedzinie urządzeń określanych jako programowalne sterowniki logiczne PLC (Programmable Logic Controllers). O sukcesie sterowników w znaczącym stopniu zadecydowało wprowadzenie do budowy PLC w roku 1977 przez firmę Allen-Bradley ośmiobitowego mikroprocesora Intel 8080. Dzisiaj urządzenia PLC w zasadzie wyparły przekaźnikowe układy sterowania logicznego. Podstawową zaletą nowego rozwiązania jest łatwość i szybkość dostosowywania sterowników do różnych zadań przez wymianę oprogramowania, a nie, jak to było wcześniej, przez przygotowanie odpowiedniej dokumentacji elektrycznej i okablowania szaf sterowniczych.
W latach dziewięćdziesiątych zaczęto powszechnie wykorzystywać komputery PC do programowania sterowników. Napisanie programu czy też wprowadzenie do niego poprawek lub zmian stało się jeszcze prostsze.
Początkowo każdy z licznych producentów sterowników programowalnych nazywanych także w Polsce w początkowym okresie, binarnymi [1], stosował własny język programowania ze specyficzną listą rozkazów. Jednak wraz z wzrostem powszechności ich stosowania pojawiła się konieczność standaryzacji metod programowania. W roku 1993 Międzynarodowa Komisja Elektroniki wydała normę IEC 61131, która w części trzeciej zawierała charakterystykę języków programowania sterowników.
Do normy włączono kilka języków zarówno tekstowych jaki i graficznych. Wspólną ich cechą jest istnienie rozkazów, wyrażeń lub bloków operacji logicznych i podobieństwo sposobu ich przedstawiania do form stosowanych w technice przekaźnikowej. Norma IEC 61131-3 definiuje trzy języki graficzne:
- Sekwencyjny język graficzny (SFC).
- Język schematów bloków funkcyjnych (FBD).
- Język schematów drabinkowych (LD).
Dwa języki tekstowe:
- Język strukturalny (ST).
- Język listy instrukcji (IL).
Nadal jednak postępuje proces ewolucji narzędzi i języków programowania. Ostatnio niektórzy producenci oprogramowania rozszerzyli ofertę języków graficznych o język diagramów przepływowych (FC).
SEKWENCYJNY JĘZYK GRAFICZNY (SFC)
Język ten jest podstawowym językiem zdefiniowanym w normie IEC 61131-3. Opisuje on operacje, wykorzystując prostą reprezentację graficzną dla poszczególnych kroków procesu i warunków nazywanych tranzycjami. Wyrósł on na gruncie metod opisu automatów sekwencyjnych, do których zalicza się [2]:
- metodę polegającą na użyciu grafu przejść (każdy węzeł grafu jest związany ze stanem automatu, natomiast łuk grafu jest określony przez zmienną logiczną lub funkcję kilku zmiennych);
- metodę tablicy stanów (liczba kolumn rośnie wykładniczo ze wzrostem liczby wejść np. dla 20 wejść w tablicy stanów potrzeba więcej niż milion kolumn);
- ściśle związaną z fizyczną realizacją metodę schematów drabinkowych opierającą się na analogii do schematów przekaźnikowych.
Wzrost złożoności systemów sterowania sekwencyjnego doprowadził do zdefiniowania w roku 1977 metody Grafcet. Wykorzystuje ona formalizm sieci Petriego typu P/T (Pozycja/Tranzycja) zmodyfikowany dla procesów dyskretnych. Zaletą jej jest zapis funkcji sekwencyjnych w sposób niezależny od realizacji sprzętowej i programowej. Na założeniach metody Grafcet w normie IEC 61131-3 zdefiniowano sposób opisu działania sterownika w postaci sekwencji SFC (Sequential Function Chart). Proces cykliczny jest podzielony na kolejne kroki oddzielone warunkami logicznymi. Na rysunku 1 pokazano fragment edytora graficznego SFC. Formalizm ten może być wykorzystany przy programowaniu sterownika w celu stworzenia odpowiedniej struktury wewnętrznej programu. Zwykle do opisu poszczególnych akcji związanych z krokami i warunkami wykorzystuje się inne języki.
Język ten umożliwia równoległe przejście pomiędzy dwoma krokami lub tranzycjami, co oznacza , że istnieje w nim możliwość równoległego przetwarzania części programu.
JĘZYK DIAGRAMÓW PRZEPŁYWOWYCH (FC)
Język ten nie należy do języków objętych normą IEC 61131-3. Jego struktura jest zbliżona do języka SFC. Występują w nim dwa podstawowe bloki: blok akcji i blok testu (decyzyjny). Język ten można interpretować jako graficzne przedstawienie algorytmu blokowego działania układu sterowniczego. Może on być wykorzystywany do opisu operacji sekwencyjnych.
Podobnie jak w przypadku języka FSC do wypełnienia bloków akcji i testów wykorzystuje się inne języki, takie jak np. język schematów drabinkowych, język listy instrukcji lub język strukturalny.
-
JĘZYK SCHEMATÓW DRABINKOWYCH (LD)
Jest to język graficzny używający standaryzowanych symboli graficznych. Symbole umieszcza się w obwodach w sposób podobny do szczebli w schematach drabinkowych dla przekaźnikowych układów sterowania. Obwód LD (Ladder Diagram) jest po obydwu stronach ograniczony przez szyny prądowe. Szyny te nie są elementami obwodu. Prawa szyna może być rysowana w sposób jawny lub pozostawać w domyśle.
W języku LD mogą występować standardowe funkcje i bloki funkcyjne. Na rysunku 2 pokazano przykład zapisu programu w języku LD.
Na rysunku 3 przedstawiono zastosowanie języka schematów drabinkowych w powiązaniu z językiem schematów bloków funkcyjnych.
Język LD pozwala budować zależności logiczne z wykorzystaniem graficznej reprezentacji wyrażeń boolowskich złożonych ze styków i cewek. Podstawowymi elementami języka LD są:
- styki statyczne: styk zwierny i styk rozwierny;
- styki impulsowe: styk reagujący na zbocze narastające i styk reagujący na zbocze.;
- cewka zwykła i cewka negująca;
- cewki z zatrzaskiem: cewka ustawiająca i cewka kasująca;
- cewki z zapamiętaniem stanu, cewka ustawiająca z zapamiętaniem stanu i cewka kasująca z zapamiętaniem stanu;
- cewki impulsowe: cewka reagująca na zbocze narastające i cewka reagująca na zbocze opadające.
-
JĘZYK SCHEMATÓW BLOKÓW FUNKCYJNYCH (FBD)
FBD (Function Block Diagram) jest językiem graficznym (rys. 3). Realizacja programu w tym języku jest oparta na przepływie sygnału. Wykorzystuje on gotowe bloki funkcyjne lub procedury przygotowane przez producenta w postaci bibliotek. Tworzenie aplikacji w tym języku polega na wyborze odpowiedniego bloku funkcyjnego i umieszczeniu w odpowiednim miejscu obwodu. Funkcje te są widziane w edytorze programu jako prostokąty z opisanymi zmiennymi wejściowymi i wyjściowymi.
Wyjścia bloków funkcyjnych nie powinny być łączone. Na przykład realizacja sumy logicznej OR poprzez równoległe łączenie elementów w węzeł (wired-OR) jak w języku LD, jest niedopuszczalne. Należy użyć jawnie funkcji logicznej OR (rys. 4).
-
JĘZYK STRUKTURALNY
Język strukturalny ST (Structured Text) należy do grupy języków tekstowych. Jest on przeznaczony głównie do opisu złożonych wyrażeń, których nie można zrealizować w językach graficznych (lub jest to bardzo utrudnione). Na rysunku 5 przedstawiono fragment zapisu w tym języku.
Język ST jest podstawowym językiem używanym do opisywania akcji w poszczególnych krokach i warunkach struktur wyrażonych w językach SFC i FC.
Podstawowymi elementami języka są wyrażenia i polecenia. Wyrażenia dostarczają wartości odpowiadające określonemu typowi danych. Składają się one z operatorów i operandów. Operandem może być zmienna, stała, funkcja lub inne wyrażenie.
Obliczenia są wykonywane przez zastosowanie operatorów do operandów według ściśle określonej kolejności priorytetów.
Podstawowymi poleceniami języka są: instrukcja przypisania np. a:= b oraz instrukcje: RETURN, IF ... ELSEIF ... ELSE ... END_IF, CASE ... ELSE ... END_CASE, FOR ... TO ... DO ... END_FOR, WHILE ... END_WHILE, REPEAT ... UNTIL ... END_REPEAT, EXIT.
W postaci tekstowej język ten ujmuje zdefiniowane w normie standardowe funkcje i bloki funkcyjne.
-
JĘZYK LISTY INSTRUKCJI
Język ten składa się z sekwencji instrukcji. Każda z nich jest zapisywana od nowego wiersza. W instrukcji znajduje się zwykle nazwa operatora oraz ewentualnie modyfikatory i jeden lub kilka operandów. Operandami są stałe lub zmienne. Instrukcję może poprzedzać etykieta zakończona dwukropkiem. Ostatnim elementem wiersza może być komentarz, na przykład:
START: LD %IX1 (* przycisk 1 *)
-
ZAKOŃCZENIE
Coraz bardziej złożone algorytmy sterowania wymagają coraz lepszych i wygodniejszych narzędzi. Przedstawione w dużym skrócie języki programowania stanowią dzisiaj zasadniczy element narzędzi programistycznych typu CASE, wzbogaconych o programy wyszukiwania błędów, symulacji, generatory raportów i dokumentacji oraz programy wizualizacji działania systemów sterowniczych. Przykładowy schemat generowania programu w opisywanych językach przedstawiono na rysunku 6.
Najbliższy etap rozwoju języków będzie ukierunkowany, jak można sądzić, na ścisłą integrację z systemami sieciowymi. Już dzisiaj pakiety oprogramowania są wyposażane w konfiguratory sieci np. Profibus, a nawet ostatnio pojawiły się pakiety wyposażone w funkcje języków HTML i Java.
Porównując wady i zalety różnych języków programowania w zasadzie nie można wskazać jednego optymalnego rozwiązania. Wybór języka jest uwarunkowany specyfiką zadania sterowniczego i preferencjami programisty.
THE PROGRAMMABLE LANGUAGES OF THE CONTROLLERS (PLC)
Summary
This paper presents the basic characteristics of the programmable languages of the controllers (PLC) subjected mainly to the IEC 61131-3 standard. The following aspects are discussed in more details: sequential function chart language (SFC), flow chart language (FC), function block diagram language (FBD), ladder diagram language (LD), structured text language (ST) and instruction list language (IL).
|