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