Gdy przycisk chwilowy ma uruchomić maszynę tylko raz, a czujnik powinien zwiększyć licznik o jedną sztukę zamiast robić to w każdym cyklu programu, potrzebna jest detekcja zmiany sygnału. W automatyce zbocze narastające oznacza przejście wejścia ze stanu 0 do stanu 1. Wyjaśniam, jak działa ten mechanizm, gdzie stosuje się go w sterownikach PLC i jak uniknąć błędów związanych ze skanowaniem programu, drganiami styków oraz zbyt krótkimi impulsami.
Jedna zmiana sygnału może uruchomić dokładnie jedną reakcję
- Przejście 0 → 1 oznacza pojawienie się zbocza narastającego.
- Detektor generuje zwykle impuls trwający jeden cykl PLC, nawet gdy wejście pozostaje aktywne dłużej.
- Mechanizm przydaje się do zliczania, wyzwalania napędów, startu sekwencji i rejestracji zdarzeń.
- Do wykrywania zmiany sterownik porównuje bieżący stan z zapamiętanym stanem poprzednim.
- Przy szybkich impulsach zwykły cykl programu może nie wystarczyć, dlatego potrzebne bywają wejścia szybkich liczników lub przerwania sprzętowe.
Co naprawdę oznacza przejście z 0 na 1
Sygnał cyfrowy może mieć dwa podstawowe stany logiczne. Stan 0 oznacza brak aktywności, a stan 1 potwierdza aktywację wejścia. Zmiana z 0 na 1 jest zdarzeniem chwilowym, dlatego odróżniam ją od samego faktu, że wejście pozostaje w stanie wysokim.
Najprościej wyobrazić to sobie na przykładzie przycisku START. Po naciśnięciu wejście zmienia stan z 0 na 1. Jeśli przycisk zostanie przytrzymany przez dwie sekundy, sygnał nadal ma wartość 1, ale zbocze wystąpiło tylko w chwili naciśnięcia.
| Stan poprzedni | Stan bieżący | Rodzaj zdarzenia |
|---|---|---|
| 0 | 0 | Brak zmiany |
| 0 | 1 | Zbocze narastające |
| 1 | 1 | Sygnał pozostaje aktywny |
| 1 | 0 | Zbocze opadające |
W praktyce używam tego rozróżnienia zawsze wtedy, gdy reakcja ma nastąpić raz, a nie przez cały czas trwania sygnału. Zwykły warunek logiczny odpowiada na pytanie „czy wejście jest aktywne?”, natomiast detekcja zbocza odpowiada na pytanie „czy właśnie zostało aktywowane?”.
Jak sterownik PLC wykrywa zmianę sygnału
Sterownik musi zapamiętać poprzedni stan kontrolowanego wejścia. W uproszczeniu porównuje go z aktualną wartością i ustawia wyjście detektora wtedy, gdy poprzednio było 0, a teraz pojawiła się 1.
Impuls = StanBiezacy AND NOT StanPoprzedni
StanPoprzedni = StanBiezacy
Wynik takiego działania jest zwykle aktywny przez jeden skan programu. Jeżeli cykl sterownika trwa 10 ms, impuls logiczny będzie dostępny przez około 10 ms, choć dokładny czas zależy od momentu odczytu wejść i wykonania programu.
W języku Structured Text często korzysta się z bloku funkcyjnego R_TRIG. Przykład może wyglądać tak:
VAR
DetektorStart : R_TRIG;
ImpulsStart : BOOL;
END_VAR
DetektorStart(CLK := PrzyciskStart);
ImpulsStart := DetektorStart.Q;
Blok przechowuje stan z poprzedniego wywołania. Na wyjściu Q pojawia się krótki impuls tylko przy zmianie wejścia CLK z 0 na 1. W drabince LAD odpowiednikiem może być styk impulsowy, instrukcja P lub dedykowany element wykrywania dodatniego przejścia. Nazwa zależy od producenta sterownika, ale zasada działania pozostaje taka sama.
Trzeba pamiętać, że detektor korzysta z pamięci stanu. Jeśli ten sam blok zostanie przypadkowo użyty w kilku miejscach programu albo otrzyma niezmienny bit pamięci pomocniczej, wynik może być nieprzewidywalny. Każda detekcja powinna mieć własny, poprawnie zarządzany stan poprzedni.
Gdzie wykorzystuje się impuls z narastającego przejścia
Najczęstsze zastosowanie to uruchamianie czynności po pojedynczym naciśnięciu przycisku. Zamiast sterować cewką napędu bezpośrednio stanem wejścia, generuję impuls i przekazuję go do logiki SET/RESET, sekwencji albo bloku sterowania ruchem.
Start i zatrzymanie procesu
Przycisk START może być fizycznie przytrzymany przez operatora, ale maszyna nie powinna wielokrotnie rozpoczynać tej samej procedury. Detekcja przejścia pozwala wywołać jedno zdarzenie startowe, a dalszym podtrzymaniem pracy zajmuje się osobna logika.
Podobnie działa przełączanie trybu pracy jednym przyciskiem. Każde naciśnięcie generuje impuls, który może zmienić stan urządzenia z AUTO na MANUAL albo odwrotnie. Nie należy jednak traktować impulsu jako pamięci stanu, ponieważ po jednym cyklu znika.
Zliczanie produktów i impulsów
Czujnik fotoelektryczny wykrywający produkt może pozostawać zasłonięty przez kilka cykli programu. Jeśli licznik zostanie podłączony bezpośrednio do poziomu logicznego, jeden produkt może zostać zliczony wiele razy. Detektor przejścia ogranicza reakcję do jednego zwiększenia wartości dla pojedynczego pojawienia się sygnału.
W tym zastosowaniu trzeba sprawdzić, czy między kolejnymi produktami sygnał rzeczywiście wraca do 0. Jeśli czujnik pozostaje stale aktywny, kolejny impuls nie zostanie wygenerowany. To częsty problem przy źle ustawionej odległości czujnika, zbyt dużym produkcie albo niewłaściwej logice aktywnego poziomu.
Wyzwalanie sekwencji i zapisywanie zdarzeń
Impuls nadaje się do rozpoczęcia kroku w sekwencji SFC, zapisania czasu zdarzenia, wykonania jednorazowego pomiaru albo wysłania polecenia do innego modułu. W systemach warsztatowych może to być rejestracja przejścia krańcówki, rozpoczęcie cyklu siłownika czy zapamiętanie momentu osiągnięcia pozycji.
Sam impuls nie rozwiązuje jednak problemu synchronizacji. Jeśli urządzenie wykonawcze wymaga potwierdzenia, stosuję dodatkowo sygnał DONE, timeout oraz warunek błędu. Dzięki temu program nie zakłada, że każde wyzwolenie zakończyło się powodzeniem.
Detekcja poziomu, zbocze narastające i opadające
Trzy mechanizmy często są mylone, choć służą do różnych zadań. Poziom logiczny utrzymuje działanie tak długo, jak długo wejście jest aktywne. Zbocze narastające reaguje na włączenie, a zbocze opadające na wyłączenie sygnału.
| Mechanizm | Kiedy działa | Przykładowe użycie |
|---|---|---|
| Poziom 1 | Przez cały czas aktywności wejścia | Praca wentylatora przy aktywnym termostacie |
| Przejście 0 → 1 | W chwili aktywacji sygnału | Start cyklu, zliczenie produktu, zapis zdarzenia |
| Przejście 1 → 0 | W chwili zaniku sygnału | Wykrycie zwolnienia przycisku lub opuszczenia strefy |
Ja wybieram detekcję zmiany wtedy, gdy zdarzenie ma zostać obsłużone jednokrotnie. Do sterowania ciągłego używam poziomu, bo sztuczne zamienianie go na impuls komplikuje program i może utrudnić diagnostykę.
Przykładowo, sygnał „osłona zamknięta” powinien zwykle być sprawdzany jako poziom, ponieważ maszyna ma pracować tylko przy stale spełnionym warunku bezpieczeństwa. Natomiast sygnał „produkt minął czujnik” może wymagać impulsu, szczególnie gdy ten sam element zasłania czujnik przez dłuższą chwilę.
Najczęstsze problemy podczas pracy ze zboczem
Drgania styków mechanicznych
Przycisk lub przekaźnik nie zawsze zmienia stan idealnie jeden raz. W pierwszych milisekundach po naciśnięciu styk może wielokrotnie przełączać się między 0 i 1. Sterownik może wtedy wykryć kilka przejść, mimo że operator nacisnął przycisk tylko raz.
Rozwiązaniem jest filtr wejściowy, programowe opóźnienie, blokada czasowa albo przycisk elektroniczny z odpowiednim układem eliminacji drgań. Przy zwykłym panelu operatorskim często wystarcza filtr rzędu 10-50 ms, ale jego wartość trzeba dobrać do szybkości procesu. Zbyt duży filtr opóźni reakcję i może pogorszyć pracę szybkiej maszyny.
Zbyt szybki impuls
Typowy PLC odczytuje wejścia w określonym rytmie. Jeżeli impuls pojawi się i zniknie pomiędzy dwoma odczytami, program go nie zauważy. Dotyczy to między innymi enkoderów, liczników obrotów i czujników generujących impulsy krótsze niż czas cyklu.
W takiej sytuacji potrzebne może być wejście szybkiego licznika, sprzętowe zatrzaskiwanie impulsu albo przerwanie od wejścia cyfrowego. Zwiększenie częstotliwości wykonywania programu nie zawsze rozwiązuje problem, ponieważ ograniczeniem może być sam moduł wejściowy i jego filtracja.
Brak powrotu sygnału do zera
Detektor nie wygeneruje kolejnego impulsu, dopóki sygnał nie przejdzie ponownie do stanu 0. Przy czujnikach sprawdzam więc nie tylko moment pojawienia się jedynki, ale też czas trwania stanu wysokiego i warunki powrotu do stanu spoczynkowego.
Dobrym testem jest obserwacja trendu lub tabeli zmiennych online. Jeśli wejście cały czas ma wartość 1, problem nie leży w instrukcji wykrywania zmiany, tylko w geometrii detekcji, okablowaniu, polaryzacji albo ustawieniu czujnika.
Przeczytaj również: MQTT w automatyce - jak działa broker, topic i QoS?
Nieprawidłowy stan początkowy
Po uruchomieniu sterownika detektor może potraktować pierwszy odczyt jako zmianę, jeśli pamięć poprzedniego stanu została wyzerowana, a wejście fizycznie jest już w stanie 1. W niektórych procesach spowoduje to niezamierzony start albo zwiększenie licznika.
Przy krytycznych funkcjach stosuję inicjalizację pamięci poprzedniego stanu, warunek zezwolenia na pracę oraz blokadę pierwszego cyklu. Dzięki temu program nie interpretuje samego włączenia zasilania jako świadomego działania operatora.
Jak dobrać rozwiązanie do konkretnej aplikacji
Przed użyciem detektora sprawdzam cztery rzeczy. Interesuje mnie, czy sygnał jest mechaniczny czy elektroniczny, jak długo trwa impuls, jak często może się pojawiać i czy reakcja ma nastąpić w programie, czy sprzętowo.
- Określ zdarzenie i odpowiedz, czy potrzebujesz reakcji na aktywację, dezaktywację czy ciągły stan.
- Zmierz czas impulsu oraz typowy czas cyklu sterownika.
- Sprawdź powtarzalność sygnału, zwłaszcza przy przyciskach, przekaźnikach i czujnikach mechanicznych.
- Wybierz blok lub instrukcję właściwą dla środowiska PLC, na przykład R_TRIG, styk impulsowy albo funkcję producenta.
- Dodaj diagnostykę, czyli licznik wykrytych impulsów, sygnał błędu i ewentualny timeout.
Jeśli steruję siłownikiem lub napędem, nie kończę logiki na samym impulsie startowym. Dodaję potwierdzenie wykonania, kontrolę czasu oraz możliwość bezpiecznego zatrzymania. W prostym układzie przycisku wystarczy detektor i przerzutnik, ale w maszynie produkcyjnej potrzebna jest pełna obsługa stanów i błędów.
Warto też rozróżnić sygnał z wejścia fizycznego od zmiennej programowej. Zmiana bitu w programie może być natychmiastowa, natomiast wejście zewnętrzne podlega filtrowaniu, opóźnieniu modułu i cyklowi odświeżania. To właśnie te drobne różnice często decydują o tym, czy licznik pracuje poprawnie.
Co zapamiętać przed uruchomieniem programu
Najważniejsza zasada jest prosta: poziom mówi, że coś trwa, a zbocze mówi, że coś właśnie się wydarzyło. Ta różnica wystarcza, aby poprawnie dobrać sposób obsługi przycisku, czujnika, krańcówki czy impulsu z enkodera.
W typowej aplikacji PLC detekcja przejścia z 0 na 1 daje impuls na jeden cykl programu. Trzeba jednak uwzględnić drgania styków, czas trwania sygnału, stan początkowy oraz możliwość przeoczenia zbyt szybkiego impulsu.
Moim zdaniem najlepiej zaczynać od wykresu czasowego. Gdy rozrysuję stan wejścia, moment odczytu przez sterownik i oczekiwany sygnał wyjściowy, większość problemów z detekcją staje się widoczna jeszcze przed uruchomieniem maszyny.