programowanie plc 793

background image

Programowanie sterowników PLC

63

4. Programowanie sterowników PLC

4.1. Wstęp

Przez lata rozwoju sterowników programowalnych producenci wprowadzali różne

metody programowania. Było to związane z przechodzeniem od technik związanych z

układami „sprzętowymi” do technik bliższych komputerom osobistym. Tak więc wśród

technik programowania największą popularność, w kręgach inżynierskich, zyskał język

schematów drabinkowych ze względu na jego podobieństwo do sposobu projektowania

klasycznych systemów sterowania stykowo – przekaźnikowego [Michel 1990; Brock et.al.

2000; Legierski et.al. 1997; Rho et.al. 1995; Koo et.al. 1996, 1998; Erickson 1996; Welch

1995; Fabian, Hellgren 1998; Bhowal et.al. 1999; Turnbull 1998; Falcione, Krogh 1992;

Rullan 1997; Davidson, McWinnie 1997; Auslander et.al. 1996; Warnock 1988; Batten 1994;

Kwaśniewski 1999; Webb, Reis 1999; Berger 2001b]. Jednak w związku z poszerzaniem

zakresu zastosowań sterowników do coraz większej gamy układów sterowania okazało się, że

klasyczny schemat drabinkowy już nie wystarcza. Sterowanie sygnałami ciągłymi wymagało

używania coraz bardziej skomplikowanych bloków funkcyjnych dodawanych do

oprogramowania podstawowego. A więc dzisiejszy schemat drabinkowy (stykowy – LD –

Ladder Diagram) to już schemat z wieloma dodatkowymi elementami wykorzystywanymi

coraz częściej – wśród nich najczęściej używany są bloczki służące do przesyłania stałych

oraz zmiennych [Rho et.al. 1995; Koo et.al. 1997]. Wydaje się, że jest to zgodne z ogólnymi

tendencjami, które zmierzają w kierunku języków wyższego poziomu, gdzie programista

korzysta z gotowych „klocków” układając je w odpowiedniej sekwencji w programie. W tym

momencie język LD już niewiele różni się od języka, w którym używa się elementów

logicznych (bramek) [Siemens 1996a, 1996c; Berger 2001b].

W historii rozwoju technik programowania pojawiały się próby ujednolicenia

i usystematyzowania tychże technik. I tak można wymienić normy i wytyczne, takie jak: IEC

848 – Grafcet (Francja), DIN 40719, DIN 19239, VDI 2880 (Niemcy), czy NEMA ICS-3-304

(USA). W 1993 roku przyjęta została przez Międzynarodową Komisję Elektroniki norma IEC

1131 [IEC 1993] zatytułowana „Sterowniki Programowalne” długo nie mogła utorować sobie

drogi do świadomości producentów sterowników. Istnieją jednak producenci, jak np. Festo,

którzy proponują sterowniki z możliwością wymiany systemu operacyjnego. Jeden system

pozwala na programowania przy pomocy standardowego oprogramowania firmy Festo,

background image

Programowanie sterowników PLC

64

natomiast drugi umożliwia programowanie przy pomocy pakietu IsaGraf [Chodań 2000b],

która wypuściła na rynek oprogramowanie w pełni zgodne z normą.

Coraz większego znaczenia zaczyna nabierać programowanie wykorzystujące sieci SFC

(Sequential Function Chart). Sieci SFC posiadają swój, dobrze znany z diagramów Petry’ego,

opis matematyczny, co ułatwia rozwijanie podstaw teoretycznych. Dlatego też można znaleźć

bardzo wiele opracowań zarówno popularnonaukowych, jak i naukowych dotyczących

modelowanie układów sterowania z wykorzystaniem sieci SFC [Gomółka 1988; Grandek

1995; Adamski, Monteiro 1995; Adamski, Chodań 2000; Adamski 2001; Legierski et.al.

1997; Michel 1990; Brock et.al. 2000; Kwaśniewski 1999; Lewis 1995; Webb, Reis 1999;

Bonfatti et.al. 1997; Mikulczyński 1997; Halang 1989; Chodań 2000a; Falcione, Krogh 1992;

Węgrzyn et.al. 1998; Davidson, McWhinnie 1997]. Pojawiają się także publikacje pokazujące

możliwości zastąpienia grafów SFC zapisem typowym dla innych sposobów programowania

sterowników, co powoduje, że kod wynikowy jest mniejszy, a więc daje możliwości

oszczędzania pamięci programu, jak i skracania czasu realizacji programu [Kulisz 1999;

Danĕček, Rozehnal 1999; Wciślik 2003].

4.2. Norma EN 61131

Norma składa się z pięciu części, a w opracowaniu są jeszcze trzy następne. Te części,

które już istnieją to:

1. Informacje ogólne (General Information) – w części tej znajdują się definicje pojęć

i charakterystyka funkcji, które są typowe dla PLC, np. przetwarzanie cykliczne, obraz

procesu, podziała zadań, urządzenia do połączenia z operatorem.

