Podręcznik

4. Jądro algorytmu SFC

4.4. Realizacja sterowania urządzeniami wykonawczymi procesu przemysłowego

Rysunek 35 pokazuje, że w rozbudowanym sterowaniu sekwencyjnym wyjścia procesu, czyli de facto urządzenia wykonawcze (patrz: rysunek 57) sterowane są sygnałami, które pochodzą zarówno z bloku wyboru trybów pracy jak i z jądra algorytmu SFC. Należy podkreślić, że za sygnały sterujące z bloku wyboru trybów pracy uznamy zarówno markery „poświadczające” dokonany wybór przez operatora określonych trybów pracy procesu przemysłowego, jaki i sygnały pochodzące od Joysticka w sterowaniu ręcznym. Dalej, za sygnały z jądra algorytmu SFC uznamy te sygnały, które „pozwalają” na działanie urządzeń wykonawczych w określonych krokach przy określonych trybach. Oczywiście wszystko „to” powinno znaleźć się w tworzonym programie PLC.
Nawiązując ponownie do rysunku 35 należy podkreślić, że w tworzonym programie PLC dla realizacji algorytmu SFC należy zadbać o to, aby określone działania zostały umieszczone w tym programie „w odpowiednim” miejscu. To skłania do podkreślenia Czytelnikowi faktu, iż pewna część programu PLC może być nazwana wstępną, inna część jądrem algorytmu, zaś jeszcze inna częścią końcową. Podział ten jest obowiązkowy zarówno w przypadku, gdy program PLC, realizujący algorytm SFC jest umieszczony (rozmieszczony) w pojedynczym bloku programu typu OB1 (ang. Organization Block) jak w przykładach powyżej, nawet z wywołaniem podprogramów dla obsługi przerwań czy innych działań, jak również w przypadku, gdy program PLC dla takiego algorytmu SFC jest zrealizowany w postaci struktury (patrz: programy PLC w środowisku STEP7 Professional), złożonej z bloków typu OB, PB (ang. Program Block), FB (ang. Function Block) czy innych bloków. 
O ile przy programowaniu strukturalnym można odpowiednio nazwane bloki programu rozmieścić „ładnie” po strukturze tzw. drzewa programu PLC i później zlinkować w całość, (oprogramowanie narzędziowe „zadba” wtedy o strukturę programu jako całości), to tworząc program PLC w bloku typu OB1 programista powinien wprowadzić mechanizmy rozdzielające całość na poszczególne uzupełniające się części. W innym przypadku nawet wyedytowany program PLC, który wydaje się poprawny (ponieważ edytor nie zgłosił błędów) nie będzie funkcjonował poprawnie po załadowaniu go do sterownika PLC. 
Należy nadmienić, że spotykamy kilka rodzajów mechanizmów programowych, które stosuje się w programie PLC takim, który edytowany jest pojedynczym bloku OB1, aby ten poprawnie funkcjonował w sterowniku PLC. Pierwszym mechanizmem jest zarezerwowanie w tym pojedynczym bloku OB1 odpowiedniej liczby sieci programowych, tj. Network-ów dla poszczególnych zamierzonych części programu. Przykładowo, dla złożonych tranzycji, które mają „wystąpić” w jądrze algorytmu SFC rezerwujemy dwie sieci programowe, dalej dla jądra algorytmu SFC rezerwujemy osiem sieci programowych (jak na rysunku 8) oraz dla części końcowej programu, która powinna sterować urządzeniami wykonawczymi rezerwujemy dwie sieci programowe. Jak łatwo obliczyć całość programu (oczywiście najprostszego z możliwych) zajmie wtedy dwanaście Network-ów. Drugim mechanizmem, który stosujemy dla poprawności funkcjonowania programu PLC utworzonego w pojedynczym bloku OB1 jest używanie odpowiednich instrukcji do tworzenia znaczników, które reprezentują kroki algorytmu SFC. (Ten sposób Czytelnik zaobserwował już w programie PLC na rysunku 61 i wcześniejszych). Dla przypomnienia konstrukcję w sieci LAD dla przykładowej tranzycji złożonej zilustrowano na rysunku 62.  

Rysunek 62: Sieci programowe w metodzie LAD dla realizacji tranzycji złożonej TZ_1 z innych sygnałów

