Podręcznik

Strona: SEZAM - System Edukacyjnych Zasobów Akademickich i Multimedialnych
Kurs: Tworzenie programów PLC dla sterowania sekwencyjnego i współbieżnego
Książka: Podręcznik
Wydrukowane przez użytkownika: Gość
Data: czwartek, 12 lutego 2026, 19:45

1. Zasady tworzenia rozbudowanych programów sekwencyjnych

Punkt 1.3.2. pokazał Czytelnikowi strukturę logiczną rozbudowanego sterowania sekwencyjnego dowolnego procesu przemysłowego, który kontrolowany jest przez sterownik PLC. Już wiemy, że tak naprawdę sterowanie współbieżne jest większym lub mniejszym fragmentem całości algorytmu sterowania sekwencyjnego danym procesem, bowiem według normy EN 61131-3, która zawiera uwarunkowania odnośnie budowy wszelkich algorytmów „procesowych” sterowanie współbieżne „rozwija” się dopiero z utworzonego algorytmu sekwencyjnego, a nie odwrotnie. W tym miejscu należy również wyraźnie podkreślić, że praktyczna realizacja sterowania współbieżnego zamodelowanego w sterowniku PLC odbywa się na drodze poprawnego użycia instrukcji programowych w jednym programie PLC, nie zaś poprzez użycie wielu sterowników PLC, które realizują oddzielne „swoje” pojedyncze programy dla uruchomionych ciągów sterowania współbieżnego. Ten ostatni rodzaj sterowania współbieżnego zarezerwowany jest dla robotyki i maszyn typu roboty przemysłowe.  
W module pierwszym wskazano Czytelnikowi na sekwencyjność procesów przemysłowych oraz na przykładzie procesu z rysunku 6 pokazano proste uwarunkowania, które powinny taki proces uruchomić i kontrolować. Jest rzeczą zrozumiałą, że rozbudowa określonego procesu przemysłowego lub od samego początku zamiar budowy złożonej jego wersji pociąga za sobą zwiększenie stopnia jego złożoności, a co za tym idzie, samego sterowania takim procesem. W niniejszym module autor pokusił się o zilustrowanie Czytelnikowi zasad tworzenia rozbudowanych programów sekwencyjnych dla sterowników PLC łącznie z ich wersją uzupełnioną o sterowanie współbieżne.

1.1. Sygnał obiektowy i jego reprezentacja w programie PLC

Sygnały obiektowe wyjściowe z procesu przemysłowego, takie jak sygnały pochodzące od zestyków przycisków sterujących (na pulpicie sterującym), sygnały pochodzące od krańcówek położenia czy innych czujników wprowadzane są do modułów wejść sterownika PLC w sposób równoległy, zaś zależności logiczne, które powinny wystąpić między niektórymi z nich „budowane” są w programie PLC. Przypomnijmy, że w technice stykowej, która przez wiele lat „gościła” w automatyce procesów przemysłowych zależności logiczne, o których mowa budowano fizycznie poprzez realizację połączeń elektrycznych między zestykami czujników obiektowych. Należy przy tym zaznaczyć, że natura działania takich czujników obiektowych zasadniczo się nie zmieniła. Zestyk roboczy czujnika, pobudzony w odpowiedni sposób „zamyka” się i „otwiera” zamykając tym samym obwód elektryczny związany z tym czujnikiem. Drgania zestyków czujnika, jeżeli występowały wcześniej to dalej występują, aczkolwiek rozwój technologii wykonania niektórych czujników obiektowych doprowadził do częściowego wyeliminowania drgań tych zestyków. Drganie zestyku czujnika obiektowego ilustruje rysunek 31. Widać na nim, że zarówno przy załączaniu czujnika (tzn. jego zestyku np. przy pobudzania przycisku START czy pobudzaniu krańcówki położenia) jak i jego wyłączaniu występują drgania zanim sygnał ustabilizuje się. Szacunkowo można przyjąć, że czas tych drgań mieści się w granicach kilkunastu lub kilkudziesięciu milisekund. 

Rysunek 31: Ilustracja występowania drgań zestyku czujnika obiektowego

Należy zaznaczyć, że o ile występowanie drgań zestyków czujników obiektowych w układach sterowania stykowego zasadniczo nie wpływa w istotny sposób na działanie procesu przemysłowego (lub tak może być), to pozostawienie tego problemu w występującej postaci przy zamiarze wykorzystania sterownika PLC w układach sterowania procesami nie może być pozostawiony sam sobie, nie tylko w rozbudowanym sterowaniu sekwencyjnym ale przy jakimkolwiek sterowaniu PLC. Jest tak, ponieważ w ciągu tych wspomnianych kilkunastu lub kilkudziesięciu milisekund, potrzebnych na ustabilizowanie się sygnału z czujnika obiektowego tzw. pojedynczy cykl obiegu programu PLC (ang. Scan Cycle), w którym „czytane” są w odpowiednich „momentach” sygnały z czujników obiektowych realizowałby się wielokrotnie z możliwym skutkiem braku odczytania prawidłowego sygnału z takiego czujnika. Typowy okres realizacji Scan Cycle w większości spotykanych sterowników PLC to od 1ms w dół, czyli nawet i 100ms. Czyli, mówiąc prościej w momencie czytania przez program PLC stanu danego czujnika obiektowego poziom jego sygnału zamiast „jedynki logicznej” przesyła do programu PLC „zero logiczne”. Ponieważ określony stan każdego czujnika wywoła zawsze określoną reakcję programu PLC na to zdarzenie, to takie błędne odczytanie stanu tego czujnika zamiast wygenerować realizację przewidzianej programem procedury generuje inną procedurę (niewłaściwą) lub procedurę niebezpieczną dla procesu przemysłowego. Ilustracyjnie problem taki pokazano na rysunku 32 przyjmując, że czas trwania Scan Cycle równy jest 100ms.  

Rysunek 32: Ilustracja momentu odczytu wejścia przez program PLC

Ponieważ w czasie trwania każdego pojedynczego Scan Cycle CPU sterownika PLC realizuje wiele innych „czynności” takich jak, komunikacja z urządzeniem programującym, tzw. „pisanie” wyjść i inne to na czytanie wejść również system operacyjny sterownika „przydziela” określony czas. Przyjęto, że ten ostatni czas równy jest 30S, co pokazano na rysunku 32. Ponieważ dla każdego programu PLC istotnym jest, czy czujnik obiektowy wystawia na „swoim” wejściu w module wejść sterownika stan „1” czy stan „0” (bo przecież po coś każdy program jest napisany), przyjmijmy, że w naszym przypadku istotnym jest dla programu jest stan „1”. Oznacza to nic innego, jak tylko to, że odczytanie przez program PLC takiego stanu czujnika w odpowiednim „dla siebie” momencie powinno spowodować poprawność realizacji takiego programu. Spójrzmy zatem na rysunek 32. Widać na nim wyraźnie, że w momencie czytania wejść, który to czas jak widzimy nie będzie trwał wiecznie, sygnał z czujnika obiektowego zostanie odczytany jako „0” trwające prze połowę okresu, czyli 15ms. Przy czasie na czytanie wejść wynoszącym 30s małe jest prawdopodobieństwo, aby przy kolejnym Scan Cycle została przez program PLC odczytana „1-ka”. Zatem taka „porażka” poskutkuje niewłaściwym działaniem układu sterowania.
Należy zaznaczyć, że producenci sterowników PLC już dawno zauważyli problem zakłóceń sygnałów wnoszonych przez załączające się zestyki różnych czujników obiektowych. Od strony hardware istnieją dwa podstawowe rozwiązania: pierwsze polega na wbudowywaniu w zespół czujnika obiektowego prostych układów elektronicznych, eliminujących z właściwego sygnału czujnika drgania jego zestyku, zaś drugie rozwiązanie polega na zastosowaniu również prostych układów elektronicznych, ale już w module wejść sterownika PLC. Od strony software, czyli tej, która nas najbardziej interesuje ma zastosowanie tworzenie w wybranej metodzie programowania sterowników PLC prostych zależności logicznych z udziałem czasomierzy odpowiedniego typu (tzw. Timerów), które wbudowuje się w program PLC. W takim rozwiązaniu eliminacji zakłóceń od czujników obiektowych do jądra algorytmu SFC (do programu PLC) przesyłane są wybrane sygnały, od nich pochodzące, ale nie w postaci adresów (absolutnych) poszczególnych wejść, które występują w przestrzeni adresowej każdego modułu wejść sterownika (np. I0.0, I0.3, itd.), tylko w postaci adresów komórek pamięci, które od tego momentu te sygnały od czujników obiektowych reprezentują (np. M0.0, M0.3, itd.). Rysunek 33 ilustruje dla przykładu prostą sieć metody LAD dla eliminacji zakłóceń od czujnika obiektowego o adresie absolutnym I2.5. 

