2. Algorytmy dla opisu działania sekwencyjnych procesów przemysłowych

2.2. Algorytm procesu GRAFCET w opisie sekwencyjności procesów przemysłowych

[Algorytm GRAFCET – sposób przedstawienia i analizy automatyzacji szczególnie przydatny do opisu procesów z podziałem na etapy. Algorytm ten oparty jest na modelu matematycznym sieci Petriego]. 

Jak widać z powyższej definicji cechą algorytmu GRAFCET w opisie działania procesu przemysłowego realizowanego sekwencyjnie jest przedstawianie tegoż procesu z podziałem na etapy (kroki) i warunki przejścia (tranzycji). (Czytelnik na pewno zauważył analogię do sieci P-N). Ponieważ algorytm GRAFCET jest strukturą graficzną, to powyższe działanie ilustrowane było na planszy (obecnie na ekranie monitora) za pomocą odpowiednich symboli graficznych (jak to miało miejsce w sieciach Petriego). Dla pokazania w grafie etapów (kroków) zarezerwowano kwadraty/prostokąty (nie zaś okręgi), rozmieszczane na planszy pionowo, zaś dla warunków przejścia (tranzycji) zarezerwowano poziome krótkie linie (pogrubione), krzyżujące się z liniami łączącymi te kwadraty (prostokąty). Te podstawowe elementy algorytmu GRAFCET zilustrowano na rysunku 8.

Rysunek 8: Elementy algorytmu GRAFCET: a) krok zerowy; b) tranzycja złożona 

Jak widać z rysunku 8 każdy krok algorytmu GRAFCET opisany jest jego numerem porządkowym, który umieszczany jest wewnątrz płaskiej figury, zaś każda tranzycja jest (zazwyczaj) poprzedzona literą „T” i również ponumerowana porządkowo. Dobrą praktyką jest takie numerowanie tranzycji, aby indeks przy literze „T” był taki sam, jak krok, który zostanie zainicjowany po zapaleniu tej tranzycji. (Na rysunku 8 b) zapalenie tranzycji „Tn+1” łącznie z istnieniem kroku „n” przyczyni się do uruchomienia kroku „n+1”). Dodatkowego wyjaśnienia wymaga symbol kroku o numerze „0” na rysunku 8a), dla którego zarezerwowano takie oznaczenie. Otóż jest to tzw. krok zerowy, który musi wystąpić w tym algorytmie i jest zawsze traktowany jako pierwszy krok po inicjacji algorytmu GRAFCET. Krok zerowy w zależności od konstrukcji algorytmu GRAFCET wystąpi tylko raz lub przy innej postaci algorytmu po inicjacji tegoż będzie występował wielokrotnie już jako „normalny” krok algorytmu. Te opisane powyżej „sytuacje”, które będziemy od tej pory nazywali rozwojem algorytmu GRAFCET ilustruje rysunek 9.

Rysunek 9: Znaczenie kroku zerowego w algorytmie GRAFCET: a) i b) krok inicjujący; c) krok zerowy jak krok inicjujący i później normalny

Rysunek 9a) i 9b) pokazują, iż krok zerowy w algorytmie GRFACET wystąpi tylko raz, (przy inicjacji algorytmu), ponieważ w tych dwóch przypadkach rozwój algorytmu z kroku nr 2 do kroku nr 1 „omija” krok nr 0, czyli kroki te wykonywane są w sposób cykliczny bez udziału kroku zerowego. Inaczej sprawa wygląda na rysunku 9c). Tutaj po inicjacji algorytmu krokiem zerowym stanie się on w następnym cyklu normalnym krokiem, realizowanym cyklicznie po kroku nr 2. Algorytm „zapomni”, że krok zerowy kiedykolwiek istniał. Zaznaczmy jako obowiązkowe, że krok zerowy wystąpi we wszystkich przypadkach z rysunku 9 po wyłączeniu procesu (czyli algorytmu GRAFCET z działania) i ponownym jego uruchomieniu. 
Uważny Czytelnik na pewno zauważył analizując rysunek 9, iż w budowie grafu algorytmu GRAFCET obowiązują pewne prawidłowości, które warte zapamiętania wymieńmy poniżej:
1.    Algorytm może posiadać wyłącznie jeden krok zerowy.
2.    Krok zerowy algorytmu może tylko inicjować ten algorytm lub może inicjować i stać się zwykłym krokiem.
3.    Pomiędzy wszystkimi krokami algorytmu może istnieć tylko i wyłącznie pojedyncza tranzycja.
4.    Algorytm musi być zupełny, tzn. z ostatniego kroku algorytmu musi być wyprowadzony sygnał do zamierzonego kroku przy spełnieniu warunku nr 3.
5.    Rozwój algorytmu następuje od kroku poprzedniego do następnego, co pokazywane jest poprzez porządkową numerację kroków.  

