4. Jądro algorytmu SFC

4.1. Algorytm SFC bez sterowania układami wykonawczymi

Pierwszym krokiem każdego jądra algorytmu SFC jest tzw. krok zerowy. Tworzymy go jak i cały algorytm SFC przy użyciu jednej z metod programowania sterowników PLC. Od tego momentu przyjmujemy, że każdy krok algorytmu SFC reprezentowany jest w programie PLC poprzez komórkę pamięci, czyli Marker. Każdy marker oznaczający dany krok algorytmu SFC będzie miał swój adres i przyjmujemy, że adresy dla wszystkich markerów będą zaczynać się od Bajtu z numerem 10. To oznacza, że krok zerowy określony będzie w programie PLC jako M10.0, krok pierwszy jako M10.1, itd. (Oczywiście dla kroku dziewiątego mielibyśmy adres M11.0). 
Należy podkreślić, że krok zerowy musi zaistnieć w każdym algorytmie SFC ponieważ przyczynia się do rozwoju algorytmu bez względu na to, czy wystąpi w tymże tylko raz czy wielokrotnie, będąc już „zwykłym” krokiem algorytmu. Przyjmijmy zatem w naszej dyskusji to drugie podejście, oraz przyjmijmy dodatkowe założenie, że prezentowane programy dla jądra algorytmu SFC będą „operować” wyłącznie na krokach algorytmu, które będą pozbawione (na razie) tzw. bloków działania. Kolejnym założeniem będzie to, że krok zerowy algorytmu pojawi się tuż po włączeniu sterownika PLC, czyli uruchomieniu urządzenia (układu sterowania PLC), oraz że przykładowy algorytm SFC będzie składał się z trzech kroków o markerach M10.0 do M10.2. Sieci programowe realizujące marker kroku zerowego M10.0, czyli de facto krok zerowy ilustruje rysunek 53.

Rysunek 53: Sieci programowe w metodzie LAD dla realizacji znacznika kroku zerowego M10.0

Przyjęcie założenia, że krok zerowy M10.0 powstaje po uruchomieniu sterownika PLC spowodowało, że użyto w sieci Network 1 adresu SM0.1 (tj. znacznika specjalnego dla sterowników PLC rodziny SIMATIC S7 200), który przyjmuje stan „1” tylko raz właśnie po uruchomieniu urządzenia, ustawiając tym samym znacznik kroku zerowego. (Później znacznik SM0.1 przyjmuje stan „0” aż do ponownego uruchomienia urządzenia). Ponieważ powinien być wywoływany również i przy potrzebie zatrzymania procesu sterowania, to również w tej samej sieci pojawił się marker M2.4, który jak pamiętamy jest Markerem OFF-SFC dla realizacji powyższego celu sterowania. Dalej, ponieważ krok zerowy jest początkiem jądra algorytmu SFC, które jest uruchamiane po wcześniejszym wyborze różnych trybów pracy układu, oraz ponieważ krok zerowy później jest normalnym krokiem w całym algorytmie SFC, to w sieci Network 1 mamy marker M2.3, jako Marker M_ON-SFC, oraz dalej, ponieważ założono tylko trzy kroki algorytmu SFC, to również w tej sieci pojawił się znacznik kroku ostatniego, czyli drugiego M10.1 wraz z warunkiem przejścia do kroku zerowego I1.1 dla spełnienia tego zapętlenia. Przyjmiemy w całej publikacji, że warunki przejścia, takie jak ten powyżej będziemy nazywać numerowanymi tranzycjami i rezerwować literę „T” z indeksem kroku następnego dla ich oznaczania. Zatem powyższy warunek przejścia powinien być teraz oznaczany jako T0: I1.1. (Patrz rysunek 51). Sieć Network 2 zawiera (na razie) tylko jeden warunek zerowania kroku zerowego znacznikiem kroku następnego, czyli M10.1. (Liczba „1” widniejąca przy rozkazach „S” i „R” oznaczać będzie zawsze liczbę ustawianych/kasowanych bitów). Dla zobrazowania tych zasad tworzenia algorytmu SFC oraz ułatwienia zrozumienia Czytelnikowi prezentowanych zagadnień zaprezentujmy przykład samego jądra algorytmu SFC, złożonego z tych trzech kroków (pozbawionych „na razie” bloków działania) o nadanych znacznikach M10.0 do M10.2 oraz występujących tam tranzycjach T0 do T1, by następnie przejść do utworzenia dla tegoż programu PLC posługując się metodą LAD.   