Rysunek 33: Metoda programowa eliminacji drgań zestyku czujnika obiektowego

W widocznej na rysunku sieci Network 1 „wychwycony” przez CPU w momencie czytania wejść stan wysoki czujnika obiektowego (czyli „1-ka” logiczna), „podpiętego” do wejścia o adresie I2.5 spowoduje wyzwolenie działania Timera typu TOF (ang. OFF-Delay), którego bit T96 po wyzwoleniu Timera przyjmuje w programie PLC stan wysoki. Użycie tego bitu w sieci Network 2 powoduje, że w tym samym momencie komórka pamięci (Marker) o adresie M2.5 jest sterowana, czyli przyjmuje stan wysoki. Po zadeklarowanym czasie 40ms (liczba „+40” na wejściu PT Timera TOF) bit T96 wyzeruje się, co „pociągnie” za sobą i zerowanie komórki pamięci M2.5. 
Zatem dla programu PLC sygnał od czujnika obiektowego (adres I2.5) będzie przedstawiony w postaci pojedynczego impulsu o okresie 40ms. Widać to poglądowo na rysunku 34. 

Rysunek 34: Pojedynczy impuls M2.5 od wejścia I2.5

Rysunek 34 pokazuje, że wygenerowany impuls M2.5 o czasie trwania 40ms „omija” zmiany sygnału, które wystąpiły w czujniku obiektowym I2.5. Dla programu PLC będzie się „liczył” tylko pierwszy poziom tego sygnału. Pozostałe jego oscylacje nie będą miały wpływu na działanie programu PLC.
Należy zaznaczyć, co już wspomniano, że programowa eliminacja ewentualnych drgań zestyków czujników obiektowych, gdzie sygnał na adresie czujnika jest zastąpiony przez stan komórki pamięci jest realizowana nie tylko dla przypadku pojedynczego odbioru sygnału od takiego czujnika obiektowego (jak na rysunku 33 i 34), ale również dla wygenerowania dla programu PLC sygnału z odpowiedniej komórki pamięci, do której wpisywana jest informacja z wielu czujników obiektowych. Przykładem może być komórka pamięci informująca jądro algorytmu o tzw. pozycji początkowej elementów procesu przemysłowego.

 

1.2. Blok wyboru trybu pracy procesu przemysłowego

Jak pamiętamy z p.1.3.2. w bloku wyborów trybu pracy dokonywana jest analiza warunków wstępnych do uruchomienia procesu przemysłowego. Blok wyboru trybu pracy jest zatem początkowym fragmentem programu PLC, który odpowiada za „przyjęcie” m.in. sygnałów od pulpitu sterującego, takich jak:
•    sygnał od wyłącznika awaryjnego;
•    sygnał od załącznika START czy wyłącznika STOP;
•    sygnały dla dokonanego wyboru pracy krokowej, cyklicznej, automatycznej lub ręcznej, 
oraz generację sygnałów informujących operatora procesu o stanie jego realizacji, które widoczne są na pulpicie sterującym. Do takich z kolei zaliczamy:
•    sygnał informujący o uruchomieniu, zatrzymaniu lub pracy awaryjne układu sterowania (procesu);
•    sygnały informujące o dokonanym wyborze trybów pracy układu sterowania. 
Wynika z powyższego, że do większości z tych informacji dostęp posiada operator procesu, jak również niektóre z nich generuje on sam poprzez używanie przycisków pulpitu sterującego. Jednak blok wyboru trybu pracy otrzymuje oraz generuje również sygnały, których „nie widać”. Są to sygnały przeznaczone dla oraz pochodzące z samego jądra algorytmu oraz sygnały zezwoleń na działanie niektórych urządzeń wykonawczych w sterowaniu ręcznym. Strukturę logiczną układu sterowania z blokiem wyboru trybów pracy ilustruje rysunek 35.

Rysunek 35: Struktura logiczna układu sterowania z blokiem wyboru trybów pracy

