Skip to main content

9. Funkcja przerwania FBs-PLC

9.1. Zasada działania i struktura funkcji przerywania

FBs-PLC przeznaczony jest do realizacji wielu zadań. Na przykład do obsługi programu użytkownika zawierającego 20 tysięcy słów, przechwycenia lub zaktualizowania statusu 512 punktów We / Wy, obsługi 5 portów komunikacyjnych, itd. Jednakże zadania te mogą być wykonywane tylko jedno po drugim z uwagi na dostępność tylko jednego CPU. Dlatego też, PLC realizuje zadania po kolei. Po zakończeniu realizacji wszystkich zadań, PLC powróci do realizacji pierwszego zadania rozpoczynając tym samym nowy cykl roboczy. Czas realizacji każdego cyklu roboczego nazywa się „czasem skanowania” PLC. Szybkość realizacji CPU jest bardzo duża w porównaniu do szybkości reakcji wykonywanej przez człowieka. PLC jest w stanie ukończyć duży cykl roboczy w przeciągu kilku milisekund (ms). W ten sposób PLC może sprostać wymaganiom stawianym przez większość praktycznych zadań związanych ze sterowaniem.

Opisana metoda sterowania w wielu przypadkach okazuje się wystarczająca. Niemniej jednak, w przypadku niektórych zastosowań wymagających szybkiej odpowiedzi (takich jak sterowanie pozycjonowaniem), opóźnienie czasu skanowania pociągnie za sobą powiększenie błędu. W takich okolicznościach, spełnienie wymagań dotyczących precyzji możliwe jest jedynie przy zastosowaniu funkcji „przerwania”.

Funkcja ta oznacza odpowiedź w postaci przerwania na sygnał z CPU podczas normalnego cyklu skanowania w momencie, gdy wymagana jest szybka odpowiedź. Po otrzymaniu takiego żądania, CPU natychmiast zatrzyma operację skanowania w celu zrealizowania zadań serwisowych przed powrotem (tzw. „powrót z przerwania” lub RTI) do miejsca, w którym nastąpiło przerwanie i wznowi przerwane skanowanie.

Zadania serwisowe do wykonania podczas okresu przerwania nazywane są procedurą serwisową podczas przerwania, która składa się z serii kodów drabinkowych. Procedura (w obszarze podprogramu) rozpoczyna się instrukcją LBL z zastrzeżoną nazwą znacznika (patrz rozdział 9.3). Ponieważ procedura znajduje się w obszarze podprogramu, nie zostanie ona zrealizowana w ramach normalnego cyklu skanowania PLC (PLC stale skanuje obszar głównego programu, nie podprogramu).

W normalnych warunkach, CPU realizuje procedurę serwisową w przeciągu kilkuset mikrosekund. W przypadku wystąpienia większej ilości przerwań w jednym momencie (na przykład 49 źródeł przerwania FBs-PLC), zrealizowane zostanie tylko przerwanie o najwyższym priorytecie. Pozostałe przerwania będą realizowane według przydzielonych priorytetów. W konsekwencji zaistnieć może opóźnienie rzędy kilkuset mikrosekund lub nawet kilku milisekund. W związku z tym, w przypadku struktury funkcji o wielu przerwaniach, każdemu przerwaniu nadawany jest priorytet uzależniony od jego wagi. W przypadku, gdy przy realizacji procedury serwisowej podczas przerwania przez PLC pojawi się żądanie przerwania o niższym priorytecie, CPU zaczeka na realizację aktualnego podprogramu i dopiero wówczas zaakceptuje nowe żądanie. W przypadku, gdy nowe żądanie będzie miało wyższy priorytet niż aktualnie realizowana procedura, CPU zatrzyma ją w celu zrealizowania procedury o wyższym priorytecie, po czym powróci do poprzedniej procedury. Taki rodzaj przerwania nazywa się „przerwaniem zagnieżdżonym”. Poniżej przedstawione zostały przykłady pojedynczych przerwań oraz przerwania zagnieżdżonego.:

image.png

9.2. Struktura i zastosowanie procedury serwisowej podczas przerwania

