Przerwania

Opublikowano

Przerwania - wejścia cyfrowe

PLC skanuje wejścia cyklicznie. Jeżeli zmiana sygnału nastąpi między cyklami program może zareagować z opóźnieniem. Szybka reakcja jest często niezbędna w układach automatyki, na pomoc temu problemowi przychodzą przerwania wejść cyfrowych. 

Konfiguracja PLC na podstawie przykładowego programu

Szybkie przerwania używane są np. dla czujników krańcowych, gdzie krótki czas reakcji jest niezbędny by szybko zatrzymać mechanizm w przypadku osiągniecia określonej pozycji. W przykładowym programie czujnik jest podłączony do wejścia cyfrowego X1 i pracuje w logice odwróconej (aktywny niski). Gdy czujnik da sygnał, sterownik wyłącza siłownik pneumatyczny. 

  1. Kliknąć Konfiguracja we/wy 
  2. Wejść w zakładkę Przerwania sprzętowe 
  3. Wybrać wejście odpowiadające za przerwanie oraz na jakie zbocze ma reagować. 
Konfiguracja we_wy
Konfiguracja we_wy

Czujnik posiada aktywny stan niski, więc prawidłowym wyborem jest by sterownik reagował na zbocze opadające.

Przypisanie przerwania wejściu
Przypisanie przerwania wejściu

Następnie zatwierdzić wybór klikając OK. Prawym przyciskiem myszy kliknąć w Programy przerwań sprzętowych a następnie Dodaj program obsługi przerwania sprzętowego. 

Dodanie obsługi przerwania sprzętowego w drzewku projektu
Dodanie obsługi przerwania sprzętowego w drzewku projektu

Tworząc nowy program obsługi przerwania sprzętowego, należy na początku określić, typ przerwania sprzętowego oraz w jakim języku zostanie napisany program. Następnie zatwierdzić wybór klikając OK.  

Określenie typu przerwania sprzętowego
Określenie typu przerwania sprzętowego

Następnie należy napisać program, w utworzonej zakładce przerwań. Sterownik zareaguje na zbocze opadające na wejściu X1, co spowoduje wykonanie procedury przerwania – zostanie zresetowane wyjście Y0 przypisane do tagu „siłownik”. 

Osobna zakładka dla przerwania
Osobna zakładka dla przerwania

Przerwania – zegar cykliczny

Przerwania zegarowe w PLC to mechanizm umożliwiający wykonywanie określonego fragmentu kodu w stałych odstępach czasu, niezależnie od czasu skanowania programu głównego. Działają one priorytetowo względem cyklu głównego i są niezbędne w aplikacjach, w których krytyczny jest stabilny czas reakcji. 

Dostępne zegary cykliczne (przerwania)

Przerwania w PLC Fatek serii M dzielą się na STM, LTM i HST. Gdzie w STM jednostką czasu jest 1ms, LTM to 10 ms, a dla HST to 0.1 ms. 

Dostępne zegary cykliczne
Dostępne zegary cykliczne

W sekcji Tagi systemowe znajdują się informacje określające, który rejestr odpowiada za wartość zadaną oraz który rejestr przechowuje wartość bieżącą danego przerwania. W przykładowym programie zostanie użyte przerwanie $STM1 w którym wartości PV (wartość zadana) oraz CV (wartość bieżąca) odpowiadają rejestry odpowiednio: R35437, R35438. Dane poszczególnych przerwań pokazują tabele poniżej: 

Tagi systemowe
Tagi systemowe

Przed użyciem danego przerwania należy aktywować przypisany mu bit, inaczej nie będzie wywoływane przez sterownik.  

Przypisane bity do przerwań
Przypisane bity do przerwań

Konfiguracja PLC na podstawie przykładowego programu

W przykładowym programie zostanie wykorzystane przerwanie zegarowe $STM1$, skonfigurowane z interwałem 10 ms.  

W programie głównym Main należy wykonać następujące czynności: 

  1. Aby konfiguracja została wykonana jednokrotnie po uruchomieniu sterownika, należy użyć bitu pomocniczego $CLK_PULSE_INIT, który przyjmuje stan wysoki wyłącznie podczas pierwszego cyklu skanowania programu. 
  2. Aktywować bit sterujący  $STM1_CTRL, przypisany do przerwania $STM1, za pomocą instrukcji SET. Bit ten może być również włączany i wyłączany w trakcie działąnia programu w zależności od potrzeb użytkownika. 
  3. Ustawić wartość zadaną przerwania na 10 ms, wykorzystując w tym celu instrukcję MOV. 
Konfiguracja w Main
Konfiguracja w Main

Następnie należy nacisnąć prawym przyciskiem myszy na Programy przerwań sprzętowych. A następnie Dodaj program obsługi przerwania sprzętowego. 

Dodanie obsługi przerwania sprzętowego w drzewku projektu
Dodanie obsługi przerwania sprzętowego w drzewku projektu

W oknie konfiguracji należy wskazać źródło przerwania – w tym przypadku zegar STM1I oraz wybrać język, w którym zostanie zaimplementowana procedura obsługi przerwania. 

Określenie typu przerwania
Określenie typu przerwania

Następnie po zatwierdzeniu przyciskiem OK, przejść do programowania obsługi cyklicznego przerwania sprzętowego:

Program w przerwaniu