Należy zaznaczyć, że nie przez przypadek liczba sygnałów generowanych przez pulpit sterujący jest tak duża. Inaczej nie mówilibyśmy o rozbudowanym sterowaniu sekwencyjnym procesem przemysłowym. Opiszmy zatem bardziej szczegółowo najważniejsze z nich:
•    sygnał pochodzący od wyłącznika awaryjnego (WA) – sygnał posiadający wpływ na układ sterowania PLC na poziomie hardware oraz software i odpowiedzialny za eliminację stanów niebezpiecznych dla personelu oraz układu sterowania. Na poziomie hardware, niezależnym od układu sterowania PLC wyłącza pracujące urządzenia procesu przemysłowego, zaś na poziomie software ma wpływ na zachowanie się programu PLC podczas wystąpienia stanów niebezpiecznych, które mogą wystąpić w procesie przemysłowym. Wykorzystanie wyłącznika awaryjnego w układzie sterowania PLC musi odpowiadać normie EN 61508. (Polski odpowiednik to norma o oznaczeniu PN-EN 61508). Pobudzenie wyłącznika awaryjnego (WA) wywołuje trwałe przestawienie jego funkcji do z pozycji: zamknięty do pozycji: otwarty (NC – ang. Normal Closed). Wywołuje to zatrzymanie realizacji programu PLC. W zależności od stopnia skomplikowania procesu przemysłowego późniejsze „odkluczenie” wyłącznika awaryjnego (WA) (czyli przywrócenie jego stanu do pozycji: zamknięty) może umożliwić tylko sterowanie ręczne układami wykonawczymi lub wywołanie funkcji tzw. samonaprowadzania po podaniu sygnału START, nie zaś normalną pracę układu sterowania.
•    sygnał pochodzący od załącznika (START) – sygnał posiadający wpływ na układ sterowania PLC tylko na poziomie software. Pobudzenie załącznika (START) wywołuje monostabilne (nietrwałe) przejście tego załącznika z pozycji: otwarty do pozycji: zamknięty (NO – ang. Normal Open). Rozpoczyna to działanie układu sterowania PLC zgodnie z algorytmem SFC. Ponowne pobudzenie załącznika (START) pozostaje bez wpływu na działanie procesu chyba, że wybrano tryb pracy krokowej; wtedy proces funkcjonuje krok po kroku.
•    sygnał pochodzący od wyłącznika (STOP) – sygnał posiadający wpływ na układ sterowania PLC tylko na poziomie software. Pobudzenie wyłącznika (STOP) wywołuje monostabilne przejście załącznika z pozycji: zamknięty do pozycji: otwarty (NC). Zatrzymuje to działanie układu sterowania PLC. Pobudzenie po tym zatrzymaniu załącznika START (tzn. po usunięciu ewentualnych przyczyn zatrzymania procesu) wywołuje ponowne uruchomienie układu sterowania PLC.
•    sygnał pochodzący od załącznika pozycja początkowa (STOP PZ) – sygnał posiadający wpływ na układ sterowania PLC tylko na poziomie software. Pobudzenie załącznika pozycja początkowa (STOP PZ) po uruchomieniu układu sterowania wywołuje monostabilne przejście tego załącznika z pozycji: otwarty do pozycji: zamknięty (NO). Pozwala to na „dokończenie” działania procesu do momentu osiągniecia tzw. pozycji początkowej, czyli po zakończeniu pełnego cyklu tego procesu według algorytmu SFC. Ponowne uruchomienie procesu przemysłowego jest możliwe na normalnych warunkach jak po włączeniu układu sterowania.
•    sygnał pochodzący od załącznika praca automatyczna (P-AUT) - sygnał posiadający wpływ na układ sterowania PLC tylko na poziomie software. Pobudzenie załącznika praca automatyczna (P-AUT) wywołuje monostabilne przejście tego załącznika z pozycji: otwarty do pozycji: zamknięty (NO) i posiada wpływ na działanie układu sterowania tylko wtedy, gdy pobudzenie to nastąpiło w pozycji początkowej układu. Uruchomi to pracę automatyczną układu, czyli realizację procesu przemysłowego do momentu jego zatrzymania. Dezaktywacja (P-AUT) następuje poprzez użycie załączników (P-CY), (P-KR) lub (P-RC). 
•    sygnał pochodzący od załącznika praca cykliczna (P-CY) - sygnał posiadający wpływ na układ sterowania PLC tylko na poziomie software. Pobudzenie załącznika praca cykliczna (P-CY) wywołuje monostabilne przejście tego załącznika z pozycji: otwarty do pozycji: zamknięty (NO) i poskutkuje wpływem na działanie układu sterowania dopiero od momentu zajęcia przez układ tzw. pozycji początkowej. Wtedy to nastąpi wykonanie od początku do końca tylko pojedynczego cyklu procesu przemysłowego i jego samoczynne zatrzymanie ponownie w pozycji początkowej. Dezaktywacja (P-CY) następuje poprzez (P-AUT), (P-KR) lub (P-RC).
•    sygnał pochodzący od załącznika praca krokowa (P-KR) - sygnał posiadający wpływ na układ sterowania PLC tylko na poziomie software. Pobudzenie załącznika praca krokowa (P-KR) wywołuje monostabilne przejście tego załącznika z pozycji: otwarty do pozycji: zamknięty (NO) i natychmiast uruchamia tzw. pracę krokową procesu przemysłowego, czyli wykonywanie czynności procesowych krok po kroku poprzez każdorazowe użycie załącznika (START). Dezaktywacja (P-KR) następuje poprzez użycie (P-AUT), (P-CY) lub (P-RC).
•    sygnał pochodzący od załącznika praca ręczna (P-RC) - sygnał posiadający wpływ na układ sterowania PLC tylko na poziomie software. Pobudzenie załącznika praca ręczna (P-RC) wywołuje monostabilne przejście tego załącznika z pozycji: otwarty do pozycji: zamknięty (NO) i stwarza natychmiastową możliwość sterowania układami wykonawczymi procesu przemysłowego przy użyciu dodatkowych załączników, które znajdują się zazwyczaj na pulpicie sterującym i są również sygnałami dla bloku wyboru trybów pracy. Dezaktywacja (P-RC) następuje poprzez użycie załączników (P-AUT), (P-CY) lub (P-KR).
Rysunek 36 ilustruje omówione wyżej sygnały wprowadzone do modułu wejść sterownika PLC z zachowaniem funkcji zestyków roboczych tych załączników, tzn. NC lub NO.

Rysunek 36: Zaproponowane adresy dla sygnałów w rozbudowanym sterowaniu sekwencyjnym

Należy zaznaczyć, że liczba sygnałów doprowadzonych do kart wejść sterownika PLC, który realizuje rozbudowane sterowanie sekwencyjne może być nie tylko znacznie, ale również wielokrotnie większa, bowiem do bloku wyboru trybów pracy mogą być doprowadzone nie tylko sygnały z pulpitu sterującego ale również sygnały obiektowe. Wtedy takich kart wejść w konfiguracji sterownika PLC (już modułowego, nie zaś typu COMPACT) będzie więcej. Przyjmuje się, że pojedyncza karta wejść może umożliwić podłączenie 8 sygnałów wejściowych (jak na rysunku 36) lub więcej, może umożliwić podłączenie 16 lub nawet 32 sygnałów wejściowych. 
Należy zaznaczyć dalej, że w rozbudowanym sterowaniu sekwencyjnym do bloku wyboru trybów pracy można wprowadzić również sygnały, które informują układ sterowania o m.in.:
•    prawidłowości napięcia zasilającego urządzenia wejścia/wyjścia sterownika PLC;
•    prawidłowości napięcia dla obwodów mocy układów wykonawczych;
•    braku „przegrzania się” urządzeń wykonawczych (sygnały z tzw. „termików”);
•    braku obecności pracowników w miejscach niebezpiecznych jako sytuacji prawidłowej.

2. Sygnały bloku wyboru trybów pracy procesu przemysłowego

Czytelnik na pewno zauważył na podstawie rysunku 36, że sygnały dostarczane do bloku wyboru trybów pracy doprowadzone są do modułu wejść sterownika PLC w sposób równoległy bez jakichkolwiek powiązań łączeniowych między sobą. Zatem może pojawić się pytanie: gdzie są oraz w jaki sposób zapisuje się warunki logiczne do odpowiedniego użycia sygnałów z pulpitu sterującego oraz innych sygnałów dla bloku wyboru trybów pracy? Otóż te wszystkie uwarunkowania zapisane są w programie PLC (lub podprogramie PLC) poprzez użycie odpowiedniej metody tworzenia programu PLC dostępnej dla sterownika PLC, którym się dysponuje. 
Poniżej zamieszczono programy PLC w jednej z metod jego tworzenia, tj. metody graficznej LAD (ang. Ladder Diagram) z wykorzystaniem jednej środowiska narzędziowego STEP7, „konstruujące” odpowiednie zależności logiczne dla powstania tzw. Markerów, czyli komórek pamięci z przestrzeni adresowej programu PLC. 

2.1. Marker START od impulsu załącznika (START)

Jak już wiadomo z wcześniejszych wyjaśnień załącznik (START): I0.1 nie tylko uruchamia działanie układu sterowania PLC zgodnie z algorytmem SFC, ale również w trybie pracy krokowej każdorazowe jego pobudzenie powinno wywoływać realizację pracy procesu „krok po kroku” (etap po etapie). Zatem zważywszy na fakt szybkości realizacji programu PLC w odniesieniu do możliwych zmian sygnału, pochodzącego od zestyku załącznika (START): I0.1 – patrz rysunek 31, „wygodniej” jest dla programu PLC występowanie w tymże nie adresu tego załącznika - patrz rysunek 36, tylko adresu komórki pamięci (tzw. Markera) zgodnie z wyjaśnieniem na rysunku 33 i 34. Program LAD „konstruujący” Marker START: M1.1 zilustrowano na rysunku 37.

Rysunek 37: Sieci LAD tworzące sygnał od załącznika (START) dostępny jako komórka pamięci o adresie M1.1 

(Wyjaśnijmy, że adres komórki pamięci, która reprezentuje zmienną w programie PLC posiada przedrostek „M” oraz tzw. adres bitowy, określający jej położenie. Na rysunku 37 np. adres I0.1 „stał” się adresem w przestrzeni adresowej pamięci programu o oznaczeniu M1.1. Taki sposób adresowania, który „kończy” się adresem Markera dla programu PLC zastosowano nie tylko w bieżącym punkcie, ale i w całym tekście niniejszego opracowania). 
 