Analizując rysunek 62 widzimy, że stan logiczny tzw. tranzycji złożonej o oznaczeniu TZ_1: M12.0 jest uzależniony nie od stanu pojedynczego sygnału, jak to miało miejsce dotychczas (patrz: tranzycje T0 i T1 na rysunku 61), tylko od stanu kilku sygnałów, które „połączono” w odpowiedni sposób w sieci programowej Network 1. Od tego momentu, gdyby algorytm SFC był utworzony w ten sposób, że w kilku miejscach przewidzianych na tranzycje musiałyby wystąpić warunki logiczne takie, jak dla tranzycji TZ_1, to aby uniknąć wielokrotnego powtarzania tych warunków w innej sieci programowej użylibyśmy tranzycji TZ_1. Zaznaczmy, że nasza przykładowa sieć programowa Network 1 jak i inne o podobnym znaczeniu powinny być umieszczone (najlepiej) w programie PLC przed sieciami programowymi, które będą przeznaczone na jądro algorytmu SFC.  
Jak już wspomniano w rozbudowanym sterowaniu sekwencyjnym wyjścia procesu, czyli urządzenia wykonawcze sterowane są sygnałami, które pochodzą zarówno z bloku wyboru trybów pracy jak i z jądra algorytmu SFC. (Sterowanie wyjść odbywa się zgodnie z jądrem algorytmu SFC oraz zgodnie z założeniami trybu sterowania ręcznego przy użyciu np. joysticka). Zatem „wypada” sieci programowe dla realizacji tego sterowania umieścić się na końcu programu PLC poza jądrem algorytmu SFC. Odnosząc powyższe do algorytmu z rysunku 60, dla którego program PLC zilustrowano na rysunku 61 (i przyjmując, że nie występują sieci programowe dla tranzycji złożonej) sieci programowe (Networki) dla sterowania urządzeniami wykonawczymi o adresach UWY_1: Q0.0 oraz UWY_2: Q0.1 rozpoczynałyby się od sieci programowej Network 9. Przyjmując, że „nasz” joystick zawiera dwa przyciski dla sterowania ręcznego: P_UWY_1: I1.4 oraz P_UWY_2: I1.5 „podpięte” do modułu wejść sterownika PLC (patrz rysunek 51) końcowy fragment programu PLC, uzupełniony o sieci programowe do sterowania tymi wyjściami dla algorytmu SFC z rysunku 60 zilustrowano na rysunku 63. 

Rysunek 63: Sieci programowe Network 9 i Network 10 realizujące sterowaniem dwóch wyjść UWY_1 i UWY_2

Zgodnie z algorytmem SFC z rysunku 60 oba urządzenia wykonawcze, tj. UWY_1: Q0.1 oraz UWY_2: Q0.2 załączane są w Kroku nr 0, czyli za pomocą znacznika K_0: M10.0, by następnie pierwsze z nich zostało wyłączone w Kroku nr 1 przy pozostawieniu w tym kroku załączonego drugiego z nich. Zgodnie z tym algorytmem oba urządzenia wykonawcze nie pracują w Kroku nr 2, czyli nie są sterowane. Zatem tak jakby wystąpił brak sieci programowej ze znacznikiem dla tego korku. 
Odnosząc powyższe do sieci programowych Network 8 i Network 9 (tj. ich pierwszych gałęzi – tych górnych) znajdujemy potwierdzenie takiego sterowania urządzeniami wykonawczymi. Marker M_WY jest generowany jak pamiętamy w bloku wyboru trybów pracy i zezwala na sterowanie wyjściami przy odpowiednich trybach pracy układu sterowania z wyłączeniem trybu ręcznego. Umieszczenie go „szeregowo” ze znacznikiem danego kroku powoduje sterowanie urządzeniami wykonawczymi zgodnie z algorytmem SFC.
Tryb ręczny sterowania urządzeniami wykonawczymi przy pomocy „naszego” joysticka widoczny jest w drugich gałęziach sieci programowych Network 1 i Network 2. Jak (również) pamiętamy wybór takiego trybu przez operatora procesu „kończy” się ustawieniem przez blok wyboru trybów pracy znacznika tego trybu, czyli M_P_RC: M3.3. Znacznik ten natychmiast „zatrzymuje” inne tryby pracy układu sterowania i jednocześnie stanowi zezwolenie na sterowanie urządzeń wykonawczych w trybie sterowania ręcznego. To zezwolenie jest właśnie umieszczone w tych drugich gałęziach powyższych sieci. W przypadku pobudzenia przez operatora procesu przycisków P_UWY_1: I1.4 lub/i P_UWY_2: I1.5 następuje sterowanie urządzeniami wykonawczymi pod jego kontrolą. Z konstrukcji logicznych tych drugich gałęzi widać, że raczej pod kontrolą optyczną, ponieważ nie zauważamy w tych gałęziach dodatkowych warunków na zatrzymanie działania tych urządzeń wykonawczych, np. sygnałów z krańcówek położenia. Czyli operator pobudza joystick, to urządzenie wykonawcze działa; nie pobudza urządzenie wykonawcze nie działa. Należy nadmienić, że w uzasadnionych przypadkach wynikających z konstrukcji urządzeń wykonawczych lub umiejscowienia pulpitu sterującego dla kontrolowanego procesu przemysłowego takie sterowanie ręczne byłoby niewskazane i musiałoby być obwarowane dodatkowymi sygnałami z odpowiednich czujników, które „świadczyły by” o zajmowanych położeniach urządzeń wykonawczych sterowanych ręcznie. Taki sygnał z czujnika, np. krańcówki włączony szeregowo w drugich gałęziach Networków przerywałby sterowanie urządzenia wykonawczego w momencie zajęcia przez to urządzenie właściwego położenia; dalsze pobudzanie joysticka nie miałoby sensu. Wspomniane zabezpieczenia niekiedy mogą być konieczne ze względu na wykluczenie uszkodzeń urządzeń wykonawczych, które nie powinny być sterowane wtedy, gdy zostaną sprowadzone np. do pozycji początkowej.
Należy nadmienić, że zaprezentowany przez autora sposób tworzenia programu PLC pokazał metodę zamiany na program sterujący algorytmu SFC o rozwoju prostym, który charakteryzował się brakiem tzw. rozgałęzień algorytmu. Rozgałęzienia algorytmu SFC umożliwiają m.in. warunkowe wykonywanie danych kroków nad innymi, omijanie wybranych kroków czy powrót do realizacji ponownej danych kroków w tzw. pętli. Takie algorytmy SFC autor pokazał w module 4-tym niniejszej publikacji.