2. Sprzęt i wymagania testowe (Equipment and Test Requirements) – część ta dotyczy

wymagań elektrycznych, mechanicznych i funkcyjnych dla sterowników programowalnych.

Definiowane są wymogi odnośnie temperatury, wilgotności, zasilania, odporności na

zakłócenia, przedziały robocze dla sygnałów cyfrowych i testy mechaniczne.

3. Języki programowania (Programming Languages) – próba ujednolicenia szeroko

rozpowszechnionych języków programowania z nieznacznym, przyszłościowym

poszerzeniem o nowe elementy.

4. Wytyczne użytkownika (User Guidelines) – część ta stanowi przewodnik dla projektantów

systemów PLC. Podano w niej informacje potrzebne dla poszczególnych etapów projektu,

background image

Programowanie sterowników PLC

65

począwszy od analizy systemu, fazy specyfikacji i wyboru urządzeń, wykonania aplikacji

i obsługi urządzeń.

5. Wymiana informacji (Messaging Service) – opis komunikacji pomiędzy PLC od różnych

producentów i komunikacji z innymi urządzeniami. Opisano tu bloki komunikacji

w połączeniu ze standardowymi operacjami odczytywania i wyprowadzania danych.

Część trzecia normy, EN 61131-3, dotyczy języków programowania i stanowi jej

najważniejszą część. Przede wszystkim dzięki niej ujednolicono koncepcję programowania

sterowników PLC tak, aby w oparciu o wprowadzone zasady, użytkownik był w stanie

programować bez większych trudności różne sterowniki, różnych producentów.

4.2.1. Sposoby tworzenia oprogramowania

W ramach normy EN 61131-3 określono dwie grupy języków programowania: języki

tekstowe oraz języki graficzne.

Grupę języków tekstowych tworzą dwa języki:

język listy instrukcji IL (Instruction List) – odpowiednik języka typu asembler, którego

zbiór instrukcji obejmuje operacje logiczne, arytmetyczne, operacje rotacji, jak również

funkcje przerzutników, czasomierzy, liczników itp.;

język strukturalny ST (Structured Text) – odpowiednik algorytmicznego języka wysokiego

poziomu takiego jak FORTRAN, PASCAL, zawierającego struktury programowe takie,

jak: IF...THEN, FOR...TO.

Grupę języków graficznych opisanych w normie tworzą:

język schematów drabinkowych LD (Ladder Diagram) – podobny do stykowych obwodów

przekaźnikowych, w którym dopuszcza się użycie także funkcji: arytmetycznych,

logicznych, porównań i relacji, jak również bloków funkcyjnych: przerzutników,

czasomierzy, liczników, regulatora PID czy bloków programowych;

język schematów blokowych FBD (Function Block Diagram) – odpowiednik schematów

przepływu sygnału dla obwodów logicznych przedstawionych w formie połączonych

bramek logicznych oraz bloków funkcyjnych takich jak w języku LD. Różnice pomiędzy

językiem FBD, a LD kończą się w zasadzie na najprostszych symbolach, którymi opisuje

się proste funkcje kombinacyjne. Reszta, bardziej skomplikowanych, funkcji jest taka sama

– różni się co najwyżej graficzną reprezentacją.

background image

Programowanie sterowników PLC

66

graf sekwencji SFC (Sequential Function Chart) – służy do tworzenia struktury programu

sterownika napisanego z użyciem wymienionych języków. Pozwala on na opisywanie

zadań sterowania sekwencyjnego za pomocą grafów zawierających etapy (kroki) i warunki

przejścia (tranzycji) między tymi etapami. Ten sposób pisania programu właściwie jest

niejako nadrzędny w stosunku do pozostałych i równocześnie wykorzystuje je do

opisywania poszczególnych bloków grafu.

4.2.1.1. Lista instrukcji IL

Cechą charakterystyczną języka IL jest sekwencja instrukcji podobnych do kodów

programowania mikroprocesora w języku asembler. Każda instrukcja zaczyna się w nowej

linii. Instrukcja zawiera nazwę operatora z ewentualnymi modyfikatorami oraz operand (jeden

lub więcej, oddzielone przecinkami, w zależności od wymagań operatora). Instrukcja może

być poprzedzona przez etykietę zakończoną dwukropkiem, natomiast ewentualny komentarz

powinien być ostatnim elementem linii. Między instrukcjami można wprowadzać puste linie.

Listę standardowych operatorów i dozwolonych modyfikatorów przedstawiono w tabeli 4.1.

Najczęściej poszczególne operatory działają w ten sposób, że wartość wyrażenia jest

obliczana jako wynik działania operatora na wartość bieżącą wyrażenia z uwzględnieniem

wartości operandu, np. instrukcję AND %IX1 należy interpretować jako:

wynik = wynik and %IX1

Wyrażenie podstawowe może zostać uzupełnione o modyfikator w postaci nawiasów. Lewy

nawias „(” oznacza wstrzymanie wykonania operacji aż do napotkania prawego nawiasu „)”.