2.2. Marker OFF-ON od przycisku wyłącznika (STOP) i załącznika (START)

Jak wiemy wyłącznik (STOP): I0.2 zatrzymuje działanie układu sterowania PLC (procesu przemysłowego) i już wiemy, że jego ponowne uruchomienie następuje poprzez użycie markera M1.1, pochodzącego od załącznika (START): I0.1 – patrz punkt 1-szy. Oznacza, że ten ostatni oraz wyłącznik (STOP) dezaktywują/uaktywniają proces wzajemnie. Jednak, jak zobaczymy dalej dla samego wyłącznika (STOP) nie przewidziano markera (jak dla załącznika (START)), tylko przewidziano funkcję zerowania przez ten sygnał innego markera, tzw. Markera OFF-ON, który dla bloku wyboru trybów pracy „uczyni” to samo, ale pośrednio. Markerowi OFF-ON „nadano” komórkę pamięci o adresie M1.4. Sieci programowe dla realizacji sterowania tego markera pokazano na rysuneku 38. 

Rysunek 38: Program LAD z wyłącznikiem (STOP) i załącznikiem (START) sterującymi Markerem OFF-ON; v.1

Analiza sieci programowych z rysunku 38 pokazuje dwie rzeczy. Po pierwsze sygnał dostępny na adresie absolutnym I0.2 nie został „zamieniony” na impuls w celu eliminacji drgań zestyku, tylko steruje bezpośrednio Markerem OFF-ON. Wynika to po prostu z faktu, iż marker ten jest zerowany opadającym zboczem sygnału I0.2 (zmiana z „1” na „0”) i jego permamentny stan „0” jest utrzymywany do momentu usunięcia awarii lub powodu zatrzymania procesu, bowiem taka sytuacja została wywołana celowo. (Funkcja załącznika (START) jest inna – jego pobudzanie w trybie pracy krokowej powinno wywołać tylko jeden cykl, nie zaś kilka na skutek zakłóceń występujących na zestyku tego załącznika). Po drugie zilustrowany program LAD jest nieznacznie błędny. Instrukcje w sieci programowej Network 1 powinny być w Network 2 i odwrotnie, co pokazano na rysunku 39.

Rysunek 39: Program LAD z wyłącznikiem (STOP) i załącznikiem (START) sterującymi Markerem OFF-ON; v.2

Powyższa modyfikacja rozmieszczenia sieci programowych powoduje, że w przypadku jednoczesnego wystąpienia dwóch sygnałów dla sterowania Markera OFF-ON, tzn. sygnału od przycisku I0.2 oraz impulsu od M1.1 to ten pierwszy stanie się uprzywilejowany, czyli wyłączy działanie procesu przemysłowego. Jest to zasadne, ponieważ ze względów bezpieczeństwa wyłączanie jakiegokolwiek działania procesu powinno być nadrzędne nad jego załączeniem.
Dodajmy na koniec, że użycie w programie LAD „zanegowanego” symbolu w odniesieniu do adresu absolutnego I0.2 było konieczne, ponieważ do tegoż „podłączony” jest fizycznie zestyk przycisku STOP typu NC (ang. Normal Closed – patrz rysunek 36), który bez pobudzenia tego przycisku permamentnie wysyła do programu PLC sygnał „1”. Brak negacji tego adresu w programie PLC (rysunek 38 i 39) wykluczałby prawidłowość użycia przycisku STOP. Należy zaznaczyć, że w każdym układzie sterowania PLC zestyki sygnałów, które zgodnie z założeniami dotyczącymi funkcjonowania procesów przemysłowych powinny gwarantować ich bezpieczne wyłączanie są „traktowane” w programie PLC identycznie jak powyżej. Jak widać bowiem z tych dwóch programów PLC zanegowanie adresu I0.2 spowoduje przerwanie procesu nawet przy uszkodzeniu przycisku lub linii sygnałowej z nim związanej. Jest to istotne, ponieważ wykorzystanie adresu bez negacji mogłoby wykluczyć zatrzymanie.

2.3. Marker IMP POZ-POCZ: – impuls o pozycji początkowej elementów

Jak zapewne Czytelnik zauważył, rozbudowane sterowanie sekwencyjne wykorzystuje m.in. tryb pracy cyklicznej,  w którym następuje wykonywanie od początku do końca tylko pojedynczego cyklu procesu przemysłowego i jego samoczynne zatrzymanie w pozycji początkowej, od której de facto cykl te się rozpoczął. Nie oszukujmy się, za odpowiedni moment rozpoczęcia i zakończenia tegoż odpowiada nie operator procesu tylko układ sterowania PLC. Ten z kolei operuje na informacjach dostarczonych mu tylko w postaci odpowiednich znaczników, czyli Markerów. 
Należy zaznaczyć, że tzw. pozycja początkowa dla układu sterowania jest wytworem projektanta algorytmu (czytaj: algorytmu SFC) i określana jest indywidulanie przy szacowaniu domniemanego sposobu działania procesu przemysłowego. W jednym przypadku pozycją początkową będzie stan siłownika pneumatycznego: wsunięty, co pokaże odpowiedni czujnik obiektowy, (np. kontaktronowy w postaci sygnału „1”), zaś innym razem może to być odwrotność: tłoczysko wysunięte przy kontroli sygnałowej tego stanu tłoczyska. Ogólnie istotnym powinno być, aby określone pozycje urządzeń lub elementów procesowych i/lub stany sygnałów, świadczących o tych pozycjach odzwierciedlały zasadny i bezpieczny początek działania procesu przemysłowego. Często warunkiem bezpiecznego działania tegoż jest zajmowanie przez jego elementy pozycji początkowej po przywróceniu napięcia zasilania układu sterowania, które zostało awaryjnie wyłączone. Trudno bowiem uznać za zasadne przyjęcie tezy, że w każdym przypadku ponowne załączenie procesu przemysłowego po momencie jego awaryjnego wyłączenia powinno odbywać się od chwili, w której się on awaryjnie zatrzymał. W jednym przypadku powyższe poskutkuje prawidłową kontynuacją przerwanego procesu, zaś w innym narazi go na straty. Zilustrowano to na rysunku 40.  

Rysunek 40: Przypadek ponownego uruchomienia procesu przemysłowego

Awaryjne zatrzymanie procesu przemysłowego zilustrowanego na rysunku 40 wywoła samoczynny powrót do pozycji początkowej dwóch tłoczysk siłowników S1 i S2 (na skutek działania sprężyny powrotnej) oraz zatrzymanie w pozycji: wysunięty tłoczyska siłownika S3, ponieważ jest to siłownik dwustronnego działania, którego tłoczysko w obu kierunkach (dół-góra) sterowane jest zaworami odpowiednio Z3 i Z4. Ponowne załączenie sterowania tym procesem może spowodować to, iż na skutek szybszego zadziałania NAPĘDU zawór Z4 „nie zdąży” wycofać wrzeciona W3 z nawiercanego otworu przed ruchem obrabianego przedmiotu i wiertło lub/i tłoczysko ulegną uszkodzeniu (skrzywieniu lub złamaniu). Zatem przed ponownym uruchomieniem (normalnym) procesu z rysunku 40 należy zadbać, aby wrzeciono W3 znalazło się w pozycji początkowej: wsunięty tłoczyska siłownika S3. 
Należy zaznaczyć, że hipotetyczna sytuacja pozycji początkowej w odniesieniu do siłownika S3 dała tylko namiastkę problemu, który związany jest z sygnałami świadczącymi o pozycji początkowej w rozumieniu rozbudowanego sterowania sekwencyjnego. O pozycji początkowej w tym rozumieniu mogą świadczyć tylko sygnały informujące o zajęciu położeń, jak na rysunku 40 lub/i sygnałów sterujących z pulpitu sterującego.
Bez względu na rodzaj sygnałów obiektowych, które informują o pozycji początkowej przyjmuje się w algorytmie SFC dla rozbudowanego sterowania sekwencyjnego, że reprezentantem „zbiorczej” informacji (tzn. czy pozycja początkowa wszystkich elementów wystąpiła czy też nie) jest Marker o przyjętym przez projektanta algorytmu adresie z puli adresów przestrzeni adresowej sterownika PLC, czyli Mx.x. To znaczy, że jeżeli wszystkie sygnały obiektowe mają stan „1”, to Mx.x = „1”, w przeciwnym wypadku Mx.x = „0”.
Należy zaznaczyć, że nawet pobieżna analiza rysunku 40 pod kątem przyjmowania przez tłoczyska siłowników pozycji początkowej informuje o kilku sprawach. Po pierwsze przyjęcie przez tłoczyska poszczególnych pozycji początkowych (np. wsunięcie) odbędzie się w różnym czasie, dalej po drugie zajęcie przez każde tłoczysko swojej pozycji początkowej może wygenerować zmiany sygnału z ich czujników obiektowych (była już o tym mowa), oraz po trzecie wszystkie trzy tłoczyska mogą zająć swoje górne położenia mniej więcej w tym samym czasie. Aby zatem wyeliminować powyższe tworząc de facto już Marker IMP POZ-POCZ należy to uczynić programowo według pokazanych wcześniej zasad przyjmując np. czas ustalania się sygnałów od czujników obiektowych na 150ms. Rysunek 41 ilustruje zatem sieci programowe w metodzie programowania LAD tworzące Marker IMP POZ-POCZ o przydzielonym adresie M1.6. Ponieważ bieżące wyjaśnienia nie dotyczą rozpatrywania przez autora konkretnego procesu przemysłowego, to w sieci Network 1 nie wystąpiły konkretne sygnały tylko znaki ??.?. Konkretne adresy pojawią się w omawianych przez autora przykładach w module czwartym.

Rysunek 41: Sieci programowe dla realizacji Markera IMP POZ-POCZ o adresie M1.6 

    Należy zaznaczyć, że te wszystkie sygnały ze znakami ??.? na rysunku 41 mogą sterować markerem pomocniczym, który można nazwać np. Markerem POZ-POCZ o adresie M1.0, który nota bene nam się może przydać w dalszych wyjaśnieniach dotyczących bloku wyboru trybów pracy. Zmodyfikowany program PLC dla omówionego przypadku zilustrowano na rysunku 42. 


Rysunek 42: Sieci programowe dla realizacji Markera IMP POZ-POCZ ale z Markerem POZ-POCZ o adresie M1.0

2.4. Marker pracy automatycznej M_P-AUT od załącznika P-AUT

Zgodnie z ustaloną funkcją b powinien on po pobudzeniu przez operatora procesu przycisku P-AUT: I0.5 (na pulpicie sterującym) umożliwić wybór trybu pracy automatycznej tegoż procesu przemysłowego, ale tylko w przypadku zajęcia (omawianej wcześniej dosyć szczegółowo) pozycji początkowej wszystkich elementów, co zgodnie z przyjętym przez algorytm SFC założeniem powinno generować Marker IMP POZ-POCZ: m1.6 (patrz rysunki 41 i 42). Dalej, zgodnie z wcześniejszym opisem innych trybów pracy procesu przemysłowego, wybieranych przez operatora za pośrednictwem innych przycisków pulpitu sterującego tryb pracy automatycznej powinien być dezaktywowany w dowolnym momencie stanu procesu poprzez przycisk pracy cyklicznej P-CY: I0.3, albo przycisk pracy krokowej P-KR: I0.4, albo przycisk sterowania ręcznego b. Sieci programowe dla Markera M_P-AUT o adresie M3.0 zilustrowano na rysunku 43. 

Rysunek 43: Sieci programowe metody LAD dla Markera M_P-AUT o adresie M3.0

2.5. Marker pracy cyklicznej: M_P-CY od załącznika P-CY

W przeciwieństwie do markera z p.4 Marker M_P-CY, oznaczający włączenie trybu pracy cyklicznej może być załączony nawet w dowolnym momencie pracy procesu przemysłowego po pobudzeniu przycisku P-CY: I0.3. Proces dokończy realizację rozpoczętego cyklu do momentu pozycji początkowej elementów (M1.0) lub rozpocznie od nowa pojedynczy cykl i zakończy go również w tej pozycji początkowej. Dezaktywacja Markera M_P-CY: M3.1 jest możliwa wtedy poprzez przycisk P-AUT: I0.5 lub w dowolnym momencie poprzez użycie przycisków P-KR: I0.4 lub P-RC: I0.6. Sieci programowe dla realizacji powyższego zilustrowano na rysunku 44.

Rysunek 44: Sieci programowe metody LAD dla Markera M_P-CY o adresie M3.1

2.6. Marker pracy krokowej: M_P-KR od załącznika P-KR

Podobnie jak marker z p.5-go Marker M_P-KR: M3.2 może być załączony również w dowolnym momencie pracy procesu przemysłowego po pobudzeniu przycisku na pulpicie sterującym P-KR: I0.4. Rozpoczęty proces dokończy realizację domniemanego kroku, w którym aktualnie się znajduje i zatrzyma się po nim, oczekując na zezwolenie do realizacji następnego kroku, itd., aż bp. do pozycji początkowej. Wtedy to jest możliwa dezaktywacja Markera M_P-KR: M3.2 poprzez przycisk P-AUT: I0.5 lub możliwa w dowolnym momencie, ale poprzez użycie innych przycisków, tj. P-CY: I0.3 lub P-RC: I0.6. Sieci programowe dla realizacji powyższego znacznika zilustrowano na rysunku 45.

Rysunek 45: Sieci programowe metody LAD dla Markera M_P-KR o adresie M3.2

2.7. Marker sterowania ręcznego M_P-RC: M3.3 od załącznika P-RC

Załączenie trybu sterowania ręcznego poprzez M_P-RC: M3.3 może być zrealizowane również w dowolnym momencie pracy procesu przemysłowego po pobudzeniu przycisku na pulpicie sterującym P-RC: I0.6. Rozpoczęty proces zatrzyma się i sterowanie wybranymi urządzeniami procesu jest wtedy najczęściej możliwe za pomocą oddzielnych przycisków sterujących, np. typu joystick, które umieszcza się na pulpicie sterującym. Dezaktywacja Markera M_P-RC: M3.3 jest możliwa poprzez przycisk P-AUT: I0.5 tylko w pozycji początkowej lub możliwa w dowolnym momencie, ale poprzez użycie innych przycisków pulpitu sterującego, tj. P-CY: I0.3 lub P-KR: I0.4. Sieci programowe dla realizacji powyższego znacznika zilustrowano na rysunku 45. Należy zaznaczyć, że tryb sterowania ręcznego używany jest często w przypadku, gdy dopuszczalne jest sterowanie urządzeniami wykonawczymi, które powinny być uaktywnione, zaś „normalnie” nie będą, np. w wyniku spadku wartości ciśnienia medium roboczego, które wtedy wykluczy z prawidłowego działania elementy pneumatyczne, które samoczynnie działać nie będą, zaś mogą być sterowane w sposób ręczny.

Rysunek 46: Sieci programowe metody LAD dla Markera M_P-RC o adresie M3.3

2.8. Marker stopu w pozycji początkowej M_STOP PZ od załącznika STOP PZ

