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

2.3. Algorytm sterowania SFC w opisie sekwencyjności procesów przemysłowych

[Algorytm SFC – graficzny język programowania dla sterowników PLC. Jest jednym z pięciu języków normy EN 61131-3. Algorytm SFC jest rozwinięciem języka GRAFCET i opiera się na strukturze sieci Petriego.[Źródło: Wikipedia]]. 

Opublikowana w 1993 roku norma o oznaczeniu EN 61131 w swoim trzecim rozdziale oprócz zdefiniowania semantyki dwóch grup metod (języków) programowania sterowników PLC zawarła również semantykę algorytmu SFC, którego już wiemy, że zasady tworzenia opierają się na wcześniej opracowanym algorytmie GRAFCET, co oznacza, że i ten „nowy” algorytm został opracowany z zmyślą wykorzystania go do opisu procesów realizowanych sekwencyjnie. Być może dlatego, że semantyka SFC znalazła się w tej normie „obok” semantyki klasycznych metod tworzenia programu PLC, to zaczęto ten algorytm zaliczać do jednej z metod programowania sterowników PLC, jednak wtedy było to jeszcze na wyrost. Algorytm SFC stał się po prostu jednym z wielu sposobów ilustrowania opisu procesu przemysłowego w sposób graficzny, a że jak się okazało najbardziej obrazowym, to już inna sprawa. Wtedy na drodze do uznania algorytmu SFC jako metody programowania sterowników PLC stała bariera w postaci braku środowiska programistycznego, które na to by pozwalało.
Było tak, bowiem wtedy „rysowanie” struktury grafu SFC na ekranie monitora przypominało tylko eleganckie rozmieszczanie klocków i linii dla utworzenia algorytmu, nie zaś generację na podstawie takiej struktury kodu maszynowego dla pamięci programu CPU sterownika PLC. W momencie publikacji normy EN 61131 taki kod generowany był tylko w odniesieniu do metody STL, LAD i FBD. Jednak rozwój oprogramowania narzędziowego PLC doprowadził w efekcie do pojawienia się możliwości generacji takiego kodu ze struktury grafu SFC i dopiero wtedy można było zaliczyć tworzenie grafu SFC do metody programowania sterowników PLC. Przykładem takiego środowiska narzędziowego PLC jest oprogramowania ISAGraph dla sterowników amerykańskiego producenta firmy PEP Modular Computers.
Powód zakwalifikowania grafu SFC do metody tworzenia algorytmu sterowania dla procesów sekwencyjnych wynika bezpośrednio ze sposobu jego przedstawiania. Pokazuje to rysunek 11.  

Rysunek 11: Algorytm SFC jako odpowiednik rysunku 10

 Na rysunku 11 widzimy w odniesieniu do wszystkich tranzycji, że w miejsce nazw symbolicznych, które zawierała algorytm GRAFCET pojawiły się adresy, które wystąpią w programie sterującym PLC jako argumenty tego programu. Przykładowo adres I0.0 to przycisk START, adres I0.1 to przycisk STOP. (Tutaj należy się Czytelnikowi wyjaśnienie. Ponieważ jednym z warunków bezpiecznego sterowania procesem jest jego awaryjne wyłączanie za pomocą odpowiedniego przycisku, np. przycisku STOP, to jego sygnał jest zawsze „1” przy prawidłowo działającym procesie. Dlatego w tranzycji T1 ten warunek w takiej postaci wystąpił). 
