Programowanie_PLC.pdf

(241 KB) Pobierz
287013545 UNPDF
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,
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,
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ą.
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
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
N
zmienna, stała
operand do wynik bieżący
ST
N
zmienna
wynik bieżący do operand
S
zmienna logiczna
ustaw wartość operandu
R
zmienna logiczna
wyzeruj wartość operandu
AND
N, (
zmienna logiczna
logiczne AND
&
N, (
zmienna logiczna
logiczne AND
OR
N, (
zmienna logiczna
logiczne OR
XOR
N, (
zmienna logiczna
logiczna suma z wyłączeniem
ADD
(
zmienna, stała
dodawanie
SUB
(
zmienna, stała
odejmowanie
MUL
(
zmienna, stała
mnożenie
DIV
(
zmienna, stała
dzielenie
GT
(
zmienna, stała
porównanie: >
GE
(
zmienna, stała
porównanie: >=
EQ
(
zmienna, stała
porównanie: =
LE
(
zmienna, stała
porównanie: <>
LT
(
zmienna, stała
porównanie: <=
NE
(
zmienna, stała
porównanie: <
)
ograniczenie modyfikatora
CAL
C, N
nazwa
wywołanie bloku funkcyjnego
JMP
C, N
etykieta
skok do etykiety
RET
C, N
powrót z wywołania
287013545.001.png
Zgłoś jeśli naruszono regulamin