Politechnika Gdańska Wydzial Elektrotechniki i Automatyki STEROWNIKI PROGRAMOWALNE Część 2 Ireneusz Mosoń Gdańsk, 2010 Publikacja jest dystrybuowana bezplatnie Material zostal przygotowany w związku z realizacją projektu pt. „Zamawianie ksztalcenia na kierunkach technicznych, matematycznych i przyrodniczych – pilotaŜ” wspólfinansowanego ze środków Unii Europejskiej w ramach Europejskiego Funduszu Spolecznego Nr umowy: 46/DSW/4.1.2/2008 – zadanie 018240 w okresie od 21.08.2008 – 15.03.2012
88
Embed
Sterowniki Programowalne Czesc 2 - Strona główna · Ireneusz Moso ń Sterowniki programowalne - 2 - Materiały pomocnicze do przedmiotu „Sterowniki programowalne”
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Politechnika Gda ńska Wydział Elektrotechniki i Automatyki
STEROWNIKI PROGRAMOWALNE
Część 2
Ireneusz Moso ń
Gdańsk, 2010
Publikacja jest dystrybuowana bezpłatnie
Materiał został przygotowany w zwi ązku z realizacj ą projektu pt. „Zamawianie kształcenia na kierunkach technicznych, matematyczn ych i przyrodniczych –
pilota Ŝ” współfinansowanego ze środków Unii Europejskiej w ramach Europejskiego Funduszu Społecznego
Nr umowy: 46/DSW/4.1.2/2008 – zadanie 018240 w okre sie od 21.08.2008 – 15.03.2012
Ireneusz Mosoń Sterowniki programowalne
- 2 -
Materiały pomocnicze do przedmiotu „Sterowniki prog ramowalne” prowadzonego w j ęzyku angielskim w semestrze zimowym w roku akademickim 2010/2011 dla V semestru specjalno ści zamawianej
„Technologie informatyczne w elektrotechnice” na studiach pierwszego stopnia na kierunku Elektrot echnika
Ireneusz Mosoń Sterowniki programowalne
- 3 -
Przedmowa
Projektowanie i budowę nowoczesnych systemów sterowania trudno sobie obecnie wyobrazić
bez szerokiego stosowania sterowników programowalnych (ang. Programmable Controllers).
Od czasu, gdy zastosowano pierwsze proste sterowniki programowalne w przemyśle
samochodowym minęło juŜ ponad czterdzieści lat, w ciągu których sterowniki
programowalne potwierdziły swoją przydatność w systemach sterowania w róŜnych
zastosowaniach. Przede wszystkim pracują jednak w przedsiębiorstwach i zakładach
produkcyjnych w róŜnych gałęziach przemysłu. Sterują w nich pojedynczymi maszynami i
urządzeniami, zautomatyzowanymi liniami produkcyjnymi oraz procesami technologicznymi.
W czasie od pierwszych zastosowań sterowników do obecnych czasów nastąpił ogromny
rozwój w konstrukcjach i moŜliwościach funkcjonalnych sterowników programowalnych - od
prostych sterowników wykonujących w sposób programowy funkcje sterowania logicznego
(realizowane wcześniej za pomocą układów sterowania stykowo-przekaźnikowych), do
nowoczesnych sterowników mogących pracować w sieci i realizujących nawet bardzo
złoŜone zadania sterowania.
PoniewaŜ sterowniki programowalne są obecnie podstawowymi urządzeniami w
oparciu o które projektuje się i realizuje sterowanie w systemach automatyki, od absolwentów
uczelni technicznych – w tym i kierunku Elektrotechnika – oczekuje się, Ŝe będą posiadali
niezbędną wiedzę o sterownikach programowalnych i ich zastosowaniach, oraz umiejętność
tworzenia i uruchamiania programów sterowania [35,38]. Tym bardziej taką wiedzę i
umiejętności powinni posiadać przyszli absolwenci specjalności zamawianej „Technologie
informatyczne w elektrotechnice”.
Podstawowym źródłem informacji dotyczących sterowników programowalnych jest
norma międzynarodowa IEC 61131 (przyjęta równieŜ jako norma europejska EN 61131, a
takŜe jako polska norma uznaniowa PN-EN 61131). W normie zawarte są pojęcia i
zagadnienia wspólne (ogólne i szczegółowe) dotyczące sprzętu i programowania sterowników
programowalnych. Informacje o sterownikach programowalnych moŜna znaleźć takŜe w
artykułach w specjalistycznych czasopismach i w coraz liczniejszych pozycjach ksiąŜkowych.
W artykułach najczęściej omawiane są nowe rozwiązania sprzętowe i programowe róŜnych
sterowników oraz nowe moŜliwości ich zastosowań, które z nich wynikają, a takŜe opisywane
są przykłady konkretnych zastosowań sterowników programowalnych w róŜnych
dziedzinach. W ksiąŜkach zazwyczaj przedstawiane są podstawy budowy, zasada działania i
programowanie sterowników - najczęściej na przykładach wybranych sterowników
programowalnych róŜnych producentów. W ksiąŜkach często zawarte są równieŜ zagadnienia
Ireneusz Mosoń Sterowniki programowalne
- 4 -
ogólne i szczegółowe dotyczące sterowania automatycznego, a związane ze stosowaniem
sterowników programowalnych. Jednak podstawowym, a takŜe szczegółowym i najbardziej
aktualnym źródłem informacji dotyczących konkretnych sterowników programowalnych są
dokumentacje techniczne. Jest to teŜ źródło najbardziej aktualne – szczególnie w przypadku
dokumentacji w wersji elektronicznej.
Przygotowane materiały pomocnicze (Część 2) w duŜej części zawierają
przedstawienie treści programowych przedmiotu „Sterowniki programowalne” (wykłady,
ćwiczenia i laboratorium) prowadzonego w roku akademickim 2010/2011 dla V semestru
specjalności zamawianej „Technologie informatyczne w elektrotechnice”. W materiałach
tych, oprócz omówienia wybranych zagadnień dotyczących pracy sterowników
programowalnych w sieci, dokonano równieŜ próby usystematyzowania materiału
dotyczącego strukturyzacji programów sterowania i sterowania procesami sekwencyjnymi.
Część 1 tych materiałów pomocniczych napisana jest w języku angielskim, gdyŜ
zajęcia dla studentów specjalności zamawianej prowadzone są po angielsku. Dzięki zajęciom
prowadzonym w języku angielskim, tym materiałom przygotowanym w dwóch językach, oraz
pozycjom ze spisu literatury, studenci będą mogli opanować terminologię angielską i polską
dotyczącą sterowników oraz doskonalić swoje umiejętności w posługiwaniu się językiem
angielskim w technice.
W spisie literatury (wspólnym dla obu części) zamieszczono zarówno te pozycje
literatury do których znajdują się odwołania w tych materiałach, jak równieŜ i inne wybrane
pozycje przydatne do zrozumienia i opanowania przez studentów materiału z wykładów,
ćwiczeń i zajęć laboratoryjnych.
Ireneusz Mosoń Sterowniki programowalne
- 5 -
Spis treści
Treści i efekty kształcenia przedmiotu „Sterowniki programowalne” …………………...… 6
1. Strukturyzacja programów sterowania ............................................................................. 7
1.1. Wprowadzenie .......................................................................................................... 7
1.2. Etap pierwszy strukturyzacji programów sterowania …………............................... 7
1.3. MoŜliwości strukturyzacji programów sterowania na drugim etapie ....................... 9
1.4. Strukturyzacja zgodnie z normą IEC 61131-3 – etap trzeci .................................... 15
1.5. Tworzenie funkcji i bloków funkcyjnych uŜytkownika ......................................... 16
1.6. Podsumowanie i wnioski ………………………………………………………… 19
Literatura ............................................................................................................................... 85
Ireneusz Mosoń Sterowniki programowalne
- 6 -
Treści i efekty kształcenia przedmiotu „Sterowniki programowalne”
Treści kształcenia
WYKŁAD Sterowniki programowalne w systemach sterowania. Rodzaje, budowa i zasada działania. Wykonywanie programu sterowania. Pamięć obrazu procesu. Charakterystyka sprzętowa sterownika. Powiązanie ze sterowanym procesem. Układy wejść/wyjść binarnych, analogowych i specjalnych. Podstawy programowania. Norma PN-EN 61131-3. Model oprogramowania. Języki programowania. Typy danych i deklarowanie zmiennych. Adresowanie. Elementy organizacyjne oprogramowania - programy, funkcje i bloki funkcyjne. Tworzenie funkcji i bloków funkcyjnych uŜytkownika. Strukturyzacja programów sterowania. Czynniki jakości oprogramowania. Praca sterowników programowalnych w sieci. Struktury sieci. Sprzęgi komunikacyjne i media transmisji. Sposoby sterowania dostępem do łącza. Protokoły komunikacyjne (Suconet K, Modbus RTU, Profibus DP, AS-i). Ethernet przemysłowy (protokoły: Modbus TCP, Powerlink, Profinet). Projektowanie układów i systemów sterowania ze sterownikami programowalnymi. Dobór sterownika do konkretnego zastosowania. Realizacja dialogu człowiek - maszyna (HMI). Programy SCADA.
ĆWICZENIA Systemy liczbowe stosowane w sterownikach programowalnych. Typy danych i funkcje ich konwersji. Tworzenie algorytmów sterowania; elementy graficzne algorytmów. Oprogramowanie narzędziowe Easy Soft CoDeSys. Pisanie programów sterowania (z wykorzystaniem języków: IL, LD, FBD, ST, CFC) i ich uruchamianie z wykorzystaniem symulatora programowego (sterownik wirtualny). Tworzenie ekranów wizualizacji. Programowanie sterowania procesami sekwencyjnymi w języku SFC.
LABORATORIUM Oprogramowanie narzędziowe Sucosoft S40 (struktura oprogramowania; konfigurowanie układu sterowania; edycja programu, uruchamianie testowanie i dokumentowanie programów sterowania). Program sterowania przenośnikiem - I i II. Funkcje konwersji danych i operacje arytmetyczne. Liczenie zdarzeń i opcje kompilatora. Tworzenie bloku funkcyjnego uŜytkownika. Modyfikacja programu i zmiana wartości zmiennych w trybie On-line. Wejście szybkiego licznika i jego wykorzystanie. Programowanie sterowników serii PS4-200 i PS4150 pracujących w sieci (master - active slave). Efekty kształcenia
Student opisuje typy i budowę sterowników programowalnych. Wyjaśnia zasadę działania sterownika i wykonywania programu uŜytkownika. Student dobiera sterownik do konkretnego zastosowania. Analizuje wymagania zadań sterowania i opracowuje algorytmy sterowania. Pisze, uruchamia i testuje programy o małej i średniej złoŜoności do sterowania róŜnymi obiektami sterowania. Tworzy funkcje i bloki funkcyjne uŜytkownika. Tworzy proste aplikacje wizualizacyjne.
Ireneusz Mosoń Sterowniki programowalne
- 7 -
1. Strukturyzacja programów sterowania
1.1. Wprowadzenie
Strukturyzacja jest i zawsze była zalecaną formą tworzenia oprogramowania.
Stwierdzenie to odnosi się takŜe do programowania sterowników programowalnych. Na
przestrzeni lat zmieniały się moŜliwości strukturyzacji programów sterowania [26,36].
Biorąc pod uwagę narzędzia do pisania programów sterowania na sterowniki
programowalne oraz moŜliwości strukturyzacji programów sterowania moŜna wyróŜnić trzy
podstawowe etapy w procesie zmian sposobów tworzenia oprogramowania.
Pierwszy etap obejmuje okres od 1968 roku, czyli od wyprodukowania pierwszego
sterownika programowalnego, do początku lat osiemdziesiątych ubiegłego wieku, czyli do
pojawienia się pierwszych komputerów osobistych typu IBM PC.
Drugi etap obejmuje okres od początku lat osiemdziesiątych do roku 1993, czyli do
ustanowienia normy międzynarodowej IEC 1131 (od roku 1996 IEC 61131), a w
szczególności części trzeciej tej normy dotyczącej języków programowania.
Trzeci etap obejmuje okres od roku 1993 do dnia dzisiejszego.
1.2. Etap pierwszy strukturyzacji programów sterowania
Etap pierwszy charakteryzował się tym, Ŝe do programowania sterowników
powszechnie uŜywane były programatory ręczne.1 Program napisany z wykorzystaniem
programatora ręcznego stanowił jeden blok programowy bez moŜliwości stosowania
zmiennych symbolicznych, a adresy wszystkich skoków były definiowane jako konkretne
liczby będące numerami linii programu, do których dany skok był wykonywany.
Z tych powodów moŜliwości strukturyzacji programów sterowania były bardzo
ograniczone. Sprowadzały się głównie do odpowiedniego uporządkowania sekwencji
programowych tak, aby w jak największym stopniu odzwierciedlały one algorytm sterowania.
1 W tym okresie, oprócz programatorów ręcznych, istniały równieŜ programy narzędziowe do programowania
sterowników instalowane na minikomputerach. JednakŜe ze względu na cenę minikomputerów i
oprogramowania narzędziowego mogły sobie na nie pozwolić tylko duŜe firmy zajmujące się automatyką
przemysłową. Względy ekonomiczne powodowały więc, Ŝe dla większości inŜynierów zajmujących się
programowaniem sterowników, a pracujących w małych i średniej wielkości firmach, minikomputery z
programami narzędziowymi były niedostępne; pozostawało im programowanie za pomocą programatorów
ręcznych.
Ireneusz Mosoń Sterowniki programowalne
- 8 -
Najczęściej otrzymywano wówczas taką kolejność sekwencji programowych, która
odpowiadała fazom pracy sterowanej maszyny, urządzenia lub procesu technologicznego,
albo teŜ etapom pracy sterowanej linii technologicznej.
Poszczególne fragmenty programu, podczas wykonywania przez sterownik cykli
programu, mogły być pomijane jako nieistotne na danym etapie sterowania. SłuŜyły do tego
celu instrukcje skoków warunkowych lub bezwarunkowych oraz specjalne instrukcje
włączające/wyłączające warunkowo fragmenty programu do analizy w bieŜącym cyklu
programu. Przykładami takich instrukcji są MCS (ang. Master Control Set) i MCR (ang.
Master Control Reset) stosowane np. w sterownikach firmy Hitachi [12], oraz instrukcje MLS
(ang. Master Line Set) i MLR (ang. Master Line Reset) w sterownikach firmy Koyo [8].
Wykorzystanie wyŜej wymienionych instrukcji nie zmniejszało pracochłonności przy
tworzeniu programów sterowania, było natomiast bardzo waŜne z punktu widzenia
strukturyzacji oprogramowania, gdyŜ prowadziło do większej przejrzystości oprogramowania
i dzięki temu ułatwiona była jego analiza i uruchamianie.
Odrębnym problemem, pośrednio związanym ze strukturyzacją oprogramowania a
zwiększającym pracochłonność, była konieczność uaktualniania adresów w programie po
kaŜdorazowym wprowadzeniu zmiany w programie sterowania. Sytuacje takie były
stosunkowo częste, gdyŜ występowały zarówno podczas modyfikacji programu na etapie jego
tworzenia jak i później, podczas wprowadzania zmian do programu na etapie uruchamiania.
adresów po wprowadzeniu zmiany w programie sterowania było wykorzystywanie pustych
instrukcji NOP (ang. No OPeration). Za pomocą tych instrukcji były rezerwowane - pod
ewentualne przyszłe zmiany - niewielkie fragmenty pamięci programu. Dzięki temu, jeśli nie
następowała zmiana długości programu, to nie następowały równieŜ zmiany adresów w tych
częściach programu, które nie były modyfikowane.
Jako przykład na rysunku 1.1 przedstawiono fragment (przed i po modyfikacji) programu
sterowania napisany w języku IL (lista instrukcji) dla sterowników serii PS4-100 firmy
Moeller Electric w oprogramowaniu Sucosoft S30-S3. Z lewej strony zamieszczono fragment
programu przed, a z prawej po modyfikacji. Po dokonaniu modyfikacji sekwencji
programowej zapisanej w liniach programu od adresu 058 do adresu 061, a polegającej na
dodaniu instrukcji A I0.7 w 060 linii programu usuwając równocześnie jedną instrukcję NOP,
adresy linii programu po pozostałych instrukcjach NOP nie ulegają zmianie. Dzięki temu
adres skoku warunkowego w 066 linii programu, jak równieŜ wszystkie inne adresy skoków
nie pokazane w tym fragmencie programu, równieŜ nie ulegają zmianie.
Ireneusz Mosoń Sterowniki programowalne
- 9 -
⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ 058 L I 0.2 058 L I 0.2 059 O I 0.3 059 O I 0.3 060 AN M 2.5 060 A I 0.7 061 = Q 0.1 061 AN M 2.5 062 NOP 062 = Q 0.1 063 NOP 063 NOP 064 NOP 064 NOP 065 L I 0.1 065 L I 0.1 066 JC 095 066 JC 095 067 L M 0.7 067 L M 0.7 ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅ ⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅
Rys.1.1. Przykład rezerwowania pamięci z wykorzystaniem instrukcji NOP
Wszystkie wymienione powyŜej wady zostały wyeliminowane na kolejnych etapach procesu
zmian sposobów tworzenia oprogramowania. Wyraźnie zwiększyły się teŜ moŜliwości
strukturyzacji programów sterowania. Było to moŜliwe dzięki rozwojowi i upowszechnieniu
komputerów osobistych typu IBM PC i opracowaniu przez producentów sterowników
programów narzędziowych uruchamianych na tego typu komputerach.
1.3. MoŜliwości strukturyzacji programów sterowania na drugim etapie
Na drugim etapie w procesie zmian sposobów tworzenia oprogramowania, dzięki
programom narzędziowym, tworzenie programów sterowania na sterowniki programowalne
stało się wygodniejsze, gdyŜ:
� zmiennym moŜna było przyporządkować nazwy symboliczne;
� adresy skoków były definiowane jako etykiety bloków programowych do których skoki
były wykonywane;
� zmiennym i blokom programowym moŜna było przyporządkować komentarze;
� moŜliwa była pełniejsza dokumentacja oprogramowania;
� łatwiejsze stało się wprowadzanie zmian w programach sterowania;
� zwiększyły się moŜliwości strukturyzacji programów sterowania.
PoniewaŜ w programach narzędziowych producentów sterowników występowały
róŜnice w instrukcjach i językach programowania, w róŜny sposób rozwiązywane było
równieŜ zagadnienie strukturyzacji programów sterowania. PoniŜej omówiono kilka
rozwiązań.
W sterownikach serii PS306, PS316 i PS4 firmy Moeller (do roku 1999 Klockner-
Moeller) moŜna było tworzyć programy sterowania i podprogramy, przy czym podprogramy
mogły być kompilowane oddzielnie lub łącznie z programem głównym [9,26]. W pierwszym
Ireneusz Mosoń Sterowniki programowalne
- 10 -
przypadku, gdy podprogram był kompilowany oddzielnie a nie łącznie z programem
głównym, był on umieszczany w pamięci sterownika za programem głównym i mógł być
przywoływany w programie głównym wielokrotnie. Wywoływanie podprogramu następuje
poprzez instrukcję CM (ang. Call Module); jest to wywołanie bezwarunkowe. W drugim
przypadku kod podprogramu był przywoływany i dołączany do kodu programu głównego na
etapie kompilacji i kompilowany łącznie z programem głównym. Z tego powodu taki
podprogram mógł być przywołany w programie głównym tylko raz. Dołączenie tego typu
podprogramu następuje poprzez instrukcję INCLUDE. Zarówno w pierwszym jak i drugim
przypadku moŜliwe jest zagnieŜdŜanie podprogramów (do 8 lub 64 poziomów – w zaleŜności
od rodzaju sterownika).
Na rysunku 1.2 przedstawiono przykładową strukturę programu sterowania składającą się z
programu głównego, czterech podprogramów i jednego podprogramu o nazwie prog1.qxx
dołączonego za pomocą instrukcji INCLUDE.
PROGRAM GŁÓWNY
CM $PM1
#INCLUDE<prog1.qxx>
CMGT $PM2
$PM1
EM
$PM2
EM
$PM3
EM
CM $PM4
EP
$PM4
EM
CM $PM3
CMLT $PM3
Rys.1.2. Przykład struktury programu dla sterowników PS4 w oprogramowaniu S30-S4
Na rysunku 1.2 pokazano bezwarunkowe wywołania podprogramów $PM1 (ang. Program
Module, $ oznacza podprogram) i $PM3, warunkowe wywołanie CMGT (ang. Call Module
on Greater Than) podprogramu $PM2 i warunkowe wywołanie CMLT (ang. Call Module on
Less Than) podprogramu $PM3. Bezwarunkowe wywołanie podprogramu $PM4 jest
Ireneusz Mosoń Sterowniki programowalne
- 11 -
wykonywane z podprogramu który został dołączony do programu głównego instrukcją
INCLUDE. Z Ŝadnego z podprogramów przedstawionych na rysunku 1.2 nie następuje
wcześniejszy (w wyniku instrukcji powrotu warunkowego lub bezwarunkowego) powrót do
wywołującego go programu lub podprogramu. Ostatnią instrukcją programu jest EP (ang.
End of Program) a ostatnią instrukcją podprogramu jest EM (ang. End of Module).
Podprogram prog1.qxx nie posiada instrukcji końca, gdyŜ jest kompilowany łącznie z
programem głównym.
W sterownikach serii Simatic S5 (równieŜ i Simatic S7) firmy Siemens program dla
sterownika składa się z mniejszych elementów oprogramowania zwanych blokami [4,48].
Bloki mogą być pięciu typów: bloki organizacyjne OB (ang. Organisation Block), bloki
programowe PB (ang. Program Block), bloki funkcyjne FB (ang. Function Block), bloki
sekwencyjne SB (ang. Sequential Block) i bloki danych DB (ang. Data Block). Na rysunku
1.3 przedstawiono przykładową strukturę programu sterowania składającą się z programu
głównego OB1, trzech podprogramów (PB1, PB2, PB3) i dwóch bloków funkcyjnych (FB1 i
FB2). W przedstawionym przykładzie wszystkie wywołania podprogramów i bloków
funkcyjnych są bezwarunkowe (JU); instrukcja BE jest instrukcją końca bloku.
OB1
JU PB1
BE
JU PB2
PB1
BE
FB2
BE
FB1
BE
JU FB1
JU PB3
PB3
BE
JU FB2
JU FB1
FB1
BE
PB2
BE
Rys.1.3. Przykład struktury programu dla sterowników Simatic S5 w oprogramowaniu Step 5
Ireneusz Mosoń Sterowniki programowalne
- 12 -
KaŜdy program musi posiadać przynajmniej blok organizacyjny OB1 który jest cyklicznie
wywoływany przez system operacyjny. Pozostałe bloki organizacyjne są albo wywoływane
przez system operacyjny po wystąpieniu określonego zdarzenia, np. OB22 – po załączeniu
automatycznym przy powrocie napięcia, lub za ich pomocą wywoływane są pewne
standardowe funkcje zintegrowane z systemem operacyjnym, np. OB251 – algorytm regulacji
PID. Bloki PB i SB spełniają rolę podprogramów i normalnie są przywoływane w
oprogramowaniu jednokrotnie. Bloki funkcyjne FB teŜ spełniają rolę podprogramów ale
mogą być wywoływane wielokrotnie i z róŜnymi argumentami [4].
W sterownikach serii PCD firmy SAIA [51] program składa się z bardzo podobnych
elementów oprogramowania jak w sterownikach Simatic S5. Są to: cykliczny blok
organizacyjny COB (ang. Cyclic Organization Block), blok organizacyjny wyjątku XOB
(ang. Exception Organization Block), blok programowy PB (ang. Program Block) i blok
funkcyjny FB (ang. Function Block). MoŜna zaprogramować więcej niŜ jeden blok COB
(maksymalnie do 16); wszystkie te bloki są wykonywane w ustalonej kolejności w kaŜdym
cyklu programowym. Strukturę programu sterowania, gdy oprogramowane są dwa bloki COB
przedstawiono na rysunku 1.4.
COB 0 0
ECOB
COB 1 0
ECOB
Rys.1.4. Dwa bloki COB (program Bloctek – SAIA)
Bloki XOB są wywoływane w przypadku wystąpienia określonego zdarzenia (błędu
sprzętowego lub programowego), np. XOB1 – gdy brak jest zasilania kasety rozszerzenia.
Inne przeznaczenie ma tylko blok XOB16, który jest wykonywany jednokrotnie po
uruchomieniu sterownika, a dopiero po nim wykonywane są cyklicznie bloki COB. Strukturę
programu, gdy oprogramowany jest blok XOB16 i jeden blok COB, przedstawiono na
Ireneusz Mosoń Sterowniki programowalne
- 13 -
rysunku 1.5. Bloki PB i FB są podprogramami, które mogą być wywoływane warunkowo lub
bezwarunkowo, a róŜnica pomiędzy nimi polega tylko na tym, Ŝe FB moŜe być wywoływany
z róŜnymi parametrami.
XOB 16
EXOB
COB 0 0
ECOB
Rys.1.5. Struktura programu z blokiem XOB16 i jednym blokiem COB
W sterownikach GE Fanuc serii 90-30 (równieŜ i VersaMax) oprogramowanie
uŜytkownika moŜe składać się z programu głównego i podprogramów [50]. W odróŜnieniu od
wcześniej omówionych przykładów dla innych sterowników, podprogramy w sterownikach
GE Fanuc nie dzielą się na róŜne rodzaje o ściśle określonych funkcjach. Podprogramy mogą
być wywoływane (bezwarunkowo lub warunkowo) z programu głównego lub teŜ z innych
podprogramów. Podprogram moŜe być wywoływany dowolną liczbę razy podczas
wykonywania programu i dopuszczalne są takŜe wywołania rekurencyjne. Przy wywołaniach
podprogramu z programu głównego i podprogramów dopuszczalnych jest osiem poziomów
zagnieŜdŜeń (a właściwie siedem, gdyŜ poziom programu głównego jest liczony jako poziom
pierwszy). Na rysunku 1.6 pokazano przykładową strukturę programu sterowania składającą
się z programu głównego i czterech podprogramów (zagnieŜdŜenia do poziomu trzeciego).
Dwa podprogramy są wywoływane dwukrotnie: podprogram drugi dwa razy z programu
głównego, a podprogram trzeci raz z podprogramu drugiego, a raz z podprogramu czwartego.
Jeśli wszystkie wywołania są bezwarunkowe, to w kaŜdym cyklu pracy sterownika
podprogram trzeci jest w rzeczywistości wywoływany trzy razy – poniewaŜ podprogram
drugi jest wywoływany dwukrotnie.
Ireneusz Mosoń Sterowniki programowalne
- 14 -
PROGRAM
PODPROGRAM 1
PODPROGRAM 2
PODPROGRAM 4CALL
CALL
CALL
CALL
CALL
CALL
PODPROGRAM 3
Rys.1.6. Przykładowa struktura programu w sterownikach GE Fanuc
Innym sposobem strukturyzacji oprogramowania w sterownikach programowalnych,
oprócz wykorzystywania podprogramów, jest programowanie w językach graficznych takich
jak np. język GRAFCET, najbardziej popularny w sterownikach TSX firmy Schneider
Electric [42], czy teŜ programowanie w bardzo podobnym do GRAFCET-u języku
GRAFTEC stosowanym w sterownikach PCD firmy SAIA [51]. Języki te pozwalają na
opisanie systemu odnoszącego się do procesu technologicznego lub urządzenia pracującego
sekwencyjnie tj. krok po kroku. Diagram GAFCET (lub GRAFTEC) wykorzystuje
ograniczoną liczbę prostych symboli (kroków zawierających działania, przejść zawierających
warunki oraz połączeń pomiędzy krokami i przejściami) i kieruje się zbiorem określonych
reguł. PoniewaŜ język GRAFCET (i GRAFTEC) steruje tylko sekwencją sterowań, to w celu
opisania działań zawartych w krokach i warunków przejść naleŜy uŜyć innego języka
programowania (najczęściej IL, LD lub FBD). Przykłady sterowań sekwencyjnych i
odpowiadających im diagramów języka GRAFCET omówiono w rozdziale 2.
Cechą wspólną przedstawionych powyŜej jak równieŜ i innych powstałych na drugim
etapie programów narzędziowych jest konieczność przyporządkowywania zmiennym adresów
w pamięci sterownika. Przekazywanie danych pomiędzy programem głównym a
podprogramami lub pomiędzy podprogramami, czy teŜ ogólnie elementami oprogramowania,
jest realizowane poprzez wspólne obszary znacznikowe (obszary pamięci).
Ireneusz Mosoń Sterowniki programowalne
- 15 -
1.4. Strukturyzacja zgodnie z normą IEC 61131-3 – etap trzeci
Trzeci etap w procesie zmian sposobów tworzenia oprogramowania jest ściśle
związany z utworzeniem organizacji PLCopen zrzeszającej producentów sterowników
programowalnych i programów narzędziowych do nich, oraz opracowaniem i wprowa-
dzeniem w 1993 roku międzynarodowej normy IEC 1131 (po aktualizacji 61131) [40] której
część 3 dotyczy języków programowania [41]. Norma ta definiuje pojęcia podstawowe,
zasady ogólne, model programowy i model komunikacyjny oraz podstawowe typy i struktury
danych. Określono w niej dwie grupy języków programowania: tekstowe i graficzne. Do
języków tekstowych naleŜą: lista instrukcji IL (ang. Instruction List) i język strukturalny ST
(ang. Structured Text). Do języków graficznych naleŜą: schemat drabinkowy LD (Ladder
Diagram), język schematów blokowych FBD (ang. Function Block Diagram) i graf
sekwencji SFC (ang. Sequential Function Chart). W normie wyróŜniono następujące
elementy organizacyjne oprogramowania POU (ang. Program Organization Units): funkcje F
(ang. Functions), bloki funkcyjne FB (ang. Function Blocks) i programy P (ang. Programs).
Zdefiniowano równieŜ model oprogramowania, na który, oprócz elementów organizacyjnych
oprogramowania składają się elementy konfiguracji; są to: konfiguracje (ang.
Configurations), zasoby (ang. Resources), zadania (ang. Tasks), zmienne globalne (ang.
Global Variables) i ścieŜki dostępu (ang. Access Paths). Model oprogramowania według
normy międzynarodowej przedstawiono na rysunku 1.7. Obecnie jest to równieŜ norma
europejska (EN 61131-3) i polska (PN-EN 61131-3:2004) [41].
Tak więc strukturyzacja oprogramowania jest ściśle określona przez model
oprogramowania i model komunikacyjny, a na ograniczenie złoŜoności i poprawę
przejrzystości struktury i zasady działania programu wpływa stosowanie funkcji i bloków
funkcyjnych. WaŜna jest równieŜ wprowadzona moŜliwość definiowania zmiennych
reprezentowanych symbolicznie, a nie tylko zmiennych reprezentowanych bezpośrednio.
Przekazywanie danych pomiędzy poszczególnymi elementami oprogramowania, oprócz
wykorzystywania wspólnych obszarów znacznikowych, moŜe odbywać się takŜe za pomocą
zmiennych globalnych, funkcji komunikacyjnych i ścieŜek dostępu. Równie waŜna, z punktu
widzenia wygody programisty i strukturyzacji programów sterowania, jest moŜliwość
prostego tworzenia bloków funkcyjnych uŜytkownika. Bloki takie, w odróŜnieniu od
gotowych bloków funkcyjnych dostarczanych przez producentów oprogramowania, mogą
realizować nie tylko przetwarzanie sygnałów związane z algorytmem sterowania, ale równieŜ
mogą realizować funkcje związane z obsługą urządzeń współpracujących ze sterownikiem w
Ireneusz Mosoń Sterowniki programowalne
- 16 -
układzie sterowania. Przykład takiego urządzenia i obsługującego go bloku funkcyjnego
uŜytkownika przedstawiono w następnym podrozdziale.
ZASÓB
ZADANIE
PROGRAM PROGRAM
ZADANIE
FB FB
ZASÓB
ZADANIE
PROGRAM PROGRAM
ZADANIE
FB FB
SCIEZKI DOSTEPU
ZMIENNE GLOBALNE I REPREZENTOWANE BEZPOSREDNIO
Funkcja komunikacji
Sciezka do sterowania wykonaniem
FB
Sciezki dostepu do zmiennych
Blok funkcyjny
Zmienna
lub
KONFIGURACJA
Rys.1.7. Model oprogramowania według normy IEC 61131-3
1.5. Tworzenie funkcji i bloków funkcyjnych uŜytkownika
Kompaktowe sterowniki programowalne oprócz wejść i wyjść binarnych często
posiadają równieŜ niewielką liczbę wejść i wyjść analogowych. Przykładowo, sterowniki
PS4-141-MM1 i PS4-201-MM1 (pokazany na rysunku 1.8) firmy Moeller [1,2] posiadają po
Ireneusz Mosoń Sterowniki programowalne
- 17 -
dwa wejścia analogowe napięciowe (0÷10V) i jedno wyjście analogowe napięciowe (0÷10V).
Nawet w niezbyt rozbudowanych układach sterowania ta liczba wejść analogowych
sterownika często okazuje się niewystarczająca. MoŜna wówczas sterownik rozbudować o
moduły rozszerzenia lokalnego LE4 (np. LE4-206-AA1 z czterema wejściami analogowymi
napięciowymi, LE4-206-AA2 z czterema wejściami analogowymi prądowymi) lub o moduły
rozszerzenia zewnętrznego EM4 (np. EM4-101-AA2 z czterema wejściami analogowymi
napięciowymi i czterema prądowymi, EM4-101-TX1 z sześcioma wejściami do czujników
Pt100/Ni1000 i dwoma wejściami analogowymi napięciowymi).
Rys.1.8. Sterownik programowalny PS4-201-MM1
W przypadku, gdy sygnały analogowe w układzie sterowania są sygnałami
wolnozmiennymi (np. pomiary temperatury, odczytywanie nastaw parametrów z zadajników
potencjometrycznych) moŜna nie rozbudowywać układu sterowania o dodatkowe moduły
EM4 i/lub LE4, a zastosować rozwiązanie tańsze polegające na multipleksowaniu sygnałów
analogowych [36,38].
Przedstawiony na rysunku 1.9 multiplekser sygnałów analogowych MSA-08 posiada osiem
kanałów wejściowych i jest przewidziany do współpracy ze sterownikiem programowalnym.
Wszystkie kanały wejściowe multipleksera MSA-08 posiadają separację galwaniczną, są
konfigurowane za pomocą mikroprzełączników na róŜne rodzaje i zakresy sygnałów
wejściowych (napięciowe 0÷10V i ±10V oraz prądowe 0-20mA i 4-20mA) i są przetwarzane
na sygnał wyjściowy napięciowy 0÷10V – taki sam jak zakres na wejściu analogowym
sterownika. Wybór adresu multipleksowanego kanału jest realizowany poprzez podanie na
wejścia adresowe (A0,A1,A2) multipleksera sekwencji sygnałów napięciowych 24V DC –
Ireneusz Mosoń Sterowniki programowalne
- 18 -
czyli bezpośrednio z tranzystorowych wyjść binarnych 24V DC sterownika. Sygnały z
wejścia analogowego po przetworzeniu A/C muszą być w sterowniku demultipleksowane
programowo na taką samą liczbę kanałów wyjściowych jak liczba wykorzystywanych w
układzie sterowania kanałów wejściowych multipleksera.
Rys.1.9. Multiplekser sygnałów analogowych MSA-08
Do obsługi multipleksera i demultipleksowania sygnałów w sterowniku stworzono, w
zgodnym z normą IEC 61131-3 programie narzędziowym Sucosoft S40, przedstawiony na
rysunku 1.10 blok funkcyjny uŜytkownika o nazwie MSA_08 z następującymi zmiennymi
wejściowymi i wyjściowymi:
AN_IN Wejście analogowe sterownika na które podawany jest sygnał z wyjścia
multipleksera MSA-08;
CH_NR Liczba multipleksowanych kanałów MSA-08 (obsługiwane są kolejne
kanały licząc od kanału 0);
A0 Bit 0 adresu wyboru kanału MSA-08;
A1 Bit 1 adresu wyboru kanału MSA-08;
A2 Bit 2 adresu wyboru kanału MSA-08;
AN_OUT_0 Wartość cyfrowa sygnału analogowego z kanału 0 multipleksera MSA-08;
AN_OUT_1 Wartość cyfrowa sygnału analogowego z kanału 1 multipleksera MSA-08;
.....
AN_OUT_7 Wartość cyfrowa sygnału analogowego z kanału 7 multipleksera MSA-08;
ERROR Kod błędu (0 - nie ma błędu, 1 - niepoprawnie zadana liczba kanałów).
Ireneusz Mosoń Sterowniki programowalne
- 19 -
Dzięki temu obsługa programowa multipleksera i demultipleksowanie sygnałów w
sterowniku są realizowane w programie sterowania przez sprawdzony, poprawnie działający,
blok funkcyjny uŜytkownika.
MSA_08AN_IN
CH_NR
A0
A1
A2
AN_OUT_0
AN_OUT_1
AN_OUT_7
ERROR
BOOL
BOOL
BOOL
UINT
UINT
UINT
USINT
UINT
USINT
....
Rys.1.10. Blok funkcyjny uŜytkownika MSA-08
Przez cały czas gdy sterownik jest w trybie RUN obsługiwana jest zadana liczba kanałów;
czas potrzebny na obsługę 1 kanału jest równy czasowi dwóch cykli programu.
PoniewaŜ rozpatrywane sterowniki posiadają dwa wejścia analogowe i wystarczającą
liczbę wyjść binarnych, to moŜna do nich podłączyć dwa multipleksery MSA-08. W celu
wykorzystania drugiego multipleksera wymagane jest zadeklarowanie drugiego bloku typu
MSA_08 (drugie ukonkretnienie bloku).
1.6. Podsumowanie
Przedstawione w tym rozdziale trzy podstawowe etapy w procesie zmian sposobów
tworzenia oprogramowania pokazują, Ŝe zmiany te prowadzą w kierunku unifikacji i
zwiększenia moŜliwości strukturyzacji programów sterowania, oraz ujednolicenia programów
narzędziowych. PoniŜej przedstawiono zestawienie najwaŜniejszych cech
charakterystycznych poszczególnych etapów, a takŜe moŜliwości strukturyzacji programów
sterowania na kaŜdym z trzech wyróŜnionych etapów.
Etap pierwszy
Cechy charakterystyczne:
� zmienne reprezentowane bezpośrednio;
� adresy skoków do konkretnych numerów linii programu;
Ireneusz Mosoń Sterowniki programowalne
- 20 -
� cały program stanowił jeden element oprogramowania.
MoŜliwości strukturyzacji programów sterowania:
� uporządkowanie sekwencji programowych zgodnie z algorytmem sterowania;
� wykorzystywanie instrukcji skoków warunkowych i bezwarunkowych;
� rezerwowanie, pod ewentualne zmiany, fragmentów pamięci programu za pomocą
instrukcji NOP;
� stosowanie specjalnych instrukcji włączających warunkowo fragmenty programu do
analizy w bieŜącym cyklu (np. MLS i MLR).
Etap drugi
Cechy charakterystyczne:
� symboliczne nazwy zmiennych;
� etykiety sekwencji lub bloków programowych jako adresy skoków;
� bezpośrednia reprezentacja zmiennych w pamięci sterownika;
� wymiana danych pomiędzy elementami oprogramowania poprzez wspólne obszary
znacznikowe.
MoŜliwości strukturyzacji programów sterowania:
� moŜliwość tworzenia podprogramów;
� podział programu sterowania na bloki (podprogramy) róŜnych typów;
� wprowadzenie języków graficznych do programowania.
Etap trzeci
Cechy charakterystyczne:
� wprowadzenie normy międzynarodowej IEC 1131-3 (61131-3);
� zdefiniowanie modelu programowego i komunikacyjnego, podstawowych typów i struktur
danych oraz języków programowania;
� moŜliwość bezpośredniej i symbolicznej reprezentacji zmiennych w pamięci sterownika;
� wymiana danych poprzez zmienne globalne, funkcje komunikacyjne i ścieŜki dostępu;
� postępująca unifikacja programów narzędziowych.
MoŜliwości strukturyzacji programów sterowania:
� strukturyzacja oprogramowania wynikająca z normy;
� łatwość tworzenia funkcji (F) i bloków funkcyjnych uŜytkownika (FB).
Podsumowując moŜna stwierdzić, Ŝe zagadnienie strukturyzacji programów sterowania na
sterowniki programowalne jest jednym z waŜniejszych zagadnień ich programowania, gdyŜ
od tego w głównej mierze zaleŜy, czy stworzony program będzie zrozumiały, sprawdzalny,
Ireneusz Mosoń Sterowniki programowalne
- 21 -
łatwy w uruchomieniu, modyfikowalny, i czy stworzone przy tym poszczególne elementy
oprogramowania (głównie bloki funkcyjne uŜytkownika) będą nadawały się do wielokrotnego
uŜycia.
Dzięki stosowaniu bloków funkcyjnych uŜytkownika tworzenie programów jest
szybsze i łatwiejsze. Bloki funkcyjne redukują złoŜoność programu (dzięki ukryciu
złoŜoności wewnętrznej algorytmu bloku funkcyjnego), a raz utworzone mogą być uŜywane
w programie wielokrotnie (wielokrotne ukonkretnienie).
W rozdziale tym pominięto omawianie elementów oprogramowania wywoływanych w
wyniku przerwań, gdyŜ powinny być one omawiane łącznie z zagadnieniami czasowymi
(czas jednego cyklu programu i jego podział, czas reakcji układu sterowania), a nie zmieniają
one zasadniczo ani struktury programu sterowania, ani metod strukturyzacji programów
sterowania.
Ireneusz Mosoń Sterowniki programowalne
- 22 -
2. Sterowanie procesami sekwencyjnymi
2.1. Układy logiczne i ich rodzaje
Układ logiczny (często nazywany równieŜ dyskretnym) jest to układ w którym
zarówno sygnały wejściowe jak i wyjściowe są zmiennymi binarnymi (przyjmują tylko dwie
wartości: 0 i 1). Układy logiczne dzielą się na kombinacyjne i sekwencyjne.
W układach kombinacyjnych aktualny stan ich wyjść zaleŜy jedynie od aktualnego
stanu wejść.
W układzie kombinacyjnym wyróŜnia się:
� skończony zbiór sygnałów wejściowych X = { X1 , X2 , ... , Xn } ;
� skończony zbiór sygnałów wyjściowych Y = { Y1 , Y2 , ... , Ym } .
Działanie układu kombinacyjnego opisywane jest przez funkcję λ wyjść układu
Yt = λ(Xt) ,
gdzie indeks górny t odnosi się do pewnej, tej samej chwili czasu t.
W układach sekwencyjnych aktualny stan ich wyjść zaleŜy nie tylko od aktualnego
stanu wejść ale równieŜ od poprzednich stanów wejść. ZaleŜność między sygnałami
wyjściowymi i sygnałami wejściowymi nie jest więc jednoznaczna. Tym samym sygnałom
wejściowym mogą odpowiadać róŜne sygnały wyjściowe, zaleŜnie od stanu w jakim układ
znajdował się poprzednio. ZaleŜność aktualnego stanu układu sekwencyjnego od jego stanu w
chwili poprzedniej jest realizowana za pomocą elementów pamięci. Stan elementów pamięci
jest nazywany stanem wewnętrznym układu.
W układzie sekwencyjnym wyróŜnia się więc:
� skończony zbiór sygnałów wejściowych X = { X1 , X2 , ... , Xn } ;
� skończony zbiór sygnałów wyjściowych Y = { Y1 , Y2 , ... , Ym } ;
� skończony zbiór stanów wewnętrznych Q = { Q1 , Q2 , ... , Qk } .
Działanie układu sekwencyjnego opisywane jest przez funkcję δ przejść układu
Qt = δ(Qt-1, Xt) ,
gdzie indeks t-1 odnosi się do poprzedniej chwili czasu w której nastąpiła zmiana stanu
wewnętrznego układu, oraz, w zaleŜności czy jest to układ sekwencyjny Moore’a czy
Mealy’ego, przez odpowiednią funkcję λ wyjść układu:
Yt = λ(Qt) dla układu Moore’e ,
Ireneusz Mosoń Sterowniki programowalne
- 23 -
lub Yt = λ(Qt, Xt) dla układu Mealy’ego .
Schematy blokowe układów sekwencyjnych Moore’a i Mealy’ego składające się z układu
pamięci opisanego funkcją przejść δ i układu kombinacyjnego opisanego funkcją wyjść λ
przedstawiono na rysunkach 2.1 i 2.2.
YQδ λX
Rys.2.1. Schemat blokowy układu sekwencyjnego Moore’a
YX Qδ
λ
Rys.2.2. Schemat blokowy układu sekwencyjnego Mealy’ego
Wszystkie układy sekwencyjne dzielą się takŜe na asynchroniczne i synchroniczne.
Układy sekwencyjne asynchroniczne to takie układy sekwencyjne w których zmiany
stanów wewnętrznych układu mogą występować w dowolnych chwilach czasu określonych
przez zmiany sygnałów wejściowych.
Układy sekwencyjne synchroniczne to takie układy sekwencyjne w których zmiany
stanów wewnętrznych mogą występować tylko w ściśle określonych, dyskretnych chwilach
czasu wyznaczonych zmianami dodatkowego sygnału taktującego.
W przemyśle zdecydowana większość układów sterowania pojedynczych urządzeń,
linii produkcyjnych i procesów technologicznych moŜe być zakwalifikowana jako układy
sterowania sekwencyjnego asynchronicznego [30]. Z tego względu dalsza część tego
rozdziału poświęcona jest sposobom opisu, modelowania i programowania układów
sterowania procesów sekwencyjnych.
Ireneusz Mosoń Sterowniki programowalne
- 24 -
2.2. Metody opisu i realizacji algorytmów sterowania sekwencyjnego
Do opisu dyskretnych procesów sekwencyjnych najczęściej wykorzystuje się metody
graficzne przedstawienia algorytmów sterowania sekwencyjnego. Cechą charakterystyczną
tych metod jest to, Ŝe wymagają one wcześniejszego zamodelowania działania urządzenia lub
realizacji procesu technologicznego w procesie sterowania. Poprzez modelowanie rozumiane
jest modelowanie działania układu, a nie budowa modelu komputerowego programowanego
systemu sekwencyjnego.
Zgodnie z normą międzynarodową IEC 61131-3 [41] dotyczącą programowania
sterowników jednym z języków programowania jest język graficzny SFC (ang. Sequential
Function Chart). Jest to język uŜywający kroków (etapów) i przejść (warunków przejść) w
celu przedstawienia algorytmu programu sterowania procesem sekwencyjnym. Język
graficzny SFC został oparty na języku GRAFCET (fr. Graphe de Commande Etape –
Transition) [11,42] opisanym we francuskiej normie NF-C-3-190 z 1978 roku. W 1988 roku
organizacja IEC (ang. International Electrical Commission) adaptowała metodę GRAFCET
jako międzynarodowy standardowy język do programowania procesów sekwencyjnych;
oznaczono go symbolem IEC 848 – „Preparation of function charts for control systems”.
Norma ta została następnie powtórzona w normie IEC 61131-3 właśnie jako język SFC.
Język GRAFCET został opisany w podrozdziale 2.3, a w podrozdziale 2.4
zamieszczono i omówiono przykład wykorzystania tego języka do przedstawienia algorytmu
sterowania prasą hydrauliczną, będącą jednym z urządzeń linii produkcyjnej.
Metoda GRAFCET posiada wiele elementów wspólnych, stosowanych do opisu
sterowania procesami sekwencyjnymi, z niemiecką normą DIN 40719. Główna róŜnica
pomiędzy metodą GRAFCET a metodą DIN 40719 polega na tym, Ŝe w normie niemieckiej
warunki przejścia nie są przyporządkowane do konkretnego połączenia pomiędzy etapami,
lecz do kaŜdego z etapów. Warunki przejścia, zwane w normie DIN 40719 warunkami
początkowymi, stanowią zatem integralną część kaŜdego z etapów.
NaleŜy zauwaŜyć, Ŝe w oprogramowaniach narzędziowych róŜnych producentów
sterowników programowalnych, języki graficzne do programowania procesów
sekwencyjnych (bazujące na językach SFC i GRAFCET) mogą mieć róŜne nazwy, jak np.:
GRAFTEC dla sterowników firmy SAIA, MEGRAF dla sterowników firmy Mitsubishi, czy
GRAPH 5/II dla sterowników firmy Siemens.
Przykładami innych metod opisu dyskretnych procesów sekwencyjnych i sterowania
nimi są teŜ: sieć operacyjna ZPT (zautomatyzowanych procesów technologicznych) [28] i
sieć logiczna GRAFPOL [29].
Ireneusz Mosoń Sterowniki programowalne
- 25 -
Do programowania sterowania procesami sekwencyjnymi niekoniecznie trzeba
wykorzystywać graficzne języki programowania takie jak SFC i GRAFCET. Niekiedy
wystarczające jest wykorzystanie moŜliwości, jakie dają trzy podstawowe języki
programowania sterowników, czyli: lista instrukcji (ang. Instruction List - IL), schemat
drabinkowy (ang. Ladder Diagram – LD) i schemat bloków funkcji (ang. Function Block
Diagram – FBD). A moŜliwości te, to np. wykorzystanie instrukcji S i R (Set i Reset),
wykorzystanie bloków funkcyjnych rejestrów przesuwnych (dla zmiennych binarnych) jako
elementów przyporządkowujących i pamiętających. Niekiedy moŜna teŜ wykorzystać
specjalne bloki funkcyjne sterowania sekwencyjnego, jak np. SK w sterownikach firmy
Moeller czy SB w sterownikach firmy Siemens.
W podrozdziale 2.5 pokazano, w jaki sposób proces sterowania sekwencyjnego,
zamodelowany za pomocą grafu skierowanego, moŜe być oprogramowany wykorzystując do
tego celu instrukcje SET i RESET.
2.3. Język GRAFCET i jego charakterystyka
Język GRAFCET jest jednym z języków pozwalających na opisanie systemu
odnoszącego się do urządzenia lub procesu technologicznego pracującego sekwencyjnie tj.
krok po kroku. MoŜe być stosowany w przemysłowych systemach sterowania niezaleŜnie od
W tym diagramie jest w sumie 10 kroków (w tym jeden krok początkowy oznaczony
numerem 1) oraz 10 przejść zawierających warunki przejść oznaczone na rysunku 2.4 od w1
Ireneusz Mosoń Sterowniki programowalne
- 28 -
do w10. Z załoŜenia połączenia pomiędzy krokami przebiegają z góry do dołu diagramu; w
przypadkach nieoczywistych lub innych połączeniach, kierunek połączenia moŜe być
oznaczony strzałką. Na rysunku 2.4 dwa takie połączenia oznaczono strzałkami.
Z krokami, za wyjątkiem kroku początkowego, który jest zazwyczaj krokiem
spoczynkowym, są powiązane określone działania – na rysunku oznaczone od D1 do D9.
Działania te są wykonywane wówczas, gdy krok z którym są powiązane jest aktywny, i
przestają być wykonywane wówczas, gdy krok przestaje być aktywny.
MoŜliwość aktywacji kroków zaleŜy od przejść je poprzedzających i aktualnej
aktywności kroków w diagramie. Przykładowo, jeśli aktywny jest krok 1 i spełniony jest
warunek przejścia w1 to nastąpi przejście do kroku 2, czyli dezaktywacja kroku 1 i aktywacja
kroku 2. Po spełnieniu warunku przejścia realizacja przejścia jest obligatoryjna i
natychmiastowa.
W diagramie warunki przejść mogą się powtarzać, ale nie mogą być identyczne dla
dwóch kolejnych przejść, gdyŜ prowadziłoby to do pominięcia zawartego pomiędzy nimi
kroku. Przykładowo, gdyby warunki w3 i w4 były identyczne, to krok 4 byłby zawsze
pomijany i nigdy nie byłyby realizowane działania D3 powiązane z tym krokiem; taka
sytuacja byłaby błędna i nie moŜe mieć miejsca.
W diagramie oprócz połączeń prostych (typu: krok – przejście – krok –przejście itd.)
są równieŜ połączenia wielokrotne.
Gdy aktywny jest krok 2 i spełniony jest warunek w2 znajdującego się za nim
przejścia, to nastąpi dezaktywacja kroku 2 i równoczesna aktywacja kroków 3 i 8
(synchronizacja sterowania) co na diagramie pokazane jest równoległymi liniami po warunku
w2. Wyjście z tej sekwencji równoległej nastąpi wówczas, gdy będą aktywne kroki 5 i 10
oraz spełniony będzie warunek przejścia w5. Nastąpi wówczas dezaktywacja kroków 5 i 10
oraz aktywacja kroku 6.
Gdy aktywny jest krok 8, to kolejnym krokiem aktywnym moŜe stać się albo krok 9
albo krok 10. Gdy spełniony będzie warunek przejścia w8 to nastąpi dezaktywacja kroku 8 i
aktywacja kroku 9. Natomiast, gdy spełniony będzie warunek przejścia w9, to nastąpi
dezaktywacja kroku 8 i aktywacja kroku 10 (krok 9 i działania z nim powiązane są omijane).
PoniewaŜ jest to wybór jednego kroku z dwóch moŜliwych, to, aby sterowanie było
określone, warunek przejścia w9 powinien być negacją warunku w8.
Jak widać z powyŜszego, w diagramie GRAFCET w danej chwili moŜe być aktywny
więcej niŜ jeden krok. W przykładzie z rysunku 2.4 aktywne mogą być równocześnie dwa
kroki (jeden spośród kroków 3, 4, 5 i jeden spośród kroków 8, 9, 10).
Ireneusz Mosoń Sterowniki programowalne
- 29 -
W diagramie GRAFCET moŜe być takŜe więcej niŜ jeden krok początkowy, ale taki
przypadek nie został na rysunku 2.4 pokazany.
Kilka kroków i przejść moŜe być połączonych tworząc tzw. makro krok. Takie
połączone kroki i przejścia powinny być funkcjonalnie powiązane, tworząc w sumie złoŜone
zadanie (funkcję) sterowania. Makro krok zawsze rozpoczyna się i kończy krokiem, i dzięki
temu moŜe być umieszczony w diagramie GRAFCET tak samo jak zwykły pojedynczy krok z
poprzedzającym go przejściem i z następującym po nim przejściem. Dzięki wykorzystaniu
makro kroków moŜna osiągnąć większą przejrzystość diagramu. Diagram taki odzwierciedla
ogólną strukturę sterowania, podczas gdy szczegóły ukryte są w makro krokach (moŜliwe jest
zagnieŜdŜanie – tj. umieszczanie makro kroków w makro krokach).
Język GRAFCET steruje tylko sekwencją sterowań. W celu opisania działań
zawartych w krokach i warunków przejść naleŜy uŜyć innego języka programowania np.:
języka drabinkowego (LD) lub listy instrukcji (IL).
Organizacja sekcji programu w języku GRAFCET jest ściśle określona. Program (lub
fragment programu) zapisany w języku GRAFCET moŜna podzielić na trzy części:
� przetwarzanie wstępne;
� przetwarzanie sekwencyjne;
� przetwarzanie końcowe.
Przetwarzanie wstępne umoŜliwia przetwarzanie wszystkich zdarzeń związanych z
zarządzaniem systemem w razie zaniku zasilania i podczas kolejnych inicjalizacji, oraz z
kasowaniem lub wstępnym zadawaniem parametrów diagramu GRAFCET.
Przetwarzanie sekwencyjne jest główną częścią sekcji GRAFCET i słuŜy do
przetwarzania struktury sekwencyjnej programu sterowania urządzeniem lub procesem
technologicznym. W czasie przetwarzania sekwencyjnego analizowane są warunki przejść i
warunki powodujące dezaktywację lub uaktywnienie kroków, w dalszej kolejności
aktualizowany jest stan diagramu GRAFCET zgodnie z aktualnie spełnionymi warunkami, a
następnie wykonywane są akcje przyporządkowane aktywnym krokom.
Przetwarzanie końcowe obejmuje wykonanie akcji związanych bezpośrednio z
aktualizacją stanów wyjść sterownika przypisanych do akcji dla poszczególnych kroków,
aktualizację stanów wyjść nie związanych z przetwarzaniem sekwencyjnym programu oraz
monitorowanie wykonywania diagramu GRAFCET poprzez kontrolę czasu aktywności
wybranych kroków. W przetwarzaniu końcowym, podczas aktualizowania stanów wyjść,
uwzględniane są równieŜ wszystkie zaprogramowane zabezpieczenia.
Ireneusz Mosoń Sterowniki programowalne
- 30 -
2.4. Przykład wykorzystania języka GRAFCET
Jako przykład rozpatrywane jest sterowanie fragmentem linii technologicznej z prasą
hydrauliczną [34] przedstawioną na rysunku 2.5. NaleŜy skonstruować diagram GRAFCET
opisujący działanie prasy hydraulicznej w trybie pracy automatycznej linii technologicznej.
S
G
Rys.2.5. Fragment linii technologicznej z prasą hydrauliczną
Prasa jest otwarta, gdy jest sygnał z czujnika indukcyjnego G , tj. gdy ruchoma płyta prasy
jest w górnym połoŜeniu. Sygnał z czujnika indukcyjnego S określa pośrednie połoŜenie
górnej płyty prasy. Wartość ciśnienia jest odczytywana z analogowego czujnika ciśnienia z
przetwornikiem pomiarowym. Pozostałe (nieistotne z punktu widzenia tworzonego diagramu)
czujniki pomiarowe linii zostały pominięte.
Skonstruowany diagram GRAFCET przedstawiono na rysunku 2.6. Warunkiem
wykonania cyklu prasowania w trybie pracy automatycznej jest górne połoŜenie prasy
(czujnik G), obecność płyty do prasowania i brak awarii linii. Cykl prasowania przedstawia
się następująco: prasa otwarta (krok początkowy) - szybkie zamykanie prasy (do sygnału z
czujnika S) - wolne zamykanie i spręŜanie (do osiągnięcia ciśnienia prasowania P) -
prasowanie (T1 - zadany czas prasowania) - dekompresja (T2 - zadany czas dekompresji) -
wolne podnoszenie prasy (do sygnału z czujnika S) - szybkie podnoszenie (do sygnału z
czujnika G) - prasa otwarta (oczekiwanie na wyładunek sprasowanej i załadunek nowej
płyty). Jest to więc prosty diagram GRAFCET dla sterowanego urządzenia uwzględniający
tylko normalne (poprawne) stany pracy prasy.
Rozpatrywany jest tylko proces prasowania. Nie rozpatruje się procesu załadunku
elementów (płyt) do prasowania i procesu rozładunku elementów sprasowanych.
Ireneusz Mosoń Sterowniki programowalne
- 31 -
(G•Z•A) - prasa w górnym połoŜeniu, załadowana płyta do prasowania i brak awarii S - czujnik spowolnienia ruchu prasy P - osiągnięto ciśnienie prasowania T1 - upłynął czas prasowania T2 - upłynął czas dekompresji G - czujnik górnego połoŜenia prasy
7 - szybkie otwieranie
6 - wolne otwieranie
5 - dekompresja
4 - prasowanie
2 - szybkie zamykanie
1 - prasa otwarta
3 - wolne zamykanie i spręŜanie
7
6
5
4
3
2
1
T2
T1
G
S
P
G•Z•A
S
Rys.2.6. Diagram GRAFCET cyklu prasowania w trybie pracy automatycznej
Do przedstawienia procesu rozładunku / załadunku musiałby być stworzony oddzielny
diagram GRAFCET. Załadunek i rozładunek mogą odbywać się równocześnie lub teŜ
kolejno: rozładunek – załadunek. Z punktu widzenia wydajności linii najbardziej poŜądany
jest równoczesny rozładunek i załadunek elementów. W przypadku, gdy odbyło się
prasowanie i brak jest, lub nie jest gotowy do załadunku nowy element do prasowania,
odbędzie się tylko rozładunek bez załadunku. Następnie, gdy jest juŜ gotowy element do
prasowania, a przenośnik w prasie jest pusty, odbywa się tylko załadunek. Przy
opracowywaniu diagramu naleŜałoby pamiętać o konieczności dokonywania rozładunku i
załadunku przy takich samych prędkościach (ustalonych) przenośników przed prasą, w prasie
i za prasą, oraz o załączaniu przenośnika przed prasą z opóźnieniem w stosunku do
przenośnika w prasie. Opóźnienie to wynika z konieczności centrycznego załadunku elementu
Ireneusz Mosoń Sterowniki programowalne
- 32 -
do prasowania pod płytę prasy, i jest określane na podstawie róŜnicy w długościach
przenośników w prasie i przed prasą.
Sygnałami dzięki którym procesy prasowania i załadunku / rozładunku są realizowane
naprzemiennie są: sygnał Z – obecności załadowanego elementu do prasowania w diagramie
GRAFCET opisującym prasowanie i analogiczny sygnał (element sprasowany), który byłby
w warunku przejścia po kroku początkowym w diagramie GRAFCET opisującym załadunek /
rozładunek. Dzięki tym sygnałom moŜliwe byłoby połączenie tych dwóch diagramów w
jeden diagram GRAFCET dla procesu z dwoma krokami początkowymi: dla prasy i dla
przenośników.
W diagramie przedstawionym na rysunku 2.6 nie pokazano działań (operacji)
powiązanych z krokami. NaleŜy jednakŜe mieć zawsze na uwadze, Ŝe z kaŜdym krokiem – za
wyjątkiem kroku początkowego, który odpowiada stanowi spoczynkowemu – są powiązane
określone działania. Dla przedstawionego przykładu będą to odpowiednie sekwencje załączeń
elektrozaworów w układzie hydraulicznym, dzięki którym realizowany jest cykl pracy prasy.
Przykładowe sekwencje załączeń elektrozaworów dla prasy hydraulicznej z czterema
wejścia analogowe (rozdzielczość przetwornika A/C 10 bitów) i 1 wyjście analogowe
(rozdzielczość przetwornika C/A 12 bitów).
Wejścia binarne sterownika są adresowane od %I0.0.0.0.0 do %I0.0.0.0.7 (lub od
2 W adresacji moŜliwe są równieŜ i wyŜsze numery linii komunikacyjnej (2 i 3) jeśli w systemie sterowania wykorzystuje się moduły komunikacyjne LE4. 3 Numeracja 0 i 1 odnosi się do modułów z 16 wejściami lub wyjściami binarnymi. W ogólnym przypadku numery w numeracji mogą być takŜe wyŜsze np. dla modułów z wejściami i/lub wyjściami analogowymi, lub teŜ przy adresacji pamięci.
Ireneusz Mosoń Sterowniki programowalne
- 60 -
%IP0.0.0.0.0 do %IP0.0.0.0.7), a takŜe mogą być adresowane jako bajt wejściowy, czyli
%IB0.0.0.0 (lub %IPB0.0.0.0).
Analogicznie wyjścia binarne sterownika są adresowane od %Q0.0.0.0.0 do %I0.0.0.0.5 (lub
od %QP0.0.0.0.0 do %QP0.0.0.0.5), a takŜe mogą być adresowane jako bajt wyjściowy, czyli
%QB0.0.0.0 (lub %QPB0.0.0.0).
Adresacja wejść i wyjść analogowych jest następująca: