Przerwania w kontrolerach PACSystems RX3i

Transkrypt

Przerwania w kontrolerach PACSystems RX3i
INFORMATOR TECHNICZNY GE FANUC
Informator Techniczny nr 18
-- wrzesień 2006 --
Przerwania w kontrolerach PACSystems RX3i
Przerwania sprzętowe
Są to przerwania pochodzące z modułów wejść/wyjść. Mogą być generowane przez większość modułów
z magistralą PCI (moduły z tą magistralą posiadają numery katalogowe zaczynające się od symbolu
IC695). Z przerwań sprzętowych korzysta się najczęściej przy pracy z modułami wejść/wyjść analogowych. Należy w tym celu w konfiguracji modułu ustawić opcję Interrupts na Enable, a następnie wskazać
zdarzenia, które mają generować przerwanie. Dla każdego kanału można zdefiniować osobne przerwanie. Przykładowo, w module IC695ALG616 mamy możliwość uaktywnienia przerwań od:
• alarmu typu LOW, LOW-LOW, HIGH oraz HIGH-HIGH,
• pojawienia się wartości mierzonej spoza zakresu pomiarowego,
• wykrycia rozwarcia prądowej pętli pomiarowej,
• zbyt szybkiego narastania lub opadania sygnału pomiarowego.
Uaktywnianie przerwań i definiowanie warunków generujących przerwanie
dla danego kanału pomiarowego.
Obsługa przerwania przez kontroler RX3i polega na wykonaniu bloku programowego, przyporządkowanego do danego przerwania. Przyporządkowanie bloku do przerwania dokonuje się w opcji Scheduling
we właściwościach bloku. Z listy wybiera się typ przerwania I/O Interrupt i wskazuje w polu Trigger
nazwę zmiennej, przyporządkowanej do pomiaru z kanału, dla którego definiujemy właśnie obsługę
przerwania. Taką zmienną powinniśmy więc zdefiniować zanim przystąpimy do deklarowania bloku
obsługującego przerwanie.
Blok obsługujący przerwanie wykonywany jest jednokrotnie, przy zaistnieniu zdarzenia, które zadeklarowaliśmy jako czynnik wywołujący przerwanie. Pojedynczy kanał pomiarowy może mieć przyporządkowany jeden blok programowy zawierający obsługę przerwania, przy czym można dla niego zadeklarować kilka czynników wywołujących przerwanie. Jeżeli program obsługujący przerwanie ma uwzględniać
różne zdarzenia, mające miejsce w jednym kanale pomiarowym, należy posłużyć się w nim bitami
diagnostycznymi, które mówią o tym, jakie konkretnie zdarzenie zaszło.
ASTOR Sp. z o.o.
Dział Systemów Sterowania
ul. Smoleńsk 29, 31-112 Kraków
tel.: 012 428-63-20
fax: 012 428-63-09
e-mail: [email protected]
http://www.astor.com.pl
Aby przyporządkować blok programowy do obsługi przerwania z danego kanału pomiarowego, należy
wejść opcję „Scheduling”, a następnie wybrać typ przerwania jako „I/O Interrupt” i w polu „Trigger”
wybrać z listy nazwę zmiennej przyporządkowanej kanałowi pomiarowemu, dla którego definiujemy
obsługę przerwania.
Przerwania czasowe
To z kolei przerwania, których obsługa przeprowadzana jest cyklicznie, co określony przez programistę
czas. Opcjonalnie można opóźnić pierwszą realizację bloku programowego do obsługi przerwania
czasowego. Deklaracja bloku obsługi przerwań czasowych jest bardzo podobna do przerwań sprzętowych, z tą różnicą, że jako typ przerwania wybiera się Timed Interrupt. Definiowanie interwału, co jaki
ma być wykonywany blok przerwań czasowych wygląda w ten sposób, ze ustalamy jednostki czasu (np.
setne części sekundy) i ilość tych jednostek. Przykładowo, deklaracja czasu 150 ms może odbyć się
poprzez wybranie jednostek zliczania czasu 0.01 s i ich ilości równej 15. Pole „Delay” służy do opcjonalnego opóźnienia pierwszego wykonania bloku przerwań czasowych, licząc od momentu uruchomienia
programu w jednostce centralnej.
2
Konfigurowanie przerwania czasowego.
Priorytety przerwań
Bloki przerwań są ważniejsze od „zwykłych” bloków programowych – chodzi o to, aby były obsługiwane
od razu. Można powiedzieć, że bloki przerwań są uprzywilejowane. Niekiedy istotne jest też, w jakiej
kolejności będą wykonywane bloki przerwań, gdy pojawią się w tym samym momencie przerwania
przyporządkowane różnym blokom. Oprogramowanie narzędziowe umożliwia podejście do takiego
zagadnienia na dwa sposoby, poprzez wybranie trybu priorytetyzacji przerwań. Są to: tryb nazywany
„Normal” oraz „Preemptive”.
W trybie „Normal” programista ma do dyspozycji maksymalnie 80 przerwań, w tym 64 przerwania I/O i
16 przerwań czasowych. Jeżeli w trakcie realizacji bloku przerwań pojawi się inne przerwanie, to czeka
ono na zakończenie obsługi bieżącego przerwania.
Natomiast w trybie „Preemptive” programista może korzystać maksymalnie z 32 przerwań. Każdemu
przerwaniu przypisuje się priorytet od 1 do 16 (1 = najwyższy). Jeden blok może mieć zdefiniowanych
wiele przerwań o różnych priorytetach. Bloki o wyższym priorytecie przerywają realizację bieżącego
bloku. W kolejce bloków do realizacji następują przetasowania, tak, że najpierw będą obsługiwane są
bloki o najwyższym priorytecie. Jeżeli bloki mają ten sam priorytet, najpierw będzie obsługiwany ten,
który został zgłoszony do obsługi jako pierwszy. Długość kolejki na przerwania wynosi 1, co oznacza, że
przerwanie może znaleźć się tylko jeden raz w kolejce.
3
Wybór trybu priorytetyzacji.
4