1. Zasady tworzenia rozbudowanych programów sekwencyjnych

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.