Marker M_STOP PZ: M1.5 jest ustawiany powstałym wcześniej Markerem pracy cyklicznej M_P-CY: M3.1 lub sygnałem od wejścia bezpośredniego STOP PZ: I0.7 i przyczynia się do tego, że proces przemysłowy realizowany jest do momentu osiągnięcia pozycji początkowej M1.0. Powyższe warunki ustawiania znacznika M_STOP PZ wynikają po prostu z faktu, iż w rozbudowanym sterowaniu sekwencyjnym z wyborem trybów pracy muszą istnieć warunki, które zatrzymują proces w określonych stanach jego realizacji i marker M_STOP PZ jest takimże. Marker ten zerowany jest markerem startu układu M_START UK: M1.3. Sieci programowe dla realizacji markera M_STOP PZ zilustrowano na rysunku 47.  

Rysunek 47: Sieci programowe metody LAD dla Markera M_STOP PZ o adresie M1.5 


W celu łatwiejszego zapamiętania nazw oraz adresów, które wystąpiły we wcześniej zamieszczonych programach PLC w poniższej tabeli zestawiono je ponownie.

Tabela 3: Nazwy oraz adresy dla sygnałów generowanych dla bloku wyborów trybu pracy. Część 1-sza 

Lp.

Nazwa sygnału

Adres w programie PLC

Warunki powstania sygnału

1.

Marker START

M1.1

Od załącznika START: I0.1

2.

Marker OFF-ON

M1.4

Od wyłącznika (STOP): I0.2 oraz Markera START: M1.1

3.

Marker IMP POZ-POCZ

M1.6

Od sygnałów o pozycji początkowej elementów M1.0

4.

Marker M_P-AUT

M3.0

Od załącznika P-AUT: I0.5

5.

Marker M_P-CY

M3.1

Od załącznika P-CY: I0.3

6.

Marker M_P-KR

M3.2

Od załącznika P-KR: I0.4

7.

Marker M_P-RC

M3.3

Od załącznika P-RC: I0.6

8.

Marker M_STOP PZ

M1.5

Od Markera M_P-CY: M3.1 oraz załącznika STOP PZ: I0.7

Należy zaznaczyć, że wybór adresów dla Markerów widocznych w Tabeli 3 (co zaczerpnięto z wcześniejszych programów modułu trzeciego) został dokonany przez autora losowo, jednak z zachowaniem możliwości takiego wyboru w odniesieniu do rodzaju sterownika PLC, do którego takie programy mogą zostać w przyszłości załadowane. To oznacza, że przestrzeń adresowa określonego sterownika PLC „rządzi” się swoimi prawami. Adresy Markerów w jednym typie sterownika (czytaj: konkretnego producenta) mogą być takie, jak w Tabeli 3, zaś w innym typie należy przydzielić dla Markerów inne adresy. Dokumentacja techniczna sterowników PLC jest zawsze dostępna dla programisty i powinien on sprawdzić w tejże, czy proponowane adresowanie Markerów, które on wybrał jest możliwe do wykorzystania.

3. Sygnały końcowe dla jądra algorytmu SFC

[Jądro algorytmu SFC – część centralna (rdzeń) algorytmu sterowania odpowiedzialna za wykonywanie operacji składowych procesu przemysłowego w określonej kolejności (sekwencji)].

Dobrze wczytując się w warunki powstania sygnałów z Tabeli 3 dostajemy potwierdzenie, że tak naprawdę można je śmiało zaliczyć do tzw. sygnałów przygotowujących w rozbudowanym sterowaniu sekwencyjnym. Zadaniem ich jest przekształcenie sygnałów dostępnych w module wejść sterownika PLC na sygnały, które później wystąpią w programie PLC. Zastosowana przez autora zamiana tychże na Markery jest powszechną praktyką i niejednokrotnie konieczną i powoduje, że w programie PLC używamy adresowania pośredniego.
Należy zaznaczyć, że liczba sygnałów takich jak te w Tabeli 3 może być znacznie większa, co również wzmiankowano. Marker pozycji początkowej M1.0, który wystąpił na rysunku 42 i przyczynił się do powstania innego: Markera IMP POZ-POCZ może być zespołem warunków, których liczba znacznie przekroczy cyfrę „cztery” (z rysunku 42), i które nie będą tylko połączone ze sobą „logicznym” iloczynem, ale również i innymi stosowanym zależnościami logicznymi. Warunki, o których mowa wyżej mogą być nie tylko sygnałami, pochodzącymi z procesu przemysłowego (np. lewe położenie tłoczyska = OK!), ale również mogą być sygnałami pochodzącymi ze sterownika PLC (np. znacznik specjalny mówiący o uruchomieniu CPU sterownika). Jednak jak pokazano dalej „czeka” Czytelnika jeszcze zrozumienie dwóch końcowych sygnałów, które generowane są dla jądra algorytmu SFC z udziałem sygnałów z Tabeli 3.  
 

3.1. Marker M_ON-SFC

Zgodnie z wymaganiami rozbudowanego sterowania sekwencyjnego, przyjętymi w niniejszej publikacji jądro algorytmu SFC powinno zostać uruchomione tylko i wyłącznie w trybie pracy cyklicznej (M_P-CY), trybie pracy krokowej (M_P-KR) oraz automatycznej (M_P-AUT), zaś w momencie przełączania pracującego układu na tryb sterowania ręcznego (M_P-RC) jądro algorytmu SFC powinno zostać zatrzymane. Po przejściu na tryb sterowania ręcznego następuje operowanie procesem np. przy użyciu joysticka. Przejście do ww. trybów jest możliwe wtedy, gdy tym joystickiem elementy układu zostaną sprowadzone do pozycji początkowej. Rysunek 48 ilustruje sieci programowe dla realizacji Markera M_ON-SFC.

Rysunek 48: Sieci programowe w metodzie LAD dla realizacji Markera M_ON-SFC

Dla celów realizacji poprawnych zależności logicznych w celu utworzenia Markera M_ON-SFC:M2.3 wprowadzono trzy markery pomocnicze o adresach: M5.0, M5.1 i M5.2 (patrz pierwsze trzy sieci programowe). Markery pomocnicze w każdym programie PLC można nazwać komórkami pamięci, które przechowują tzw. wynik operacji logicznej RLO (ang. Result Logic Operation) dla celów użycia jej w innych sieciach programowych. Liczba takich komórek pamięci dla programu PLC jest olbrzymia w stosunku do liczby możliwych adresów wejść lub wyjść w konfiguracji sterownika PLC. Należy zaznaczyć, że powyższa konstrukcja sieci programowych była spowodowana tym, że dysponowano takim a nie innym środowiskiem narzędziowym, czyli STEP7 w „odmianie” MicroWin4.0. (Na przykład przy odmianie Professional powyższy program „zmieściłby” się w jednej sieci). Jak widzimy z rysunku 48 spełnienie odpowiednich warunków, opisanych z nazwy w Tabeli 3 spowoduje powstanie Markera M_ON-SFC, który (jak zobaczymy w dalszej części tekstu) uruchomi działanie jądra algorytmu SFC.

3.2. Marker M_OFF-SFC

Jest oczywiste, że działaniem przeciwstawnym do uruchomienia jądra algorytmu SFC za pośrednictwem markera M_ON-SFC powinno być zatrzymanie w działaniu tego jądra algorytmu SFC. Jest to robione za pośrednictwem Markera M_OFF-SFC o adresie b. Warunki, które muszą być spełnione jednocześnie, aby powstał te marker są następujące: pozycja początkowa elementów procesu M1.0 = 1, pobudzenie wyłącznika awaryjnego WA: I0.0 = ON oraz tzw. Marker M_START: M1.3 = 0 (omówiony w następnym punkcie). Bezwarunkowe powstanie Markera M_OFF-SFC: M2.4 następuje przy wybraniu trybu sterowania ręcznego, czyli b. Sieci programowe tworzące ten marker w metodzie LAD zilustrowano na rysunku 49. 

