ANDRZEJ PURCZYŃSKI

W artykule przedstawiono podstawowe cechy języków programowania sterowników PLC, objętych głównie normą IEC 1131-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

1. 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 1131, 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 1131-3 definiuje trzy języki graficzne:
1) sekwencyjny język graficzny (SFC),
2) język schematów bloków funkcyjnych (FBD),
3) język schematów drabinkowych (LD);
oraz dwa języki tekstowe:
1) język strukturalny (ST),
2) 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).

2. SEKWENCYJNY JĘZYK GRAFICZNY (SFC)

Rys. 1. Przykład zastosowania języka SFC [4] Język ten jest podstawowym językiem zdefiniowanym w normie IEC 1131-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 1131-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)

Rys. 2. Przykład zastosowania języka LD

Język ten nie należy do języków objętych normą IEC 1131-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. Rys. 3. Przykłady zastosowania języków LD i FBD

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.

5. 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).

Rys. 4.  Realizacja operacji OR w językach LD i FBD

6. 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.

Rys. 5. Fragment zapisu programu w języku strukturalnym ST

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.

7. 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 *)

8. 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.

Rys. 6. Schemat generowania kodu programu dla PLC

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.

LITERATURA

  1. Kostro J., Elementy, urządzenia i układy automatyki, Wydawnictwa Szkolne i Pedagogiczne, Warszawa 1994
  2. Mikulczyński T., Samsonowicz Z., Automatyzacja dyskretnych procesów produkcyjnych. Metody modelowania procesów dyskretnych i programowania PLC, WNT Warszawa 1997
  3. Legierski T., Kasprzak J., Hajda J., Wyrwał J., Programowanie sterowników PLC,Wyd. Prac. Komp. J. Skalmierskiego, Gliwice 1998
  4. Pakiet oprogramowania First ISaGRAF ver. 3.23f (c) 1990-1998 CJ International, udostępniony przez PEP Modular Computers Poland

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 1131-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).