Jeżeli chodzi o bloki działania to zauważamy dwie różnice. Pierwsza jest taka, że bloki działania „konstruowane” są pionowo nie zaś poziomo, jak w grafie GRAFCET. Po drugie oznaczenie typu instrukcji nie wystąpiło w postaci „strzałek” tylko tzw. identyfikatorów działania. Najczęściej używane identyfikatory zilustrowano na rysunku 11: 
•    „N” – wystąpienie tego identyfikatora oznacza, że określone tymże działanie wystąpi tylko i wyłącznie wtedy, gdy dany krok zaistnieje – działanie nie zapisane w pamięci programu CPU. Np. wyjście Q0.3 będzie sterowane tylko w czasie trwania kroku nr 3. Po rozwoju algorytmu do kolejnego kroku wyjście Q0.3 = 0.
•    „S” - wystąpienie tego identyfikatora oznacza, że określone tymże działanie wystąpi tylko wtedy, gdy dany krok zaistnieje i będzie trwało do czasu jego dezaktywacji innym rozkazem – działanie zapisane do pamięci programu CPU. Np. wyjście Q0.2 będzie równe 1 wtedy, gdy wystąpi krok nr 1 i stan taki będzie się dalej utrzymywał.
•    „R” - wystąpienie tego identyfikatora oznacza, że określone tymże działanie wystąpi tylko wtedy, gdy dany krok zaistnieje i dezaktywuje ono działanie rozkazem „S” – działanie zapisane do pamięci programu CPU. Np. wyjście Q0.2 będzie równe 0 wtedy, gdy wystąpi krok nr 2 i stan taki będzie się dalej utrzymywał.
Należy podkreślić, że włączenie metody SFC do jednej z metod programowania sterowników PLC oznaczało, że środowiska narzędziowe sterowników PLC zaczęto wyposażać w możliwości testowania algorytmu SFC analogicznie, jak to odbywało się w innych metodach tworzenia programu PLC (przywołajmy chociażby rysunek 2 tylko „na kolorowo”). Nawiasem mówiąc konieczność testowania algorytmu SFC wprowadzono już w normie EN 61131-3 poprzez sugestię, iż aktywny krok algorytmu SFC powinien być w jakiś sposób pokazany. Zaproponowano wtedy umieszczanie „kropki” w czworokącie zainicjowanego kroku algorytmu. Jednak rozwój informatyki w przemyśle spowodował, że twórcy środowisk programistycznych dla sterowników PLC mogli „pójść” dalej z „propozycją” testowania aktywnego algorytmu SFC, co w efekcie zaowocowało dużym urozmaiceniem w prezentacji działania tego algorytmu w sterowniku PLC, na którym ten algorytm został uruchomiony. (Czytelnik już wie, że nie algorytm został uruchomiony w sterowniku PLC tylko program PLC, który został wygenerowany na podstawie tego algorytmu). Pojawiło się zatem np. wyświetlanie w odmiennym kolorze nie tylko aktywnego kroku, ale również i aktywnych bloków działania w tym kroku. Ilustruje to symbolicznie rysunek 12.  

Rysunek 12: Przykładowy sposób testowania algorytmu SFC

