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