PLC - język tekstu strukturalnego ST Język tekstu strukturalnego ST jest odpowiednikiem języka wysokiego poziomu, zawiera podobny zestaw instrukcji jak Pascal czy C. Podstawowymi elementami języka są wyrażenia i instrukcje. Wyrażenie zwraca wartość określonego typu, wartość ta wyznaczana jest na podstawie występujących w tym wyrażeniu wartości, zmiennych, operatorów oraz funkcji. Instrukcja to wyrażenie języka określające wybraną operację (czynność). W językach typu Asembler każda instrukcja odpowiada jednemu rozkazowi procesora, w językach wysokiego poziomu instrukcja tłumaczona jest na kilka rozkazów. Każda instrukcja w ST musi być zakończona średnikiem ;. Wybrane operatory ST AND lub & OR NOT Opis iloczyn logiczny; A & B lub A AND B zwraca wartość prawda jeżeli zmienne A i B są prawdziwe suma logiczna; A OR B zwraca wartość prawda jeżeli jedna ze zmiennych A lub B jest prawdziwa negacja logiczna; NOT A zwraca wartość prawda jeżeli zmienna A jest fałszywa Wybrane instrukcje ST Opis instrukcja przypisania Składnia: zmienna := wyrażenie; Instrukcja zastępuje aktualną wartość wybranej zmiennej nową wartością wyznaczoną w trakcie interpretacji wyrażenia, np.: Z := (B & C) OR (NOT A); przypisuje zmiennej Z wartość wynikającą z wartości wyrażenia logicznego BC + Ā (nawiasy w powyższej instrukcji są zbędne) Rys. Wybrane operatory i instrukcje języka ST. " Sterowniki programowalne f.2/1
PLC języki sekwencyjnych schematów funkcjonalnych historia Dyskretne procesy produkcyjne są złożonymi układami, których sterowanie przebiega w sposób sekwencyjny. Klasyczne metody projektowania układów sekwencyjnych (np. metoda Huffmana) są niewystarczające do projektowania algorytmów sterowania dla tak złożonych procesów. Języki sekwencyjnych schematów funkcjonalnych Ograniczenia metod klasycznych przyczyniły się do poszukiwania nowych metod opisu układów sekwencyjnych. Alternatywne podejście do modelowania wprowadziła metoda Grafcet. Grafcet metoda opisana w 1977 przez firmę Telemecanique, metoda ta oparta jest na teorii sieci Petriego typu P/T (pozycja/tranzycja). GRAPH 5, GRAPH 7, Grafpol, SFC metody będące modyfikacjami Grafcet, metoda SFC została opisana w normie IEC 61131-3. Metody Grafcet, GRAPH 5, GRAPH 7, Grafpol, SFC stanowią podstawę języków programowania sterowników PLC. Języki te nazywane są językami sekwencyjnych schematów funkcjonalnych lub językami sterowania sekwencyjnego. Języki sterowania sekwencyjnego są językami graficznymi. Zadania sterowania przedstawiane są w postaci sieci (grafu) składającej się z kroków (etapów) i tranzycji (przejść) między tymi krokami. " Sterowniki programowalne f.2/2
Sieć języka SFC to graf skierowanymi, który może mieć wierzchołki dwóch różnych typów: kroki, tranzycje. Kroki reprezentują elementarne etapy sterowanego procesu; graficznie krok prezentowany jest w postaci prostokąta, którego unikalna nazwa wpisywana jest w jego wnętrzu; Krok początkowy jest specjalnie wyróżnionym krokiem, sterownik PLC rozpoczyna wykonywanie programu zapisanego w SFC od kroku początkowego, program w SFC powinien zawierać co najmniej jeden krok tego typu; krok początkowy graficznie prezentowany jest w postaci prostokąta z podwójną ramką. Kroki mogą być aktywne lub nieaktywne. Krok jest aktywny od chwili rozpoczęcia jego wykonywania do chwili w której zostanie rozpoczęte wykonywanie kroku następnego. W programie SFC dostępne są następujące zmienne związane z każdym z jego kroków: zmienna ***.x jest zmienną boolowską określającą aktywność kroku, zmienna ***.t jest zmienną typu TIME określająca czas aktywności kroku, gdzie *** jest nazwą kroku. a) b) *** *** Rys. 1. Symbol a) kroku początkowego, b) kroku (*** jest nazwą kroku). " Sterowniki programowalne f.2/3
Tranzycje (przejścia) powiązane są z warunkami logicznymi, warunki te nazywane są warunkami przejść; Spełnienie warunku przejścia kończy wykonywanie kroku lub kroków bezpośrednio poprzedzających tranzycję i rozpoczyna wykonywanie kroku lub kroków bezpośrednio następujących po tranzycji. Dopuszczalne jest stosowanie tranzycji bez zdefiniowanych warunków przejścia, tranzycje takie są zawsze spełnione. Warunki przejścia mogą być zapisane w pozostałych języka definiowanych przez normę: ST, LD, FBD, IL. Graficznie tranzycja rysowana jest jako poziomy odcinek przecinający połączenie kroków (połączenia rysowane są liniami pionowymi). Bezpośrednio obok symbolu może być zapisywana jej nazwa lub warunki przejścia. a) b) c) W2 %I2 & %I3 %I2 %I3 Rys. 2. Symbol tranzycji pomiędzy krokiem a krokiem a) z umieszczoną obok nazwą W2, b) i c) ze zdefiniowanym w języku ST i LD warunkiem przejścia (jeżeli aktywny jest krok to krok zostanie aktywowany jeśli na drugim i trzecim wejściu cyfrowym pojawi się sygnał 1, krok straci wtedy aktywność). " Sterowniki programowalne f.2/4
Z krokiem może być skojarzone tzw. akcje. Akcje to operacje wykonywane w czasie aktywności kroku, operacje te mogą np. przypisywać odpowiednie wartości zmiennym wyjściowym. Dopuszczalne jest stosowanie kroków nie połączonych z akcjami. Kroki tego typu oczekują na spełnienie warunku przejścia do kolejnego kroku. Akcjami mogą być ciągi instrukcji napisane w każdym z języków normy. W językach tekstowych akcja definiowana jest w postaci: nazwa akcji kwalifikator akcji ACTION nazwa (kwalifikator) instrukcje ciąg instrukcji w wybranym języku END_ACTION Wybrane kwalifikatory Opis brak lub N P S R akcja nieprzechowywana, (normalna), instrukcje akcji wykonywane są przez cały czas aktywności kroku w każdym cyklu programowym sterownika akcja impulsowa, instrukcje akcji wykonywane są tylko raz gdy krok zyskuje aktywność akcja zapamiętywana, akcja jest uruchamiana gdy krok zyskuje aktywność, utrata aktywności nie przerywa akcji akcja musi być kasowana w innym kroku akcja nadrzędnie kasowana, akcja uruchomiona w innym kroku jest kasowana Rys. 3. Deklaracja akcji w języku tekstowym i wybrane kwalifikatory akcji. " Sterowniki programowalne f.2/5
Akcją może być również zmienna boolowska. W zależności od użytej składni zmiennej mogą być przypisywane różne wartości albo w czasie aktywności kroku albo aż do następnej zmiany wartości. Składnia Opis zmienna(n) w skrócie: zmienna, zmienna otrzymuje wartość prawda na czas aktywności kroku /zmienna zmienna(s) zmienna otrzymuje wartość fałsz na czas aktywności kroku zmiennej przypisywana jest wartość prawda po uaktywnieniu kroku, zmienna zapamiętuje tą wartość nawet po utracie aktywności kroku zmienna(r) podobnie jak wyżej, tylko zmiennej przypisywana jest wartość fałsz aktywność kroku akcja (N) aktywność kroku zmienna(n) akcja (P) akcja (S) akcja (R) /zmienna zmienna(s) zmienna(r) Rys. 4. Deklaracja akcji w języku tekstowym i wybrane kwalifikatory akcji. " Sterowniki programowalne f.2/6
Struktura grafu języka SFC: graf jest grafem skierowanym, wierzchołki grafu tzn. kroki i tranzycje połączone są krawędziami skierowanymi wskazującymi kierunek aktywowania kolejnych kroków, pomiędzy dwoma kolejnymi krokami w grafie musi znajdować się dokładnie jedna tranzycja, pomiędzy dwoma kolejnymi tranzycjami musi znajdować się dokładnie jeden krok, graf musi zawierać krok początkowy, domyślnym kierunkiem zmiany aktywności kroków jest kierunek z góry do dołu, na gałęziach grafu prowadzących z kroków położonych niżej do kroków położonych wyżej można umieszczać groty wskazujące kierunek połączeń. Po uruchomieniu programu aktywowany jest krok, /Z; zmienna Z na czas aktywności tego kroku przyjmuje wartość fałsz. akcja skojarzona z krokiem Jeżeli warunek przejścia A (B+C) uzyska wartość prawda krok straci aktywność na rzecz kroku, zmienna Z A & (B+C) otrzyma wartość prawda. Aktywacja kroku spowoduje uruchomienie akcji nadającej Z; akcja skojarzona z krokiem zmiennej Z na czas aktywności tego kroku przyjmuje wartość prawda. Akcja Z nie musi być dołączona do kroku NOT A + (NOT B & NOT C) zmienna Z otrzymała już właściwą wartość. Rys. 5. Przykładowy program w SFC, akcje i warunki przejścia zostały zapisane w ST. Po spełnieniu warunku A B C krok traci aktywność i ponownie aktywowany jest krok " Sterowniki programowalne f.2/7
Tranzycja może być bezpośrednio poprzedzona jednym lub kilkoma krokami, podobnie bezpośrednio za tranzycją może znajdować się jeden lub kilka kroków. Struktury z kilkoma krokami zostały wprowadzone, żeby np. umożliwić kierowanie aktywności do jednej z alternatywnych gałęzi grafu czy realizację kilku kroków jednocześnie. Realizacja wyboru rozbieżność Jeżeli po wykonaniu określonego kroku zachodzi potrzeba realizacji jednej z kilku możliwych sekwencji kroków to po symbolu kroku należy na grafie narysować pojedynczą linię poziomą a pod nią zestaw tranzycji odpowiadających możliwym wyborom. Sprawdzanie warunków przejścia jest przeprowadzane: od lewej strony (najpierw sprawdzana jest prawdziwość warunku pierwszego od lewej, jeżeli warunek jest fałszywy, sprawdzany jest kolejny itd.), albo na podstawie liczbowego priorytetu przypisanego przez użytkownika gałęziom (najpierw sprawdzana jest prawdziwość warunku gałęzi o najniższym numerze, jeżeli warunek jest fałszywy, sprawdzany jest warunek gałęzi o kolejnym numerze itd..). W21 ilość gałęzi alternatywnych może być dowolna W22 W23 Jeżeli aktywny jest krok i spełniony jest warunek przejścia: W21 to uaktywniany jest krok, W22 to uaktywniany jest krok, W23 to uaktywniany jest krok. Rys. 6. Realizacja wyboru gałęzi grafu rozbieżność. " Sterowniki programowalne f.2/8
Realizacja wyboru zbieżność Alternatywne gałęzie grafu można używając symbolu połączenia (tzw. symbol zbieżności) kroków alternatywnych połączyć w jeden ciąg kroków. a) b) W1 W1 W3 W4 W5 W21 W22 W21 W22 K6 W3 W4 W3 W4 Rys. 7. Realizacja wyboru gałęzi grafu zbieżność. Krok K6 jest uaktywniany gdy: aktywny jest krok i spełniony jest warunek W3, aktywny jest krok i spełniony jest warunek W4, aktywny jest krok i spełniony jest warunek W5. W5 W5 Rys. 8. Przykładowe programy wykorzystujące rozbieżność a) program ze zrealizowaną zbieżnością, b) program bez łączenia gałęzi alternatywnych. " Sterowniki programowalne f.2/9
Realizacja współbieżności rozbieżność Jeżeli po wykonaniu określonego kroku zachodzi potrzeba jednoczesnej realizacji kilku sekwencji kroków to po symbolu tranzycji związanej z tym krokiem należy na grafie narysować podwójną linię poziomą a pod nią zestaw odpowiednich kroków. ilość gałęzi równoległych może być dowolna Realizacja współbieżności zbieżność Równoległe gałęzie grafu można używając symbolu połączenia (tzw. symbol zbieżności) kroków równoległych połączyć w jeden ciąg kroków. Połączenie takie sprowadza się do synchronizacji operacji wykonywanych w krokach współbieżnych, tzn. krok wykonywany krócej pozostaje aktywny do czasu zakończenia operacji wykonywanych przez krok dłuższy. W2 Rys. 9. Realizacja współbieżności rozbieżność. Jeżeli aktywny jest krok i spełniony jest warunek przejścia W2 jednocześnie uaktywniane są kroki, i. Po aktywacji kroków, i przetwarzanie dalszych kroków w gałęziach równoległych odbywa się niezależnie. K6 W3 ilość gałęzi równoległych może być dowolna Rys. 10. Realizacja współbieżności zbieżność. Krok K6 jest uaktywniany gdy aktywne są kroki,, i spełniony jest warunek W3. " Sterowniki programowalne f.2/10
Pomijanie realizacji sekwencji kroków Jeżeli po wykonaniu określonego kroku, przy spełnieniu określonych warunków, zachodzi potrzeba pominięcia sekwencji kroków to kroki te można pominąć wykorzystując pustą gałąź alternatywną. W11 W12 Skok do kroku Symbol skoku (w postaci strzałki) jest wykorzystywany dla zwiększenia czytelności grafu, zastępuje linię łączącą.dwa odległe od siebie kroki. 0 W10 jeżeli aktywny jest krok 0 i spełniony warunek W10 to uaktywniany jest krok W2 W3 Kroki i są pomijane gdy aktywny jest krok i spełniony jest warunek W12. Rys. 12. Przykładowy skok do kroku. W1 W1 W5 Rys. 11. Przykładowy program z pomijaniem sekwencji kroków. W2 W2 Rys. 13. Program w wersji bez i ze skokiem. " Sterowniki programowalne f.2/11
Język SFC przykład 1. Program steruje pracą lampy. Jeśli lampa nie świeci, wciśnięcie przycisku P powoduje jej zaświecenie, jeśli lampa świeci, wciśnięcie przycisku powoduje jej zgaszenie. Zwolnienie przycisku nie powoduje zmian stanu lampy. 0 1 1 1 2 0 4 0 1 Rys. 14. Graf przejść układu. Wewnętrzne stany stabilne układu: 1 lampa nie świeci, przycisk P zwolniony, 2 lampa świeci, przycisk P wciśnięty, 3 lampa świeci, przycisk P zwolniony, 4 lampa nie świeci, przycisk P wciśnięty. 3 1 0 P NOT P P /Y; Y; Y; /Y; NOT P NOT P Rys. 15. Dwie wersje programu w SFC (akcje i warunki przejścia zapisane w ST), Wersje różnią się sposobem zapisu akcji w krokach i patrz slajd 4. P P Y(R); Y(S); Y(R); NOT P " Sterowniki programowalne f.2/12
Język SFC przykład 2. Program steruje pracą zaworów Z 1 i Z 2 przy pomocy których napełniany jest zbiornik. Poziom wody w zbiorniku jest kontrolowany przez czujniki A i B. Jeżeli jest niski poziom wody (a = 0, b = 0) obydwa zawory są otwarte (Z 1 = 1, Z 2 = 1), jeżeli poziom wody jest wysoki (a = 1, b = 1) obydwa zawory są zamknięte (Z 1 = 0, Z 2 = 0), jeżeli poziom wody jest średni (a = 1, b = 0) otwierany jest zawór, który poprzednio był zamknięty. 10 10 3 00 Z1;Z2; 10 11 11 00 00 11 1 5 6 2 11 10 00 4 10 01 Rys. 16. Graf przejść układu. Wewnętrzne stany stabilne układu: 1 poziom niski, zawory otwarte, poprzednio otwarty Z 2, 2 poziom niski, zawory otwarte, poprzednio otwarty Z 1, 3 poziom średni, otwarty zawór Z 1, 4 poziom średni, otwarty zawór Z 2, 5 poziom wysoki, zawory zamknięte, poprzednio otwarty Z 2, 6 poziom wysoki, zawory zamknięte, poprzednio otwarty Z 1. " Sterowniki programowalne f.2/13 a & NOT b Z1;/Z2; NOT a & NOT b Z1;Z2; a & NOT b /Z1;Z2; NOT a & NOT b Rys. 17. Przykładowy program. K6 a & b /Z1;/Z2; a & NOT b a & b /Z1;/Z2; a & NOT b
Język SFC przykład 3. Program steruje umożliwia sterowanie pracą urządzenia dwoma przyciskami: Z (załącz) i W (wyłącz). Naciśnięcie przycisku Z załącza urządzenie, urządzenie pracuje również po zwolnieniu tego przycisku. Naciśnięcie przycisku W wyłącza urządzenie. Urządzenie nie pracuje gdy wciśnięte są obydwa przyciski. Dodatkowo, nie jest możliwa jednoczesna zmiana stanu obydwu przycisków. X=(Z,W) A 00 01 11 10 Y 1 2 5 0 2 1 3 0 3 4 5 1 4 1 3 1 /Y; NOT Z & NOT W /Y; NOT Z & W Z & NOT W Z & W /Y; Z & NOT W NOT Z & W 5 1 3 0 Wewnętrzne stany stabilne układu: 1 Z=0, W=1, urz. wył. (Y=0), 2 Z=0, W=0, urz. wył. (Y=0), 3 Z=1, W=0, urz. wł. (Y=1), 4 Z=0, W=0, urz. wł. (Y=1), 5 Z=1, W=1, urz. wył. (Y=0). Rys. 18. Pierwotna tablica programu i przykładowy program. Y; NOT Z & NOT W Y; Z & NOT W Z & W NOT Z & W " Sterowniki programowalne f.2/14
Język SFC przykład 3. Otrzymana w wyniku łączenia odpowiadających sobie wierszy pierwotnej tablicy programu tzw. zredukowana tablica programu pozwala na napisanie prostszego programu. X=(Z,W) A 00 01 11 10 Y 1 2 5 0 2 1 3 0 3 4 5 1 4 1 3 1 5 1 3 0 X=(Z,W) A 00 01 11 10 Y 1,2,5 3 0 3,4 1 5 1 stany 1, 2, 5 oznaczone zostały symbolem I, stany 3, 4 symbolem II. X=(Z,W) A 00 01 11 10 Y I I I I II 0 II II I I II 1 KI Z & NOT W W /Y; KII Y; Rys. 19. Pierwotna i zredukowana tablica programu oraz przykładowy program. " Sterowniki programowalne f.2/15
Język SFC przykład 4. Program steruje procesem załadunku kontrolując obroty silnika wózka (OP=1 obroty w prawo, OL=1 obroty w lewo) i położenie klapy zamykającej silos (Z=1 klapa otwarta, Z=0 klapa zamknięta). Proces załadunku powinien przebiegać zgodnie z następującym schematem: wózek na żądanie operatora po naciśnięciu przez niego przycisku START (START=1) podjeżdża do stanowiska załadunku (proces ten może rozpocząć się tylko wtedy gdy wózek znajduje się w pozycji początkowej zgłaszanej przez czujnik A, (A=1)), załadunek rozpoczyna się automatycznie po osiągnięciu przez wózek stanowiska załadunku (zgłaszane przez czujnik B, (B=1)), po załadowaniu właściwej ilości materiału (kontrolowane czujnikiem W (W=1)) załadunek jest przerywany a wózek powraca do pozycji początkowej i tam oczekuje na rozładunek. START & A OP; B Z; W A Z B OL; W A Rys. 20. Schemat ideowy procesu załadunku oraz przykładowy program. " Sterowniki programowalne f.2/16
Język SFC przykład 5. Program steruje pracą czterech zaworów Z1, Z2, Z3 i Z4 (Z i =1 zawór otwarty i Z i =0 zawór zamknięty) umożliwiając cykliczne napełnianie i opróżnianie dwóch zbiorników. Zbiornik pierwszy jest napełniany przy pomocy zaworu Z1 a opróżniany przy pomocy zaworu Z2. Zbiornik drugi jest napełniany przez zawór Z3 a opróżniany przez zawór Z4. W stanie początkowym obydwa zbiorniki są puste a wszystkie zawory są zamknięte. Proces powinien przebiegać zgodnie z następującym schematem: napełnianie zbiorników rozpoczyna się równocześnie po naciśnięciu przez operatora przycisku START (START=1). napełnianie zbiornika jest przerywane z chwilą jego całkowitego wypełnienia (wypełnienie zbiorników sygnalizują czujniki A1 i A2 (A1=1, A2=1), wypełniony zbiornik jest automatycznie opróżniany, po całkowitym opróżnieniu zbiorników (sygnalizowane przez czujniki B1 i B2 (B1=0, B2=0)) zawory odpływu są zamykane a ponowne napełnianie może być rozpoczęte po jeżeli przycisk START jest włączony. A1 B1 Z1 Z2 A2 B2 Z4 Z3 START A1 Z1; Z2; A2 NOT B1 & NOT B2 Rys. 21. Schemat ideowy procesu oraz przykładowy program. Z3; Z4; " Sterowniki programowalne f.2/17