Pomimo, że funkcje „przerwania” i „przywołania” mają swoje podprogramy, to metody ich przywoływania (w celu przejścia do podprogramu) są różne. Kiedy komenda CALL [FUN67] jest realizowana przez przywołanie w głównym programie, CPU zrealizuje podprogram ze znacznikiem o nazwie przyporządkowanej przez komendę CALL. Po realizacji komendy RTS (powrotu z podprogramu), CPU powróci do głównego programu.

Przywołanie „przerwania”, zamiast komend software’owych, realizowane jest przez sygnał przerwania sprzętowego wysyłany do CPU. CPU zidentyfikuje źródło przerwania i automatycznie przejdzie do „procedury serwisowej podczas przerwania” ze znacznikiem odpowiednim dla danego podprogramu. Po realizacji komendy RTI (powrót z przerwania) nastąpi powrót do głównego programu. W związku z tym, nie ma odpowiedniego kodu drabinkowego odpowiadającego przerwaniu w obszarze głównego programu.

Jak wspomniano wcześniej, procedura serwisowa podczas przerwania musi znajdować się w obszarze podprogramu. Struktura procedury przedstawiona jest na schemacie po prawej, na którym widnieje początek i koniec głównej struktury procedury serwisowej. Początek struktury stanowi znacznik przerwania (opis w kolejnym rozdziale). Koniec stanowi komenda RTI [FUN69], której zadaniem jest poinformowanie CPU o zakończeniu realizacji podprogramu i konieczności przejścia do miejsca, w którym nastąpiło przerwanie; patrz instrukcja FUN69 (RTI). Pomiędzy początkiem a końcem zawarta jest główna struktura procedury serwisowej podczas przerwania informującej CPU o czynnościach do zrealizowania w momencie pojawienia się przerwania.

image.png

9.3. Źródło przerywania, znacznik i priorytet FBs-PLC

Jak opisano w poprzednim rozdziale, każdej procedurze serwisowej podczas przerwania powinien być przypisany unikalny znacznik przerwania. Istnieje 49 znaczników przerwań określanych jako „słowa zarezerwowane dla przerwań”, które mogą być wykorzystane w obszarze podprogramu FBs-PLC. Znaczniki te są dedykowane poszczególnym procedurom, dlatego też nie mogą być użyte w przypadku normalnego podprogramu.

Wszystkie znaczniki przerwań (słowa zarezerwowane dla przerwań) charakteryzują się przyrostkiem „I”. Na przykład, znacznikiem przerwania dla szybkiego licznika HSC0 powinien być „HSC0I”, natomiast znacznikiem dla X0+, „X0+I”. Poniżej przedstawiono znaczniki przerwań i ich priorytety dla 49 źródeł przerwań FBs-PLC.

Poniższa tabela przedstawia źródła przerwań wraz z nazwami ich znaczników. W celu zachowania zgodności z poprzednimi wersjami narzędzia do programowania, oprócz HSC/HST załączono także nazwy znaczników ze starszych wersji (nazwy w nawiasie). Preferowane są nowe nazwy znaczników (nazwy HSTAI, 1MSI~100MSI, X0+I~X15-I mają wyższy priorytet).

 (Priorytet przerwania jest odwrotnie proporcjonalny do wartości priorytetu)

image.png

image.png

9.4. Realizacja przerwania w FBs-PLC

Zastosowania funkcji przerwania w synchronizacji wewnętrznej, zewnętrznym wyjściu, HSC/HST i PSO są identyczne. Z uwagi na to, że zastosowania HSC/HST i PSO zostały opisane w innych rozdziałach, w niniejszym rozdziale zaprezentowano jedynie przykłady synchronizacji wewnętrznej i wejścia zewnętrznego.

image.png

9.5. Konfiguracja przerywania

Konfiguracja przerwania ma na celu określenie tego, czy konkretne przerwanie zostanie zastosowane czy nie.