Rysunek 49: Sieci programowe w metodzie LAD dla realizacji Markera M_OFF-SFC

3.3. Marker M_START

Na pewno Czytelnik zauważył, że zrozumienie funkcji oraz działania omówionych sygnałów dla jądra algorytmu SFC nie jest rzeczą łatwą. No cóż, rozważamy przecież rozbudowane sterowanie sekwencyjne, nie zaś proste programy PLC, które można szybko przeanalizować, gdyż zawierają się w kilku prostych Networkach. 
Należy nadmienić, że autor starał się zilustrować sygnały przygotowujące w takim porządku ich wystąpienie, aby w kolejnym omawianym sygnale wystąpiły te, które już zostały przed nim omówione. Oczywiście nie zawsze się to udało. Przedostatnim sygnałem, który możemy nazwać przygotowującym jest Marker M_START: M1.3, którego utworzenie ilustrują sieci programowe na rysunku 50. 

Rysunek 50: Sieci programowe w metodzie LAD dla realizacji Markera M_START
Należy zaznaczyć, że oprócz jednego, tj. M10.0 wszystkie sygnały z rysunku 50 są już znane Czytelnikowi. Sygnał ten, a w zasadzie znacznik wraz z innymi „nowymi” zostanie omówiony w dalszej części tekstu. W tym miejscu tylko zaznaczmy, że pochodzi on z jądra algorytmu SFC i oznacza pierwszy z etapów realizacji procesu przemysłowego, które będziemy nazywać krokami algorytmu SFC.

3.4. Marker sterowania wyjściami w trybach pracy układu M_WY

Należy zaznaczyć, że dopiero włączenie danego trybu pracy układu powinno zezwolić na uruchomienie wyjść, które jak wiemy sterują np. układami wykonawczymi procesu przemysłowego, ale przy odpowiednich uwarunkowaniach dotyczących danego trybu pracy. Na przykład pobudzenie załącznika P-KR: I0.4, powodujące załączenie trybu krokowego Markerem M_P-KR: M3.3 powinno umożliwić pracę krokową ale łącznie z użyciem dodatkowego załącznika, dostępnego z pulpitu sterującego. Tym załącznikiem w niniejszych wyjaśnieniach jest P-KR-WY o adresie I1.0 w drugim module wejść sterownika PLC. Pierwszy moduł z wejściami I0.0¸I0.7 pokazano na rysunku 36, zaś drugi z ww. adresem pokazano na rysunku 51. Dalej, wzmiankowane sterowanie wyjściami sterownika PLC dla dwóch pozostałych trybów, tj. pracy automatycznej (Marker M_P-AUT: M3.0) oraz cyklicznej (Marker M_P-CY: M3.1) nie powinno być obwarowane dodatkowymi warunkami, co widać na rysunku 52. 

Rysunek 51: Drugi moduł wejść sterownika PLC z przyciskiem pulpitu sterującego P-KR-WY o adresie I1.0 

Rysunek 52: Sieci programowe w metodzie LAD dla realizacji Markera M_WY

W tabeli 4 zestawiono pozostałe cztery sygnały, które są generowane dla bloku wyboru trybów pracy.

Tabela 4: Nazwy oraz adresy dla sygnałów generowanych dla bloku wyborów trybu pracy. Część 2-ga

Lp.

Nazwa sygnału

Adres w programie PLC

Warunki powstania sygnału

9.

Marker M_ON-SFC

M2.3

Ustawiany trybami pracy: M_P-AUT, M_P-CY i M_P-KR, zaś kasowany M_P-RC

10.

Marker M_OFF-SFC

M2.4

Od wyłącznika WA, markera warunków początkowych oraz Markera M_START

11.

Marker M_START

M1.3

Ustawiany trybami i krokiem nr „0”, zaś zerowany m.in. WA

12.

Marker M_WY

M2.6

Od trybów pracy oraz przycisku P-KR-WY


 

4. Jądro algorytmu SFC

Jak już zostało wspomniane w definicji jądro algorytmu SFC to część centralna algorytmu, która odpowiedzialna jest za wykonywanie operacji (etapów, kroków) procesu przemysłowego w określonej kolejności, czyli sekwencji. Autor niniejszego opracowania już wyjaśniał Czytelnikowi pojęcie sieci Petriego i ich znaczenie dla rozwoju grafów algorytmów. Struktury te nie zrobiły niczego innego, jak tylko sformalizowały w „ładny” sposób opis działania procesów (czytaj: procesów przemysłowych). To, że od tamtego momentu „coś”, co się przyczynia do zmiany poprzedniego etapu procesu na kolejny nazywamy tranzycją lub warunkami przejścia jest tylko nazewnictwem, które jednemu się podoba a innemu nie. Gdyby nazwa była inna tego „coś”, to i tak jego znaczenie nie zmieniłoby się. W dalszym ciągu, aby pojawił się określony skutek, to najpierw musi pojawić się przyczyna. Jak to nazwiemy, to „na papierze” nie będzie miało znaczenia, ale znaczenie będzie miało to, jak to „rozegra” maszyna cyfrowa typu sterownik PLC. 
Autor już wspomniał, że rozwój oprogramowania w dziedzinie tworzenia programów sterujących dla sterowników PLC doprowadził do tego, że obecnie obok opracowanych wcześniej edytorów programu typu STL czy LAD zaczął funkcjonować edytor grafu SFC. Przykładem może być oprogramowanie ISAGraph dla sterowników PLC firmy PEP Modular Computers. W edytorze tego środowiska można tworzyć graf SFC „słuchając” podpowiedzi programu i gotowe. Niektórzy zaczęli nazywać to już programowaniem sterownika, zaś tym, że jest to raczej rysowanie niż programowanie nie zaprzątają sobie głowy. Bezsporną cechą dodatnią tych środowisk jest jednak to, że producent takiego oprogramowania wbudował w taki edytor SFC mechanizmy, które zapewniają „przełożenie” narysowanych linii, bloczków, itp. na gotowy kod programu PLC dla sterownika. Jednak cechą ujemną tych środowisk jest niestety to, że nie występują w danym oprogramowaniu narzędziowym jako standard, tylko jako opcja, za którą producent karze sobie słono płacić. Zatem pozostaje programiście tworzenie programu PLC dla realizacji algorytmu SFC tradycyjną metodą, czyli poprzez użycie znanych i lubianych edytorów programu typu LAD czy FBD. W niniejszej publikacji autor się tym właśnie zajął.
Autor podkreśli, że w poprzednim punkcie zilustrował powstanie kilkunastu sygnałów, które muszą pojawić się, abyśmy mogli mówić o rozbudowanym sterowaniu sekwencyjnym. Tak naprawdę, to większość z nich musiała pojawić się tylko po to, aby w konsekwencji, jak się niedługo okaże wygenerować dwa najważniejsze sygnały dla jądra algorytmu SFC: Marker M_ON-SFC i Marker OFF-SFC. Pierwszy z nich zezwala a drugi nie pozwala na rozwój algorytmu SFC. Oczywiście, jak Czytelnik się uważnie przyjrzy wszystkiemu, co przyczyniło się to powstania tych dwóch markerów to sam dojdzie do te samego wniosku. 
Ponieważ, co już powiedziano, zajmujemy się tworzeniem programu PLC dla algorytmu SFC, to sami musimy zadbać o taką realizację programu PLC, aby spełniał on zasady nałożone na działanie algorytmu SFC. Dwie najważniejsze z nich to: po pierwsze każdy algorytm SFC musi mieć tylko jeden krok zerowy, oraz po drugie wywołanie kroku następnego musi spowodować „unieszkodliwienie” kroku poprzedniego (ale niekoniecznie unieszkodliwienie działań rozpoczętych w tym kroku). Czyli to, co na grafie SFC wygląda jako prostokąt (lub kwadrat) i linia łącząca z warunkiem przejścia, musi mieć odzwierciedlenie w postaci użycia instrukcji programu
 

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. 
 