Dzięki temu został uzyskany sygnał pulsujący na wyjściu Y1 z odstępem czasowym 10ms.

Przerwania od szybkiego licznika

Czas cyklu sterownika jest zazwyczaj dłuższy niż okres występowania szybkich impulsów, co może prowadzić do ich pominięcia. Problem ten eliminują przerwania od szybkich liczników (HSCI – High Speed Counter Interrupt), które są realizowane równolegle i niezależnie od cyklu skanowania programu głównego.

Sposoby zliczania sygnałów

Sterowniki Fatek serii M dają możliwość 6 sposobów zliczania impulsów. 

Sposoby zliczania sygnałów
Sposoby zliczania sygnałów

Up-down pulse

W trybie U zbocza narastające na wejściu UP zwiększają wartość licznika o 1, natomiast zbocza narastające na wejściu DOWN zmniejszają jego wartość o 1. W trybie U×2 licznik reaguje zarówno na zbocza narastające, jak i opadające sygnału. 

Pulse-direction

W trybie Pulse–Direction sygnał podany na wejście Direction (R) określa kierunek zliczania, natomiast impulsy pojawiające się na wejściu Pulse (P) powodują zmianę wartości licznika. W zależności od stanu wejścia Direction, impulsy z wejścia Pulse będą zwiększały lub zmniejszały wartość licznika. Stan wysoki na wejściu Direction powoduje odwrócenie kierunku zliczania. 

Zliczanie sygnałów w Pulse-Direction
Zliczanie sygnałów w Pulse-Direction

AB phase

Sygnały A oraz B są przesunięte fazowo na wykresie czasu względem siebie. Gdy pierwszy pojawia się sygnał A wartość licznika będzie rosła, gdy pierwsza będzie pojawiać się faza B wartość licznika będzie maleć. W wersji A/B zliczane są tylko zbocza narastające fazy A. W wersji A/B×2 zliczane są zbocza narastające oraz opadające fazy A. W wersji A/B×4 zliczane są zbocza narastające oraz opadające fazy A oraz B.

Przykładowy problem i rozwiązanie

Silnik napędza podajnik materiału, który ma zostać pocięty na zadane długości poprzez nóż. Do sterownika jest podpięte sprzężenie zwrotne z enkodera, oraz czujnik informujący nas o obecności materiału. W razie skończenia się go, proces ma zostać zatrzymany. Aby zrealizować tą aplikację zaczniemy od konfiguracji szybkiego licznika. Na wejście X0 i X1 będą podawane fazy A i B z enkodera. Wybierzemy tryb zliczania A/B*4, w którym będą zliczane zbocza narastające i opadające na każdej z faz enkodera. Wejście X2 jest to sygnał maski, po jego podaniu sterownik przestaje zliczać impulsy przychodzące z enkodera. Sygnał X3 pozwala na wyzerowanie licznika.

Praktyczny problem wizualizacja
Praktyczny problem wizualizacja

W programie: 

Należy w drzewie projektu wejść w Konfiguracje we/wy.

Konfiguracja we_wy
Konfiguracja we_wy

Następnie w programie głównym Main: 

Odwołanie w programie głównym Main
Odwołanie w programie głównym Main

Do wejść X0 oraz X1 przypisany jest licznik HSC0. Zgodnie z założeniem należy wybrać tryb A/B*4 oraz przypisać wejście Fazy-A, Fazy-B, Maski oraz zerowania. 

Szybkie liczniki sprzętowe ustawienie
Szybkie liczniki sprzętowe ustawienie

Następnie skorzystać z funkcji 93D. HSCTW. 

Funkcja 93D. HSCTW
Funkcja 93D. HSCTW
Reszta programu
Reszta programu

Włączenie wyjścia Y0 następuje po zboczu narastającym z wejścia X4 (pod warunkiem, że X2 jest aktywne), a dzięki podtrzymaniu wyjście pozostaje włączone nawet po puszczeniu przycisku. Gdy wyjście Y1 zostanie uruchomione, timer T0 odlicza dokładnie 100 milisekund. Po upływie tego czasu funkcja resetu automatycznie wyłącza wyjście Y1, co tworzy precyzyjny krótki impuls.

Następnie w drzewie projektu przejść do pod-procedur: 

Pod-procedura w drzewie projektu
Pod-procedura w drzewie projektu

W którym zostanie stworzona logika w przypadku przerwania. Gdy wartość bieżąca szybkiego licznika CV zrówna się z wartością zadaną PV. 

Pod-program przerwania należy oznaczyć funkcją LBL której przypisać należy HSC0I (High Speed Counter 0 Interrupt). 

Funkcja LBL
Funkcja LBL

Pod procedura załącza wyjście Y1 a następnie instrukcja IMDIO wymusza odświeżenie wyjścia Y1, ignorując standardowy cykl skanowania sterownika. Następnie wartość zadana licznika w rejestrze R35282 jest powiększana o wartość z R0 i przesyłana do sprzętowej konfiguracji licznika HSC0 jako nowy parametr PV. 

Program pod procedury
Program pod procedury

Pod-procedurę należy zakończyć funkcją: 

Funkcja RTI
Funkcja RTI

Wszelkie wartości rejestrów wykorzystywanych w całym programie odczytywać oraz nadpisywać można w karcie stanu: 

Karta stanu
Karta stanu
Bez kategorii