Konfiguracje przerwania można podzielić na konfiguracje związane i niezwiązane z We / Wy. HSTA, HSC/HST, PSO i zewnętrzne wejście związane są z We / Wy i powinny być zrealizowane za pomocą funkcji konfiguracji narzędzia do programowania, WinProladder lub FP-08. Narzędzie do programowania automatycznie zrealizuje przerwanie w urządzeniu po zakończeniu konfiguracji.

Konfiguracja przerwania wewnętrznej stałej czasowej (1MSI~100MSI) związana z We / Wy nie jest wymagana. Słowa zarezerwowane dla przerwania występujące przed podprogramem serwisowym podczas przerwania znajdujące się w obszarze podprogramu oznaczają, że planowane jest przerwanie. W przypadku wystąpienia kilku przerwań, przerwania 1MSI~100MSI mogą być sterowane za pomocą młodszego bajtu B0~B7 w specjalnym rejestrze R4162.

9.5.1. Konfiguracja przerywania za pomocą FP-08

                                                                          Klawiatura                                                                                                 Wyświetlacz LCD

image.png

l Instrukcja zewnętrznego przerwania ma 16 wspólnych szybkich wejść X0~X15 z instrukcjami HSC i SPD. W związku z tym, nie można skonfigurować wszystkich wejść wykorzystywanych przez HSC lub SPD.

  Uwaga: Instrukcja SPD do operacji wykrywania szybkości może wykorzystać tylko 8 wejść X0~X7.

l Po określeniu konfiguracji przerwania, jej zmiana przy PLC w trybie RUN nie będzie możliwa. Jednakże komenda EN [FUN145] i DIS [FUN146] z FBs-PLC jest w stanie dynamicznie włączyć/wyłączyć funkcję przerwania HSC i HSTA przy PLC w trybie RUN. Patrz opis obu instrukcji.

9.5.2. Konfiguracja przerywania za pomocą WinProledder

W oknie Project Windows kliknąć opcję „I/O Configuration”

image.png

Po pojawieniu się okna „Interrupt Setup” użytkownik może wybrać odpowiednią funkcję przerwania.

image.png

9.5.3. Konfiguracja przerywania wewnętrznej stałej czasowej za pomocą R4162

Pojawienie się słów zarezerwowanych dla przerwania wewnętrznej stałej czasowej (8 rodzajów, 1MSI~100MSI) oznacza, że planowane jest przerwanie, które może być zamaskowane za pomocą 8 bitów młodszego bajtu w rejestrze R4162 (patrz schemat poniżej):

image.png

l  Jeżeli status jednego spośród bitów B0~B7 wynosi 0, to FBs-PLC włączy funkcję przerwania dla bitu o najkrótszej stałej czasowej i wyłączy pozostałe. Jeżeli zawartość R4162 będzie stanowić 00H, to żadna z funkcji przerwania stałej czasowej nie zostanie zamaskowana. Jednakże, w przypadku gdy wszystkie podprogramy przerwania stałej czasowej 1ms i 2ms~100ms pojawią się w obszarze podprogramu, jedynie przerwanie stałej czasowej 1ms zostanie zrealizowane. Pozostałe operacje przerwania pozostaną niezrealizowane.

l  Użytkownik może dynamicznie zmieniać stałą czasową i przerwę lub włączać funkcję przerwania za pomocą programu drabinkowego w celu zmiany wartości R4162 w każdej chwili przy PLC w trybie RUN.

l  Wartością domyślną R4162 jest 0; w takim przypadku funkcja przerwania stałej czasowej 1ms~100msnie będzie maskowana. Dopóki którykolwiek podprogram obsługujący funkcję przerwania stałej czasowej będzie znajdował się z obszarze podprogramu, będzie on realizowany w sposób okresowy.

l  Z uwagi na to, że do realizacji każdego przerwania przez CPU wymagany jest długi czas, to im krótsza stała czasowa, tym więcej wymaga ona przerwań i tym więcej czasu potrzebuje na to CPU. W związku z tym, aby uniknąć zmniejszenia wydajności CPU, zastosowanie te powinno mieć miejsce tylko w przypadkach, gdy jest to niezbędne.

9.6. Przykłady procedury przerwania