4.2. Algorytm SFC ze sterowaniem układami wykonawczymi

Należy zaznaczyć, że aby w pełni przedstawić rozbudowane sterowanie procesami przemysłowymi, czyli sterowanie z użyciem wyjaśnionego już bloku wyboru trybów pracy należy uzupełnić jądro naszego przykładowego algorytmu SFC z rysunku 54 o sterowanie „jakimiś” tam układami wykonawczymi, czyli aby nasz algorytm zawierał tzw. bloki działania. 
Bloki działania w algorytmie SFC są powiązane z krokami (etapami procesu) i służą do uruchamiania działań, które zazwyczaj kojarzą się ze sterowaniem urządzeń wykonawczych. Nie zawsze tak jest, ale „na początek” nam to wystarczy. Zatem przyjmijmy, że w każdym kroku algorytmu z rysunku 54 wystąpi blok działania, w którym będziemy sterować urządzeniem wykonawczym, czyli tak naprawdę adresem pojedynczego wyjścia z modułu wyjść sterownika o zakresie adresów również jednego Bajtu, czyli Q0.0 do Q0.7. Analogicznie jak to miało miejsce już wcześniej na rysunku 57 zilustrowano moduł wyjść sterownika PLC z podłączonymi doń urządzeniami wykonawczymi, których adresy użyto w zmodyfikowanym algorytmie SFC, zilustrowanym z kolei na rysunku 58.

Rysunek 57: Moduł wyjść sterownika PLC o adresach Q0.0  Q0.7 z podłączonymi dwoma urządzeniami wykonawczymi

 

Rysunek 58: Jądro algorytmu SFC sterujące z blokami działania

Zewnętrznemu użytkownikowi układ sterowania PLC, który realizuje algorytm SFC z rysunku 58 pokaże, że po uruchomieniu układu sterowania zostaną natychmiast i jednocześnie załączone dwa urządzenia wykonawcze: UWY_1: Q0.0 i UWY_2: Q0.1, po czym zapalenie Tranzycji T1: I1.2 wyłączy natychmiast urządzenie UWY_1, by następnie zapalenie Tranzycji T2: I1.3 wyłączy urządzenie UWY_2. Widzimy z rysunku 58, że zapalenie Tranzycji T0: I1.1 przywróci stan początkowy procesu przemysłowego. Taki proces może być kontynuowany nieustannie. Działania, które zobaczył zewnętrzny obserwator były możliwe dzięki dołączeniu do poszczególnych kroków bloków działania, w których to wpisano te czynności dla urządzeń wykonawczych z odpowiednimi „poleceniami”. „Nie owijając w bawełnę” przedstawmy zatem uzupełniony o te bloki działania program PLC dla jądra algorytmu SFC z rysunku 58. 

 

Rysunek 59: Sieci programowe w metodzie LAD dla realizacji algorytmu SFC z rysunku 58 z blokami działania

 

W programie PLC z rysunku 59 bloki działania zgodnie z algorytmem SFC z rysunku 58 zrealizowane są w sieciach programowych Network 2, Network 4 i Network 6, sterując odpowiednio załączeniem (instrukcja S) obu urządzeń wykonawczych UWY_1 i b, by następnie je kolejno wyłączać (instrukcja R). 
 

4.3. Programowe powiązanie bloku wyboru trybów pracy z jądrem algorytmu SFC

Należy zaznaczyć, że konstrukcja jądra algorytmu SFC z rysunku 58 jest typowym rozwojem prostym algorytmu, który może być zrealizowany dla dowolnej liczby kroków, przewidzianych dla kontrolowanego procesu przemysłowego. Liczba wierszy w blokach działania może być różna w zależności od potrzeb sterowania odpowiednią liczbą urządzeń wykonawczych. To dotyczy również wszelkiego rodzaju rozgałęzień algorytmu SFC jak również dla sterowania współbieżnego, o którym niniejsza publikacja również traktuje. Jednak bez dodatkowych działań na jakimkolwiek rodzaju rozwoju algorytmu SFC nie będzie on jeszcze rozbudowanym sterowaniem sekwencyjnym w rozumieniu niniejszej publikacji. Istotnym „brakującym” elementem jest niepowiązanie jądra algorytmu SFC z rysunku 58 z blokiem wyboru trybów pracy, a konkretnie z dwoma (na razie) jego sygnałami, które generowane są jako efekt dokonanego przez operatora wyboru, tj. sygnału M_ON-SFC: M2.3 oraz M_OFF-SFC: M2.4 (patrz: Tabela 4). Rysunek 60 ilustruje postać algorytmu z rysunku 58, ale uzupełnioną symbolicznie o te dwa sygnały sterujące, które muszą być odpowiednio wprowadzone do programu PLC. Zaznaczmy jako obowiązkowe, że rozważamy cały czas konstrukcję algorytmu SFC w programie PLC (nie zaś „piszemy” program metodą SFC np. w środowisku ISAGraph), zatem w „formalnym” grafie algorytmu SFC zgodnie z normą EN 61131-3 sygnałów tych (i innych występujących w programie PLC) nie zobaczymy.   

Rysunek 60: Algorytmu SFC z sygnałami z bloku wyboru trybów pracy 

Analizując zmodyfikowany algorytm SFC z rysunku 60 uważny Czytelnik na pewno zauważy, że oprócz wprowadzenia do tego algorytmu dwóch sygnałów, tj. M2.3 i M2.4, które mają za zadanie odpowiednio uruchomić lub zatrzymać jądro algorytmu SFC, pojawiło się również nieznaczne uproszczenie struktury algorytmu, wynikające z wykorzystania innych identyfikatorów rozkazów w pozostawionych blokach działania. Zamiast identyfikatorów o oznaczeniu S i R zastosowano identyfikator o oznaczeniu N. Przypomnijmy, że różnica jest taka, iż identyfikatory S i R odpowiednio zapisują lub zerują działanie w pamięci programu PLC w danym kroku, w którym wystąpią, zaś identyfikator N powoduje, że działanie określone tymże identyfikatorem wystąpi tylko wtedy, gdy zaistnieje dany krok. Zachowując zatem działania w blokach działania w odniesieniu do algorytmu SFC z rysunku 58 nowy algorytm także steruje załączeniem dwóch urządzeń wykonawczych UWY_1 i UWY_2 w Kroku nr 0, wyłącza sterowanie jednym urządzeniem wykonawczym UWY_1 w Kroku nr 1 pozostawiając sterowanie tylko UWY_2 i na koniec wyłącza wreszcie to sterowanie urządzeniem wykonawczym UWY_2 w Kroku nr 2. Zatem dla zewnętrznego użytkownika działania obu tych algorytmów SFC są identyczne. 
Wprowadzenie dwóch sygnałów pochodzących z bloku wyboru trybów pracy, tj. M2.3 lub M2.4 przypomnijmy, że ma za zadanie oddziaływać na wszystkie kroki algorytmu w przewidziany blokiem wyboru trybów pracy sposób, czyli Marker M_ON-PLC powinien zezwalać na pracę jądra algorytmu SFC, zaś Marker M_OFF-PLC powinien blokować realizację jądra algorytmu SFC. Dodatkowo ten ostatni powinien „przyczynić” się do powstania znacznika Kroku nr 0 zamiast znacznika specjalnego SM0.1, który został użyty tylko dla przykładu. Zmodyfikowany program dla algorytmu z rysunku 60 ilustruje rysunek 61.