Należy zaznaczyć, że zaprojektowanie kroków i tranzycji na nic by się zdało, gdyby twórcy algorytmu GRAFCET „zapomnieli” o działaniach, które algorytm powinien realizować w każdym kroku. (Dodajmy szybko, że są takie sytuacje, w których z niektórymi krokami nie są skojarzone żadne działania, ale to i tak naprawdę są działania, tyle tylko, że opisujemy je jako oczekiwanie, co też jest przecież działaniem o określonym czasie trwania). Dla ilustracji powyższego posłużmy się poniższym rysunkiem, ilustrującym dołączanie tzw. bloków działania do kroków programowych algorytmu GRAFCET, który został zaprojektowany dla przykładowego procesu przemysłowego realizowanego sekwencyjnie.

Rysunek 10: Ilustracja bloków działania dołączonych do kroków

W widocznych na rysunku 10 blokach działania, skojarzonych z poszczególnymi krokami umieszcza się działania, które powinny być wykonane w poszczególnym kroku. Dobrą praktyką jest, aby oddzielnych bloków działań było tyle, ile jest działań w poszczególnym kroku, nie zaś w jednym bloku działania było wpisywanych kilka działań. Jak pokazuje rysunek 10 liczba działań może być różna, począwszy od wspomnianego wcześniej przypadku braku działania w kroku, (nieuwidocznionego na rysunku - wtedy z danym krokiem nie kojarzy się żadnego bloku działań), liczba działań może określać tylko jedno działanie w pojedynczym kroku lub więcej działań (jak w kroku zerowym). 
Należy zaznaczyć, że o trybie (sposobie) funkcjonowania poszczególnego działania, opisanego w bloku działania pokazuje (decyduje) umieszczony w algorytmie sposób jego sterowania z użyciem odpowiedniej symboliki. I tak, brak znaku przy bloku działania określającego działanie „ZAŁĄCZ SYGNAŁ S2” w kroku zerowym oznacza, że załączenie sygnału S2 wystąpi tylko wtedy, gdy wystąpi ten krok zerowy. Dalej, znak „strzałki” skierowanej do dołu przy działaniu: „ZAŁĄCZ SYGNAŁ S1” oznacza, że załączenie sygnału S1 z tzw. podtrzymaniem nastąpi dopiero wtedy, gdy nastąpi rozwój algorytmu do kroku nr 1. Dalej, znak „strzałki” skierowanej ku górze przy działaniu: „ZAŁĄCZ ZAWÓR Z1” oznacza, że załączenie zaworu Z1 z tzw. podtrzymaniem nastąpi w momencie pojawienia się kroku nr 1. Dodajmy, że załączenie z tzw. podtrzymaniem określonego działania oznacza pamiętanie tego działania aż do momentu pojawienia się działania neutralizującego. W naszym przypadku jest to działanie w kroku nr 2: „WYŁĄCZ ZAWÓR Z1” o sterowaniu analogicznym jak w kroku nr 1. Pozostałe elementy algorytmu GRAFCET z rysunku 10 to tranzycje: pojedyncze, jak tranzycja „T1’: CZCIŚ = OFF” oraz złożone, utworzone przy użyciu instrukcji logicznych, jak tranzycja „T2: POZZ1 = ON & CZCIŚ = ON”. Drugą używaną instrukcją logiczną oprócz iloczynu („&”) w konstrukcji tranzycji złożonych jest instrukcja sumy logicznej, oznaczana najczęściej jako „or”. Zaznaczmy, że konstrukcja tranzycji złożonej nie ogranicza się tylko używania albo instrukcji logicznej iloczynu albo sumy, jak na rysunku 10. W zależności od potrzeb tranzycja złożona może składać się z dużej liczby sygnałów, które połączone są ze sobą odpowiednią liczbą instrukcji logicznych.  
Konstrukcja każdego grafu algorytmu GRAFCET pokazuje, że analizując taką strukturę i odnosząc ją do procesu przemysłowego, który przebiega sekwencyjnie możemy w prosty sposób prześledzić jego funkcjonowanie, ponieważ dla każdego pojedynczego etapu tego analizowanego procesu przyporządkowany jest pojedynczy krok algorytmu GRAFCET. Jeżeli teraz program PLC dla tego procesu przemysłowego odpowiada dokładnie zapisom algorytmu GRAFCET, to daje nam to możliwość natychmiastowego wychwycenia ewentualnej przyczyny zatrzymania realizacji procesu, jeżeli takowa wystąpi. Przykładowo po załączeniu zaworu Z1 w kroku nr 1 (naszego przykładowego algorytmu GRAFCET z rysunku 10) oraz braku wystąpienia sygnału S3, który przewidziany został do pokazania rozwoju algorytmu do kroku nr 2 (czyli wyłączenia zaworu Z1) wiadomym będzie, że przyczyną zatrzymania realizacji tego procesu przemysłowego jest brak zapalenia tranzycji T2. Tranzycja ta, jak widać z rysunku 10 zapala się przy spełnieniu łącznie (instrukcja logiczna iloczynu „&”) dwóch warunków: czujnika pozycji POZZ1 = ON oraz czujnika ciśnienia CZCIŚ = ON. Zatem w nieprawidłowym działaniu tychże czujników należy poszukiwać przyczyny zatrzymania procesu na kroku nr 1. 
Ogląd postaci algorytmu GRAFCET, którego zasady tworzenia jak już wspomnieliśmy powstały w latach 70-tych XX w. pokazuje, że tak naprawdę wszystkie działania oraz tranzycje dla tych działań opisane są w tym algorytmie w sposób ogólnikowy, umowny, symboliczny, itp.,. np. ZAŁĄCZ ZAWÓR Z1. Zaznaczmy, że na etapie powstawania zasad semantyki tego algorytmu technika PLC jako taka powszechnie jeszcze nie istniała, co przekładało się na brak odpowiednich norm w tym zakresie. (Międzynarodowa norma IEC 1131, która sankcjonowała m.in. budowę logiczną sterowników PLC, metody programowania oraz algorytm SFC, o którym powiemy później opublikowana została w 1993 roku). Algorytm GRAFCET powstał na bazie sieci P-N jako ich lepsze rozwinięcie i był proponowany do opisu działania zazwyczaj procesów sekwencyjnych, nie zaś do opisu działania układu sterowania. Działań algorytmu GRAFCET nie możemy powiązać de facto z konkretnymi sygnałami znajdującymi się w modułach wejść/wyjść sterownika PLC, który przecież, jak już pokazaliśmy wcześniej jest mózgiem układów sterowania procesami przemysłowymi. Zatem w literaturze spotyka się zastrzeżenie, iż algorytm GRAFCET jest tak naprawdę algorytmem procesu, nie zaś algorytmem sterowania. Dla tego ostatniego przewidziano nazwę SFC i znormalizowano w wyżej wzmiankowanej normie, w trzecim jej rozdziale, której „wariant” europejski nosi oznaczenie EN 61131 – 3. Zaznaczmy dla wyjaśnienia, że spotkać można w literaturze sugestię, iż algorytm GRAFCET jest w czystej postaci algorytmem SFC, co według autora jest nieprawidłowe (dowód tego znajdzie Czytelnik w dalszej części tekstu) i bierze się być może stąd, iż wyszukiwarki internetowe przy wpisaniu nazwy GRAFCET „podpowiadają” natychmiast nazwę Sequential Function Chart, czyli algorytm SFC.