Rysunek 54: Jądro algorytmu SFC

Rysunek 54 ilustruje sposób tworzenia algorytmu SFC, który był wyjaśniony już w punkcie 1.2.3 z tym, że tutaj mamy już zadeklarowane adresy z przestrzeni adresowej pamięci programu PLC dla znaczników kroków algorytmu M10.0 do M10.2 oraz zadeklarowane adresy wejść, które dostępne są w drugim module wejść sterownika, czyli I1.1 do I1.3. (Może czytelniej by było przyjąć dla tranzycji T0 adres I1.0, itd., jednak jak pamiętamy adres ten jest „zajęty” przez załącznik P-KR-WY dla markera sterowania wyjściami M_WY). Program PLC w metodzie LAD dla jądra algorytmu SFC z rysunku 54 w zgodzie z rysunkiem 53 ilustruje rysunek 55.

 

Rysunek 55: Sieci programowe w metodzie LAD dla realizacji algorytmu SFC z rys. 54 w zgodzie z rys. 53_v.1

Analizując sieci programowe programu PLC z rysunku 55 zauważamy pewną prawidłowość, którą należało zagwarantować, aby ten program działał zgodnie z zasadami działania algorytmu SFC, tj. wyłączenie z działania kroku (etapu) poprzedniego wtedy, gdy zaistnieje etap następny. „Zrobiono” to instrukcjami programowymi S (SET) i R (RESET) z puli instrukcji programu LAD. Zauważamy np. że ustawiony w sieci programowej Network 5 Krok nr 2 (symbol K_2) kasuje Krok nr 1 (K_1) w sieci programowej Network 6. (Składnię każdej instrukcji programowej zawiera dokumentacja techniczna każdego sterownika PLC. W niniejszej publikacji autor założył, że Czytelnik zna podstawy użycia poszczególnych instrukcji programowych, które pojawiają się w przykładach).
Konstrukcją programu PLC z rysunku 55, nad którą autor się teraz trochę „pochyli” jest utworzenie w programie PLC kroku zerowego w sieci programowej Network 1. (Ze swojej wieloletniej praktyki akademickiej autor wie, iż ten fragment programu PLC zawsze stwarzał problemy studentom w zrozumieniu zasady utworzenia tegoż dla części początkowej de facto jądra algorytmu SFC). Czytelnik na pewno zauważył „zniknięcie” znaczników, które pojawiły się w części tekstu dotyczącej trybów pracy układu. Autor uspokoi Czytelnika. Te markery pojawią się w swoim czasie, teraz zaś dla lepszego zrozumienia tworzenia samego jądra algorytmu SFC przy wykorzystaniu instrukcji metody LAD z tych markerów „zrezygnowano”.
Jak wynika z zasad tworzenia algorytmu SFC krok (etap procesu), który określany jest jako zerowy musi się pojawić w algorytmie i to tylko raz: (1) przy uruchomieniu sterownika PLC, (2) po uruchomieniu układu sterowania PLC, (3) po włączeniu CPU sterownika, itp. Krok zerowy jest niezbędny, ponieważ rozpoczyna rozwój algorytmu SFC. Może „pojawić” się tylko jednorazowo w programie PLC, „reprezentującym” algorytm SFC (rysunek 9a) i 9b)) lub być potem „zwykłym” krokiem algorytmu, jak na rysunku 54. (Ten wariant prezentuje program PLC z rysunku 55). 
Należy nadmienić, że krok zerowy może być wywołany przez operatora poprzez wprowadzenie do programu PLC odpowiedniego sygnału z pulpitu sterującego, (wtedy mamy tworzenie kroku zerowego typu (2)), lub krok zerowy może być wywołany przez użycie w programie PLC odpowiednich mechanizmów, czy to programowych czy to diagnostycznych, (wtedy mamy tworzenie kroku zerowego typu (1) lub (3)). Metody programowe polegają na wprowadzeniu do sieci tworzącej krok zerowy odpowiednich zależności logicznych z użyciem właściwych instrukcji, zaś metody diagnostyczne polegają na użyciu tamże tzw. znaczników specjalnych CPU.   
Jest rzeczą zrozumiałą, że do utworzenia sieci programowej realizującej krok zerowy należy wykorzystać właściwy znacznik specjalny, nie zaś „pierwszy z brzegu”. Chodzi o to, aby po pierwsze bit takiego znacznika specjalnego „przyczynił” się do powstania kroku zerowego zaraz po uruchomieniu sterownika PLC i po drugie, „nie przeszkadzał” później w normalnej realizacji programu PLC dla algorytmu SFC. Takim bitem specjalnym będzie np. taki, którego wartość logiczna wyniesie „1” po uruchomieniu sterownika, zaś od drugiego cyklu obiegu programu jego wartość logiczna będzie cały czas wynosić „0” aż do ponownego uruchomienia. (Każdy sterownik PLC posiada swój zakres bitów specjalnych. Zawiera to dokumentacja techniczna urządzenia). Ponieważ w przykładach autor użył oprogramowania Step 7 MicroWin4.0, to bitem specjalnym „został” SM0.1. 
Tłumacząc program PLC z rysunku 55 od samego początku należy stwierdzić, że po uruchomieniu sterownika PLC bit specjalny o adresie SM0.1 przyjmie na ułamek sekundy wartość logiczną „1” i ustawia znacznik kroku zerowego K_0: M10.0. (Na razie nie istnieje Krok nr 2). Zatem krok zerowy algorytmu SFC zaistniał i algorytm może dalej się rozwijać. W sieciach następnych zauważamy określone prawidłowości: znacznik kroku zerowego ustawia znacznik kroku pierwszego K_1: M10.1, a ten kasuje znacznik, który go ustawił, (od tego momentu krok ten staje się zwykłym krokiem algorytmu), dalej znacznik kroku pierwszego ustawia znacznik kroku drugiego K_2: M10.2, a ten kasuje znacznik, który go ustawił. (Gdyby algorytm SFC zawierał „mnóstwo” kroków, program PLC dla tego algorytmu wyglądałby identycznie). Teraz już doszliśmy do końca algorytmu z rysunku 54. Ponieważ krok zerowy stał się już zwykłym krokiem, to znacznik kroku drugiego ustawia znacznik kroku zerowego K_0:M10.0, a ten kasuje znacznik, który go ustawił (Network 2). Prawda, że proste! Autor myśli, że tak. 
Należy zaznaczyć, że dla lepszej zrozumiałości zasady przekształcania algorytmu SFC na program sterujący PLC autor celowo nie uproszczał sieci programowych, co niekiedy jest możliwe w danym oprogramowaniu narzędziowym. Niektóre instrukcje mogą być włączone do danych sieci programowych, co skraca ich liczbę. Taki zmodyfikowany program PLC robiący „to samo” zilustrowano dalej na rysunku 56.
Podsumowując powyższe należy podnieść jeszcze kwestię diagnostyki realizowalności w sterowniku PLC algorytmu SFC, która zazwyczaj jest realizowana w specjalnym trybie pracy urządzenia, np. tryb ON-Line. (Każde urządzenie tego typu posiada kilka trybów pracy CPU, które umożliwiają dużo albo i jeszcze więcej). Dysponując np. środowiskami narzędziowymi typu ISAGraph firmy PEP Modular Computers, które jak już wspomniano tworzą algorytm SFC w randze (już) programu PLC, aktywny krok (etap procesu) jest podświetlany na ekranie monitora lub programatora lub zgodnie z zaleceniami normy EN61131-3 w czworokącie, oznaczającym ten krok „zapala” się punkt (kropka) o kolorze zadeklarowanym wcześniej przez programistę. (Nadmieńmy, że taka obserwacja kroku jest możliwa zwykle wtedy, gdy kontrolowany proces przemysłowy zatrzyma się na danym etapie swojej realizacji). Przy próbie diagnostyki algorytmu SFC, ale utworzonego za pomocą sieci programowych, takich jak na rysunku 55 czy 56, widzimy, że o „zapalaniu” bloczków czy kropek nie może być mowy, ponieważ ich po prostu nie ma. Wystąpi tylko rodzaj diagnostyki programu PLC, przewidzianej dla danej metody tworzenia programu, którą do tegoż użyto. Przy metodzie STL zobaczymy diagnostykę w postaci zero-jedynkowego stanu operandów, zaś przy metodach LAD i FBD podświetlenie sieci lub bloczków.  

Rysunek 56: Sieci programowe w metodzie LAD dla realizacji algorytmu SFC z rys. 54 w zgodzie z rys. 53_v.2

Jak już wspomniano rysunek 56 pokazuje „uprawnioną” i uproszczoną wersję programu PLC realizującego algorytm SFC z rysunku 54. Poprzez włączenie wymaganych operacji kasowania znaczników kroków poprzednich w sieci tworzącej znaczniki dla bieżących kroków, program PLC uprościł się do trzech zamiast sześciu sieci programowych.