Na rysunku 12 widzimy, że kontrolowany proces znajduje się w kroku nr 1 (podświetlenie na niebiesko) oraz występuje działanie w tym kroku, czyli S Q0.2, które musiało zostać poprzedzone zapaleniem tranzycji T1. Ponieważ jednym z warunków w tej tranzycji jest przycisk START, ale pobudzony monostabilnie, to stan jego teraz równa się zero, co pokazuje kolor czerwony. Drugim warunkiem był przycisk STOP, który jak już wyjaśniono powinien być na stałe „podpięty” ze stanem jeden do modułu sterownika PLC, co uwidocznione jest jego aktywnością, czyli kolorem niebieskim. Podświetlenie na czerwono warunków w tranzycji T2 być może jest prawidłowe, ponieważ otworzony zawór Z1 mógł jeszcze nie zając pozycji określonej czujnikiem pozycji POZZ1, co również pokazuje czujnik ciśnienia CZCIŚ. (W rzeczywistym i prawidłowo działającym procesie przemysłowym ten kolor czerwony powinien „po chwili” zmienić się na niebieski, jak również stany czujników na „jedynki”. Dalej, podświetlenie na niebiesko tranzycji T1’ przy danym stanie czujnika ciśnienia CZCIŚ = OFF też jest prawidłowe, ponieważ brak pobudzenia przez ciśnienie tego czujnika daje dla modułu PLC stan wysoki.
Ogląd rysunku 12 pokazuje, w jaki sposób może przebiegać testowanie działającego procesu przemysłowego realizowanego sekwencyjnie „pod kontrolą” algorytmu SFC. Czytelnik sam potrafi rozsądzić i ocenić, czy to wyświetlenie byłoby dla niego bardziej użyteczne w ocenie działania układu sterowania czy np. wyświetlenie na ekranie monitora programu PLC w metodzie LAD. Jest to sprawa indywidualna, jednak należy podkreślić, że zarówno przy testowaniu działającego programu PLC wyświetlonego w jednej z metod programowania sterowników lub w grafie SFC występują pewne ograniczenia. Mianowicie zazwyczaj użyteczność takiej diagnostyki będzie największa przy zatrzymaniu się procesu na danym kroku lub danej sieci programowej. Jest tak, ponieważ nawet gdyby założyć, że częstotliwość wyświetlania takiej diagnostyki na ekranie monitora nadążałaby za krokami algorytmu sterowania, tzn. krok, w którym jest aktualnie rzeczywisty proces przemysłowym jest aktywny na ekranie monitora, to i tak taka szybkość zmian nie byłaby zauważona przez ludzkie oko, obserwujące te zmiany. Natomiast przy zatrzymaniu procesu na danym etapie (czyli kroku) jest on statycznie podświetlony na ekranie monitora,  zaś decyzję, co dalej robić mogą być podjęte. Czyli np., odnosząc to do rysunku 12, jeżeli po zaistnieniu kroku nr 1, który uruchamia zawór Z1 (patrz rysunek 10 oraz opis) odpowiednia pozycja zaworu została osiągnięta, zaś ciśnienie czynnika roboczego nie pojawiło się, to zostanie to pokazane w tranzycji T2 jak na rysunku poniżej.   

Rysunek 13: „Nieplanowe” zatrzymanie algorytmu SFC

Widać na rysunku 13, że w tranzycji T2 adres I0.3, czyli de facto sygnał z czujnika ciśnienia CZCIŚ podświetlony jest na czerwono co oznacza, że w kontrolowanym procesie przemysłowym po uruchomieniu zaworu Z1, który zajął prawidłową pozycję (I0.2 = 1 w tranzycji T2) nie osiągnięto założonego ciśnienia czynnik, co wskazuje na awarię, której przyczyny należy określić. Jak widać z rysunku 13 algorytm SFC „zatrzymał” się na kroku nr 1, nie zaś rozwinął się do kroku nr 2. 
Zilustrowana wyżej sytuacja awaryjna może być jedną z wielu, które mogą wystąpić w kontrolowanym procesie przemysłowym. Tworząc algorytm SFC dla układu sterowania powinno się przewidzieć wystąpienie najważniejszych sytuacji awaryjnych i przewidzieć rozwój algorytmu SFC po ich wystąpieniu. Norma EN 61131 przewiduje, tak jak algorytm GRAFCET odpowiednie modyfikacje algorytmu SFC dla potrzeb algorytmów sterowania. W odniesieniu do sytuacji awaryjnej zilustrowanej na rysunku 13 można np. zaproponować uruchomienie czasomierza typu TON (ON-delay) o odpowiedniej nastawie czasowej w kroku nr 1 (np. dwie sekundy), którego znacznik T40 można by wykorzystać w odpowiednio zmodyfikowanym pod kątem diagnostyki algorytmie SFC. Modyfikację algorytmu pod kątem diagnostyki pracy procesu przemysłowego w trybie jego testowania ilustruje rysunek 14.      

Rysunek 14: Modyfikacja struktury algorytmu SFC dla diagnostyki pracy zaworu Z1 (Q0.2)

W uruchomienia się kroku nr 1 (tak jak na rysunkach wcześniejszych) zawór Z1 (Q0.2) uruchamia się i zmienia swoją pozycję na I0.2 = 1. Przy prawidłowo działającym procesie po chwili mniejszej od dwóch sekund czujnik ciśnienia o adresie I0.3 powinien przełączyć się – ze stanu „0” do stanu „1”. Gdyby to nastąpiło tranzycja T2 zapaliłby się i pojawiłby się krok nr 2 ze swoim blokiem działania. Jednak proces działa nieprawidłowo, co właśnie pokazano na rysunku 14. W czasie dwóch sekund wspomniany czujnik ciśnienia o adresie I0.3 nie zmienił swojego stanu (z jakiegoś powodu), zatem znacznik T40=1 pojawił się i zainicjowała krok nr 2’, w którym zawór Z1 jest wyłączany i uruchomiona zostaje sygnalizacja alarmowa na adresie Q0.4 (pulsujący sygnalizator optyczny). Po naprawie zaworu lub usunięciu awarii pobudzenie przycisku START uruchamia ponownie układ.