Następująca sekwencja rozkazów:

AND

(%IX1

OR

%IX2

)

zostanie zinterpretowana jako:

wynik = wynik and (%IX1 or %IX2)

4.2.1.2. Język strukturalny ST

Język strukturalny wykorzystuje struktury algorytmicznych języków programowania

wyższego poziomu, takich jak Pascal, czy C. Podstawowymi elementami są zdania logiczne

background image

Programowanie sterowników PLC

67

zawierające warunki oraz polecenia związane z wyrażeniami, które składają się z operatorów

i operandów. Najczęściej wykorzystywane struktury zdań języka ST przedstawiono poniżej.

Dwa pierwsze są strukturami zdań umożliwiającymi dokonywanie wyboru.

Zdanie:

IF warunek THEN polecenie1 ELSE polecenie2

W czasie realizacji tego fragmentu programu sprawdzany jest warunek występujący po słowie

kluczowym IF. Jeżeli jest on spełniony (wyrażenie logiczne z nim związane jest spełnione)

następuje wykonanie polecenia1 występującego po słowie THEN. W przeciwnym wypadku

wykonywane jest polecenie2, które występuje po słowie ELSE.

Tabela 4.1. Standardowe operatory i modyfikatory IL

Operator

Modyfikator

Operand

Opis

LD

ST

S

R

AND

&

OR

XOR

ADD

SUB

MUL

DIV

GT

GE

EQ

LE

LT

NE

)

CAL

JMP

RET

N

N

N, (

N, (

N, (

N, (

(

(

(

(

(

(

(

(

(

(

C, N

C, N

C, N

zmienna, stała

zmienna

zmienna logiczna

zmienna logiczna

zmienna logiczna

zmienna logiczna

zmienna logiczna

zmienna logiczna

zmienna, stała

zmienna, stała

zmienna, stała

zmienna, stała

zmienna, stała

zmienna, stała

zmienna, stała

zmienna, stała

zmienna, stała

zmienna, stała

nazwa

etykieta

operand do wynik bieżący

wynik bieżący do operand

ustaw wartość operandu

wyzeruj wartość operandu

logiczne AND

logiczne AND

logiczne OR

logiczna suma z wyłączeniem

dodawanie

odejmowanie

mnożenie

dzielenie

porównanie: >

porównanie: >=

porównanie: =

porównanie: <>

porównanie: <=

porównanie: <

ograniczenie modyfikatora

wywołanie bloku funkcyjnego

skok do etykiety

powrót z wywołania

background image

Programowanie sterowników PLC

68

Zdanie:

CASE selektor OF lista poleceń z etykietami ELSE inne polecenia

Konstrukcja ta umożliwia wykonanie różnych poleceń w zależności od wartości, jaką

przyjmuje selektor, który jest wyrażeniem typu INTEGER. Lista poleceń zawiera grupy

poleceń, z których każda charakteryzuje się swoją unikalną etykietą. W czasie realizacji

programu wykonana zostanie ta grupa poleceń, której etykieta odpowiada obliczonej wartości

selektora. Gdy wyliczona wartość nie odpowiada żadnej etykiecie, będą wykonane inne

polecenia, które zostały umieszczone po słowie ELSE.

Drugą grupę konstrukcji używanych w języku ST stanowią konstrukcje iteracyjne,

umożliwiające powtarzanie wybranego fragmentu programu.

Zdanie:

FOR wartość początkowa TO wartość końcowa BY krok DO polecenia

Struktura ta pozwala na iteracyjne wykonanie polecenia tyle razy, ile wynika to z odjęcia

wartości początkowej od wartości końcowej z określonym krokiem. Służy ona do

programowania zadań iteracyjnych w przypadku znajomości liczby potrzebnych iteracji.

Zdanie:

WHILE warunek DO polecenia

REPEAT polecenia UNTIL warunek

Obydwie te konstrukcje służą do zaprogramowania cyklicznego wykonywania poleceń, gdy

liczba iteracji nie jest z góry znana, a decyduje o niej warunek podany w zdaniu po słowie

WHILE lub UNTIL.

Tabela 4.2. Operatory języka ST

Operacja

Symbol

Operacja

Symbol

nawiasy

obliczanie wartości funkcji

potęgowanie

wartość przeciwna

uzupełnienie

mnożenie

dzielenie

reszta z dzielenia

(wyrażenie)

nazwa(lista argumentów)

**

-

not

*

/

mod

dodawanie

odejmowanie

porównanie

równość

nierówność

iloczyn logiczny

suma logiczna modulo 2

suma logiczna

+

-

<,>,<=,>=

=

<>

&, and

xor

or

Wyrażenie stanowi element języka, który z chwilą wykonania dostarcza wartość

odpowiedniego typu. Operandem może być zmienna, stała, wywoływana funkcja lub inne

background image

Programowanie sterowników PLC

69

wyrażenie. Operatory języka ST przedstawia tabela 4.2. Obliczanie wartości wyrażenia polega

na stosowaniu operatorów do operandów według kolejności odpowiadającej miejscu w tabeli.

4.2.1.3. Język schematów drabinkowych LD

Język ten podobny jest do prezentacji obwodu elektrycznego składającego się z głównie

symboli styków, cewek oraz połączeń między nimi. Wszystkie obwody zaczynają się z lewej

strony wspólną „szyną zasilającą”, od której „prąd” może płynąc z lewej strony do prawej.

Najważniejsze elementy LD zebrano w tabeli 4.3.

Tabela 4.3. Podstawowe elementy języka LD

Symbol

Opis działania

styk normalnie otwarty (NO) – przewodzi prąd, gdy skojarzona z nim zmienna ma

wartość 1

styk normalnie otwarty (NC) – przewodzi prąd, gdy skojarzona z nim zmienna ma

wartość 0

styk zbocza narastającego – przewodzi prąd po zmianie stanu zmiennej z 0 na 1

styk zbocza opadającego – przewodzi prąd po zmianie stanu zmiennej z 1 na 0

zwykła cewka – skojarzona zmienna przyjmuje wartość 1, gdy „płynie” przez cewkę

prąd

cewka negująca– skojarzona zmienna przyjmuje wartość 1, gdy nie „płynie” przez

cewkę prąd

cewka ustawiająca – skojarzona zmienna przyjmuje wartość 1, gdy „płynie” przez

cewkę prąd. Wartość jest podtrzymywana niezależnie od „przepływu” prądu.

cewka zerująca – skojarzona zmienna przyjmuje wartość 0, gdy „płynie” przez cewkę

prąd. Wartość jest podtrzymywana niezależnie od „przepływu” prądu.

cewka zbocza narastającego – skojarzona zmienna przyjmuje wartość 1 na czas

jednego cyklu po pojawieniu się prądu w cewce.

cewka zbocza opadającego – skojarzona zmienna przyjmuje wartość 1 na czas jednego

cyklu po zaniku prądu w cewce.

cewka odtwarzalna – stan skojarzonej z cewką zmiennej jest podtrzymywany po

zaniku napięcia zasilania.

4.2.1.4. Język schematów blokowych FBD

P

N

S

R

P

N

M

background image

Programowanie sterowników PLC

70

Język FBD opiera się o elementy logiczne występujące w schematach obwodów

elektronicznych. Elementami języka są bloki oraz łączące je linie. Bloki tworzą prostokąty

o rozmiarach zależnych od liczby wejść. Wejścia bloków znajdują się po lewej stronie

symboli, zaś wyjście po prawej. Bloki można łączyć ze sobą tworząc obwody.

Poszczególne bloki odpowiadają standardowym funkcjom: logicznym, matematycznym,

wyboru i porównania, konwersji typów.

Na rysunku 4.1. przedstawiono typową konstrukcję bloku w języku FBD.

Rys.4.1. Konstrukcja bloku w języku FBD

Można w zasadzie powiedzieć, że języki graficzne dla programowania sterowników

programowalnych maja pewną część elementów wspólnych oraz inną, która je od siebie

odróżnia. Różnica objawia się przede wszystkim na poziomie elementów podstawowych, tzn.

styków w języku LD. W miejsce styków w języku FBD pojawiają się elementy, które,

w technice cyfrowej, nazywa się bramkami logicznymi. I tak w miejsce dwóch styków

połączonych szeregowo w FBD pojawia się bramka AND, zaś w miejsce dwóch styków

połączonych równolegle pojawia się funkcja OR. Poprzez odpowiednie łączenie ze sobą tych

dwóch funkcji oraz elementu negacji można zbudować każdą funkcję logiczną, podobnie jak

w LD korzystając ze styków oraz połączeń między nimi. Można by powiedzieć, że język LD

jest językiem niższego rzędu w porównania do FBD. W normie pojawiły się jeszcze styki

porównań, które w FBD są bloczkami, oraz cewki różnego typu, które także mają swoją

blokową reprezentację. Można więc śmiało powiedzieć, że dwa języki graficzne różnią się

między sobą na poziomie sposobu zapisu podstawowych operacji logicznych. Dla zapisania

elementów, które stanowią już pewne standardowe bloki funkcyjne wykorzystuje się

praktycznie te same elementy. Dotyczy to takich bloków jak: przerzutniki, timery, liczniki.

4.2.1.5. Tworzenie struktury programu z użyciem grafu sekwencji SFC

&

wejścia

wyjścia

symbol funkcji

background image

Programowanie sterowników PLC

71

Graf sekwencji (Sequential Function Chart) może być użyty do określenia kolejności

realizacji instrukcji programu napisanego w którymś z przedstawionych wcześniej języków

programowania. Tak więc SFC nie jest typowym językiem programowania, lecz raczej można

powiedzieć, że jest czymś na kształt języków wyższego poziomu, który ma zadanie

organizować pracę programu stworzonego przy pomocy języków niższego poziomu.

Formalizm SFC przyjęty w normie jest oparty na metodzie Grafcet, opracowanej w latach

siedemdziesiątej we Francji i stosowanej w oprogramowaniu przez wielu producentów

sterowników programowalnych. Obydwie metody stanowią modyfikację sieci Petriego typu

P/T (Pozycja/Tranzycja).

Elementami grafu sekwencji są połączone ze sobą za pomocą linii kroki (ang. STEP),

nazywane też etapami, i tranzycje (ang. TRANSISION), nazywane przejściami. Symbolem

graficznym kroku jest prostokąt z wpisaną nazwą. Z każdym krokiem jest skojarzony zestaw

zadań, które mają w tym kroku być wykonane. Zadania te zapisywane są w jednym

z przedstawionych języków programowania (IL, ST. LD. FBD). Kroki łączone są liniami

pionowymi. Przy czym każdy krok posiada wejście (u góry) oraz wyjście (u dołu). Przejście

reprezentowane jest poprzez warunki logiczne, jakie muszą być spełnione, aby mogły być

wykonywane następne kroki. Symbolem graficznym przejścia jest pozioma kreska na linii

łączącej kroki. Przejścia, podobnie jak kroki, opisane są w jednym z języków zdefiniowanych

w normie. Krok może być aktywny, gdy skojarzone z nim działania są wykonywane w

każdym cyklu pracy sterownika. Z każdym krokiem skojarzona jest flaga, która obrazuje jego

aktualny stan. W przeciwnym wypadku krok jest nieaktywny. W każdym grafie istnieje jeden

krok szczególny – krok początkowy, wyróżniony symbolem podwójnego prostokąta. Jest ona

aktywny po zainicjowaniu programu. Przejście może zostać wykonane tylko wtedy, gdy kroki

poprzedzające przejście są aktywne i zmienna logiczna reprezentująca warunki przejścia ma

wartość logiczną „1”. Po spełnieniu warunków przejścia następuje dezaktywacja wszystkich

kroków poprzedzających przejścia i aktywacji wszystkich kroków następujących

bezpośrednio po przejściu. W grafie sekwencji nie można umieszczać bezpośrednio po sobie

kilku przejść, czy kroków.

background image

Programowanie sterowników PLC

72

Rys.4.2. Ilustracja możliwości grafu SFC

Najważniejsze możliwości SFC pokazano na rysunku 4.2 [Brock et.al. 2000;

Kwaśniewski 1999; Michel 1990; Mikulczyński 1997; Lewis 1995]. Do podstawowych

możliwości, jakie daje graf należą:

wybór (and. divergence) – pozioma linia z jednym „wejściem” i co najmniej dwoma

„wyjściami”. Dane „wyjście” z kroku poprzedzającego będzie wybrane, gdy nastąpi

odblokowanie przejścia znajdującego się na początku wybranej ścieżki. Przewidziano trzy

możliwości wyboru: z pierwszeństwem od lewej do prawej ścieżki, zadeklarowanym

numeracją ścieżek, ze wzajemnym wykluczaniem ścieżek (warunki wyboru

poszczególnych ścieżek muszą się wykluczać). Na końcu wszystkich schodzących się

ścieżek są przejścia;

równoległa realizacja ścieżek – sekwencja współbieżna (ang. simultaneous sequence) –

podwójna linia pozioma z jednym „wejściem” zaznaczonym gwiazdką oraz co najmniej

dwoma „wyjściami”. Realizacja tego połączenia polega na rozwidleniu w grafie na co

najmniej dwie ścieżki, na jednoczesnej realizacji aktywnych pierwszych kroków w każdej

z równoległych ścieżek, a następnie na niezależnej realizacji ścieżek aż do ostatniego

kroku w każdej z nich. Symbolem zakończenia równoległej realizacji ścieżek jest w grafie

podwójna linia pozioma narysowana przed wspólnym przejściem. Aby zakończyć

S1

S0

S2

S4

S5

S6

S7

S8

S9

S10

S11

T1

T5

T2

T3

S3

T4

T6

T8

Not (T6)

AND (T7)

T10

T11

T12

2

1

T9

T13

T14

background image

Programowanie sterowników PLC

73

realizację połączenia równoległego wszystkie kroki połączone linią podwójną muszą być

aktywne oraz musi stać się aktywne przejście do kroków następnych.

Kierunek obiegu poszczególnych ścieżek w grafie wynika ze sposobu jego rysowania

i przeważnie odbywa się z góry w dół. Czasami jednak może się zdarzyć, że w grafie będzie

potrzeba narysowania pętli, która biegła będzie w górę. Wtedy też można używać strzałek dla

zwiększenia przejrzystości rysunku.

Wydaje się, że sposób tworzenia struktury programu, jakim jest SFC, daje dość duże

możliwości organizacji dosyć skomplikowanych procedur sterowania. Z drugiej jednak strony

dosyć trudno sobie wyobrazić stworzenie grafu SFC dla naprawdę bardzo skomplikowanego

systemu sterowania. Być może jest to kwestia tylko i wyłącznie praktyki. Wydaje się jednak,

że czasami SFC zamiast upraszczać komplikuje program sterowania [Kulisz 1999]. Dla

programisty, który biegle posługuje się językami tekstowymi, nakładka w postaci SFC może

okazać się przeszkodą w pisaniu dobrych programów.

4.3. Podsumowanie

Opisana pokrótce norma EN 61131, choć powstała dość dawno temu i jest już dobrze

znana i rozpoznawana przez użytkowników sterowników programowalnych, jeszcze ciągle

nie zdobyła popularności, na którą, jak się wydaje, liczyli jej twórcy. Powstaje coraz więcej

systemów, które, przynajmniej częściowo, zaczynają być zgodne z normą. Jednak okazuje się,

że, o ile w językach graficznych, dostosowanie do wymagań normy jest już realizowane dość

powszechnie, to o wiele trudniej jest znaleźć system, który odpowiada normie w językach

tekstowych. Jednak należy powiedzieć, że kilka ostatnich lat to ciągły wzrost popularności

normy, który objawia się, chociażby w dość dużej ilości publikacji, które ukazały się

w ostatnim czasie. Tak więc, jeżeli trzeba by określić pewien kierunek, w którym będzie

następował rozwój, to należy powiedzieć, że wszystko wygląda na to, że norma uzyskuje

coraz większy prestiż i być może kiedyś system taki jak IsaGraf będzie mógł być

wykorzystywany dla różnych platform sprzętowych. Z punktu widzenia użytkownika na

pewno było by to bardzo dobrze widziane. Gdyby istniał jeden język, czy też raczej zestaw

języków programowania mógłby on być doskonalony i w efekcie powstawałoby dobre

narzędzie, które umożliwiałoby coraz lepsze wykorzystanie możliwości edytorów oraz

samych sterowników. Na razie jednak norma wydaje się być jakby martwa, a co za tym idzie

ma raczej małe szanse na rozwój, na zmiany.

background image

Programowanie sterowników PLC

74

Norma opisuje różne sposoby programowania sterowników i to wydaje się dobrym

rozwiązaniem, aby każdy programista, mający jakieś przyzwyczajenia mógł używać języka

zbliżonego do tego, jakiego używał do tej pory. Języki tekstowe na pewno są dobre dla tych,

którzy programują w asemblerze (IL), czy też programach typu Pascal, czy też C (ST) [Berger

2001a]. Zresztą w przypadku programu Concept dla programowania sterowników firmy

Schneider już mamy do czynienia z odmianą języka C do programowania sterowników.

Natomiast języki graficzne są bardzo przydatne dla wszystkich tych, którzy od dawna

programują sterowniki używając właśnie tych metod – szczególnie dotyczy to języka

schematów drabinkowych LD. Języki graficzne są też językami, które są najbardziej zbliżone

dla poszczególnych firm produkujących sterowniki. Kiedy porówna się programy zapisane

w języku LD widać ogromne podobieństwa, natomiast języki tekstowe znacznie od siebie

odbiegają. Wystarczy porównać prosty program, realizujący funkcję układu kombinacyjnego

dla sterowników S7-300 [Siemens 1996d] oraz S7-200 firmy Siemens [Siemens 2002],

a zobaczymy, że dla LD różnic (prócz znaków % w adresie) praktycznie nie ma (rys.4.3.),

natomiast zapis IL [Siemens 1996b] jest diametralnie różny. Podobne obrazy tworzone

w języku LD uzyskalibyśmy na przykład dla edytora Modsoft dla sterowników Modicon, czy

też Omron lub Fanuc.

S7-200 IEC LD

S7-200 LD

background image

Programowanie sterowników PLC

75

S7-200 IL

S7-300 IL

Rys.4.3. Przykład programu realizującego funkcję kombinacyjną zapisanego w języku LD

Jak widać, w przypadku prostych funkcji, w których używamy jedynie styków, w języku

LD nie ma w zasadzie żadnych różnic. Te, które można zauważyć dotyczą jedynie kształtu

używanych elementów, czy odmiennych sposobów adresowania. Różnice i to bardzo duże

występują natomiast w języku IL. Zapis dla sterownika S7-300, jak widać, jest całkowicie

inny niż dla S7-200. Wynika to z rozbieżnych list instrukcji dla tych sterowników (rys.4.4.).

Rys.4.4. Przykład programu zapisanego w języku IL

Bardziej skomplikowanym problemem jest programowanie układów czasowych

i

licznikowych. Programowanie to wymaga uwzględnienia wielu elementów i dla

przejrzystości programu sterowania oraz wygody programowania celowe wydaje się

wprowadzenie rozkazów czasowych i licznikowych oraz symboli graficznych takich układów.

W większości sterowników konstruktorzy przewidują takie właśnie rozwiązania

wspomagające programowanie [Siemens 1988a; Modicon 1990a; GE Fanuc 1994]. Jako

przykłady mogą posłużyć przedstawione poniżej realizacje opóźnienia czasowego i ustawienia

wybranego wyjścia po zliczeniu zadanej liczby impulsów oraz zerowanego innym sygnałem

wejściowym.

background image

Programowanie sterowników PLC

76

S7-200 IEC LD

Dla przykładu z licznikiem przedstawione zostaną programy stworzone w języku LD dla

różnych sterowników (rys.4.5.).

Rys.4.5. Przykład wykorzystania licznika w różnych sterownikach

Jak widać powyżej już przy dość prostym programie, który wymaga jednak użycia

elementów innych niż tylko styki i cewki, pojawiają się dość istotne różnice. Nie widać

większych różnic pomiędzy sterownikami GE Fanuc oraz np. Modicon, natomiast dla

programu MicroWin i sterowników S7-200 firmy Siemens zauważamy, że bloczek licznika

nie posiada wyjścia, a więc wymagane jest stworzenie drugiego networku, aby zapisać w nim

przepisanie stanu wewnętrznego licznika do fizycznego wyjścia. W wersji LD zgodnej z

normą z kolei licznik posiada wyjście binarne, ale posiada także dodatkowe wyjście słowowe,

na które przepisywany jest aktualny stan liczbowy licznika. Nie można nie użyć tego wyjścia.

Tak więc mimo tego, że w naszym przykładzie nie jest wymagane jego użycie musimy na to

wyjście wpisać jakiś adres słowa. W przykładzie wpisano tam adres zmiennej lokalnej, aby

nie wykorzystywać zmiennych globalnych. Jeszcze inaczej sytuacja wygląda dla sterowników

S5 oraz S7-300. W bloczkach liczników tychże sterowników nie musimy używać nie

chcianych wejść, ale takie nieużywane wejścia skutkują pojawieniem się w języku IL

dodatkowych instrukcji (w miejsce każdego nie użytego wyprowadzenia jeden rozkaz NOP

0). Poza tym dla tych sterowników używamy instrukcji licznika zliczającego w dół, a zamiast

zerowania ustawiamy licznik w stan 5 (rys.4.6.).

Podsumowując powyższy przykład można powiedzieć, że różnice w przedstawionych

rozwiązaniach są spore i daleko im do rozwiązania, które prezentuje edytor S7-200 IEC.

background image

Programowanie sterowników PLC

77

Jeszcze gorzej ma się sprawa w przypadku tworzenia programu sterownia używając edytora

IL dla poszczególnych sterowników. Rozpatrzmy przykład programu realizującego prostą

funkcję opóźnienia pojawienia się jedynki na wyjściu o podany czas – przykład 4.1.

Rys.4.6. Przykład wykorzystania licznika zliczającego w dół (S7-300)

Przykład 4.1.

Simatic S5

A

I 2.1

;

testowanie stanu wejścia

L

KT 500.0

;przygotowanie czasu 5s w akumulatorze

SD

T1

;start timera OnDelay

A

T1

;testowanie stanu timera

=

Q 4.0

;przepisanie stanu timera do wyjścia

Cegelec

LD

I 00.00

;testowanie wejścia

TMR

30 A 51 0 15 00

;funkcja z rodzajem timera, numerem, czasem oraz adresem wyjścia

Simatic S7-200

LD

I 2.1

;testowanie stanu wejścia

TON

T40, +50

;funkcja obsługi timera

LD

T40

;testowanie stanu timera

=

Q 4.0

;przepisanie stanu timera do wyjścia

Analizując powyższe rozwiązania wydaje się, że śmiało można powiedzieć iż nie mają

one za wiele ze sobą wspólnego i nie dziwi wobec tego fakt, że języki tekstowe nie cieszą się

zbyt dużą popularnością wśród programistów sterowników programowalnych. Jak widać

różnice sięgają dość głęboko. Począwszy od liczby użytych rozkazów, poprzez różne

mnemoniki to samo realizujących rozkazów, aż po konstrukcje programowe realizujące tę

background image

Programowanie sterowników PLC

78

samą funkcję logiczną. W przedstawionym przykładzie programowania opóźnienia

czasowego z użyciem sterownika Cegelec w rozkazie czasowym pojawia się dana określająca

oprócz czasu także numer wyjścia tego układu, oznaczenie wyjścia, typ układu czasowego i

jego numer. Taki zapis jest charakterystyczny dla rozkazów wieloargumentowych, w które

wyposażony został ten sterownik. Sterowniki S5 oraz S7-300 firmy Siemensa natomiast

charakteryzują się tym, że posiadają tylko rozkazy, co najwyżej jednoargumentowe. Dlatego

też programy zapisane w ich językach IL są o dłuższe – posiadają więcej instrukcji, co nie

oznacza dłuższej ich realizacji.

Warto też wspomnieć o możliwościach realizowania różnego rodzaju funkcji czasowych

i licznikowych. Pozytywnym przykładem mogą być tutaj sterowniki Simatic S5 firmy

Siemens, które posiadają wbudowane pięć rodzajów funkcji czasowych. Wydaje się, że

funkcje te (generacja impulsu, przedłużenie impulsu, opóźnione załączenie, pamiętane

opóźnione załączenie, opóźnione wyłączenie) należą do najczęściej stosowanych w praktyce

programowania sterowników przemysłowych. Przy braku takich funkcji dostępny układ

czasowy trzeba rozbudowywać o dodatkowe elementy logiczne, co czasem może prowadzić

do bardzo rozbudowanych fragmentów programu jak np. realizacja restartowalnego

generatora impulsu z wykorzystaniem sterownika firmy AEG Modicon. W przypadku

realizacji tej funkcji w sterownikach S5 program będzie o wiele krótszy, gdyż mają one

wbudowany tego typu układ czasowy. Sterowniki firmy SAIA z kolei oferują na przykład

gotowe rozkazy generatorów, które wystarczy odpowiednio sparametryzować.

Oprócz różnic, które zostały już zaprezentowane, a które dotyczą samych języków zapisu

programu istnieją jeszcze różnice dotyczące struktur programu sterowania [Chmiel, Nowara

2000] oraz jego realizacji. Cały program sterowania przeważnie dzielony jest na mniejsze

części, które mają za zadanie realizację pewnych elementów sterowania. W sterowniku

Modicon 984 mamy możliwość pisania programów w segmentach, których może być

maksymalnie 32. Kolejność oraz częstotliwość wykonywania danego segmentu można ustalić

dowolnie w wykazie realizowanych segmentów (Segment Schedular). Jeżeli jakiś segment jest

krytyczny czasowo można go wykonywać kilka razy w ciągu jednego obiegu pętli

programowej. Każdy z segmentów z kolei składa się z podsieci (Network), w których

umieszczamy program sterowania. Każda sieć ma wymiary 8 wierszy na 11 kolumn, a każde

przecięcie kolumny z wierszem jest nazywane węzłem, w który wprowadzamy elementy. Przy

czym są elementy jedno lub wielowęzłowe w zależności od ilości parametrów danego bloku.

background image

Programowanie sterowników PLC

79

Podobne możliwości daje język Step5 przeznaczony do programowania sterowników firmy

Siemens - Simatic S5 lub Step 7 dla sterowników Simatic S7. Tutaj jednak wygląda to trochę

inaczej. W strukturze programu występuje główny blok organizacyjny (OB1), w którym

piszemy sterowanie nadrzędne (strukturalne), które podobne jest do podawania kolejności

wykonywania segmentów w języku Modsoft. Jest to blok wykonywany cyklicznie przez

jednostkę centralną. Z bloku tego można wywoływać następne bloki nazywane

programowymi (PB), które zawierają programy użytkowe tworzące strukturę zgodną z

technologicznymi i

funkcjonalnymi warunkami sterowania. Z bloków programowych

natomiast można wywoływać pozostałe bloki: funkcje (FC), bloki funkcyjne z (FB) - często

powtarzające się elementy programowe, bloki danych (DB), czy też specjalne bloki

sekwencyjne (SB). W blokach organizacyjnych istnieje także możliwość programowania

liniowego, która jednak znacznie zmniejsza funkcjonalność pisanych programów. W

sterownikach S5 w blokach organizacyjnych nie można używać całej gamy instrukcji,

natomiast w S5 oraz S7 nie można tych bloków parametryzować. Poziom zagnieżdżania

programu w S5 może maksymalnie wynosić 16, a w S7 – 8 wywołań. W ramach bloku

program piszemy w segmentach. Jeżeli chodzi natomiast o najniższy poziom pisania

programu, programy Siemensa dają programiście większe pole manewru. Mianowicie można

wybrać jedną z trzech metod programowania: LAD - schemat stykowy (podobny do tego z

programu Modsoft), CSF - schemat logiczny oraz STL - lista instrukcji, przy czym pełny

zestaw instrukcji dostępny jest tylko przy programowaniu metodą STL. Na rysunku 4.7.

pokazano jak wygląda struktura programu dla sterowników Modicon 984 oraz Simatic S5, S7.

Rys.4.7. Struktury programu dla sterowników Modicon oraz Simatic

Segment 1

Segment n

Network 1
Network 2

Network m

Network 1
Network 2

Network m

Schemat

Drabinkowy

Schemat

Drabinkowy

Program

OB 1

Call X

Call Y

PB, FB, DB

Modicon 984 Compact

Simatic S5, S7

PB X

BE

Program

PB Y

BE

PB, FB, DB

PB, FB, DB

BE


Wyszukiwarka

Podobne podstrony:
Programowanie PLC LAD
Podstawy programowania plc
sterowniki+programowalne+plc%2c+cz%ea%9c%e6+5
Sprawozdanie 1 - SAIA, Programowanie PLC
Sterowniki programowalne PLC Siemens(1)
adresy programowania plc
Configurando Mikrotik, Programowanie PLC, mikrotik instrukcje
programowanie plc
Sterowniki programowalne PLC Siemens

więcej podobnych podstron