• Nie Znaleziono Wyników

Kolejkowanie i priorytety wykonania obsługi zdarzeń

Prosty w obsłudze sterownik PLC 4

4.3. Wykonanie programu użytkownika

4.3.3. Kolejkowanie i priorytety wykonania obsługi zdarzeń

Praca CPU jest sterowana zdarzeniami. Zdarzenie powoduje uruchomienie prze-rwania OB. Istnieje możliwość określenia przeprze-rwania OB dla danego zdarzenia podczas tworzenia bloku, podczas konfiguracji urządzenia lub przy pomocy in-strukcji ATTACH i DETACH. Niektóre zdarzenia, takie jak cykl programu czy też przerwania cykliczne, występują regularnie. Inne zdarzenia obsługiwane są jed-nokrotnie, tak jak zdarzenie rozruchowe lub zdarzenie opóźnienia czasowego.

Niektóre zdarzenia wykonywane są przez uruchomienie sprzętowe, takie jak wy-krycie zbocza na punkcie wejściowym lub zadziałanie wejścia szybkiego liczni-ka. Istnieją również zdarzenia jak błąd diagnostyczny, bądź błąd czasowy, które powstają tylko w przypadku wystąpienia błędu. Do określenia porządku wykony-wania procedur obsługi zdarzeń stosuje się priorytety, grupy priorytetów i kolejki.

Zdarzenie cyklu programu wykonywane jest przy każdym cyklu programu (lub ska-nu). Podczas jednego cyklu CPU ustawia wyjścia, odczytuje wejścia i wykonuje OB cyklu programu. Zdarzenie cyklu programu jest konieczne i zawsze włączone.

W programie można nie mieć bloków OB z cyklem programu lub mieć wiele bloków OB wybranych do obsługi zdarzenia cyklu programu. W momencie uruchomienia zdarzenia cyklu programu zostanie wykonane zdarzenie cyklu programu najniżej

numerowanego bloku OB (zwykle jest to OB 1). Zdarzenia cyklu programu innych bloków OB są uruchamiane sekwencyjnie, w kolejności numerycznej.

Zdarzenie przerwania cyklicznego pozwala na konfigurację wykonania przerwa-nia OB w określonym czasie skanu. Wstępny czas skanu jest konfigurowany, gdy dany OB jest tworzony i wybrany do cyklicznych przerwań. Zdarzenie cykliczne przerywa cykl programu i wykonuje OB cyklicznego przerwania (zdarzenie cy-kliczne ma wyższy priorytet niż zdarzenie cyklu programu).

Tylko jeden OB obsługujący cykliczne przerwania może być dołączony do zda-rzeń cyklicznych.

Każdemu zdarzeniu cyklicznemu może być przypisane przesunięcie fazowe tak, aby realizacja cyklicznych przerwań w tym samym czasie skanowania mogła być przesunięta pomiędzy sobą o to przesunięcie fazowe. Jego domyślna wartość wy-nosi 0. Aby zmienić wartość przesunięcia fazowego należy zmienić wstępny czas skanowania dla cyklicznych zdarzeń klikając PPM na blok OB w drzewie projektu, kliknąć Properties i następnie Cyclic interrupt. W tym polu należy wpisać nową wartość. Można zbadać oraz zmienić czas skanu i przesunięcie czasowe z pozio-mu prograpozio-mu używając instrukcji badania cyklicznego przerwania (QRY_CINT) a także ustawienia cyklicznego przerwania (SET_CINT). Czas skanu i czas prze-sunięcia fazowego ustawione przez instrukcję SET_CINT powrócą do wartości po-czątkowych po wyłączeniu i włączeniu zasilania lub przy przejściu do trybu STOP.

CPU obsługuje do czterech zdarzeń przerwań cyklicznych i od opóźnienia.

Zdarzenie rozruchu wykonywane jest raz przy przejściu z trybu STOP do RUN i powoduje uruchomienie startowego OB. Wiele OB może być użytych do zdarze-nia rozruchowego. Startowe OB. są wykonywane w kolejności numerycznej.

Zdarzenia opóźnienia przerwania pozwalają na konfigurację wykonania OB prze-rwań po minięciu określonego czasu. Czas opóźnienia jest określony przez in-strukcję SRT_DINT. OB opóźnienia przerywa wykonywanie normalnego programu cyklicznego wtedy, kiedy upłynie ustalony czas opóźnienia. Można skonfigurować do czterech zdarzeń opóźnionych dla dowolnej chwili, przy czym dozwolony jest tylko jeden OB dla każdego skonfigurowanego zdarzenia opóźnionego.

OB przerwania sprzętowego jest wykonywany wtedy, kiedy wystąpi zdarzenie sprzętowe takie jak zbocza opadające lub narastające na wejściach cyfrowych lub zdarzenia HSC (dotyczące szybkiego licznika). Dozwolony jest jeden OB dla każdego skonfigurowanego zdarzenia sprzętowego. Zdarzenia sprzętowe są włą-czane w konfiguracji urządzenia (Device configuration). Bloki OB są określane w konfiguracji urządzenia lub z poziomu programu za pomocą instrukcji ATTACH.

CPU obsługuje kilka sprzętowych przerwań. Ich dokładna liczba zależy od rodza-ju CPU i liczby punktów wejściowych.

Zdarzenia błędu czasu i zdarzenie błędów diagnostyki uruchamiane są gdy CPU wykryje błąd. Te zdarzenia mają wyższy priorytet niż inne zdarzenia przerwań i mogą przerwać wykonanie zdarzeń opóźnienia czasowego, przerwań cyklicz-nych i sprzętowych. Jeden blok OB przerwań może być określony dla zdarzenia błędu czasowego i jeden dla zdarzenia błędu diagnostycznego.

Kolejkowanie i priorytety wykonania obsługi zdarzeń

Liczba pochodzących z jednego źródła zdarzeń oczekujących w kolejce na obsłu-gę jest ograniczona przez stosowanie różnych kolejek dla zdarzeń różnego typu.

Po osiągnięciu limitu oczekujących zdarzeń określonego typu, kolejne zdarze-nia są tracone. Więcej informacji na temat przepełniezdarze-nia kolejek jest dostępnych w kolejnym punkcie „Zdarzenia błędów czasu”.

Każde zdarzenie CPU ma przyznany priorytet. Użytkownik nie może zmienić przypisanego dla OB priorytetu. Ogólnie, zdarzenia są obsługiwane zgodnie z ich priorytetem (najpierw najwyższy priorytet). Zdarzenia mające ten sam priorytet są obsługiwane zgodnie z zasadą „pierwszy się pojawił, pierwszy jest obsłużony”.

Tabela 4.1. OB zdarzeń

Zdarzenie Numer OB Liczba zdarzeń Zdarzenie inicjujące Priorytet Cykl

● Koniec OB rozruchowego.

● Koniec ostatniego OB obsługującego cykl programu.

1 Rozruch OB 100,

od OB 200 do OB 65 535

1 zdarzenie rozruchu 1, 2

Dozwolonych wiele OB Zmiana trybu ze STOP do RUN 1 Czasowe Od OB 200

do OB 65 535 4 zdarzenia czasowe 3 1 OB na zdarzenie

Zaplanowane opóźnienie czasowe 3 Zaplanowany cykliczny blok OB 7

Zdarzenia

procesu Od OB 200

do OB 65 535 Do 50 zdarzeń 4 1 OB na zdarzenie

Zbocza:

● Zdarzenia zbocza narastającego:

16 maksymalnie.

● Zdarzenia zbocza opadającego:

16 maksymalnie.

5

Dla HSC:

● CV=PV: 6 maksymalnie.

● Zmiana kierunku: 6 maksymalnie.

● Zewnętrzny reset: 6 maksymalnie.

6

Błąd

diagnostyki OB 82 1 zdarzenie (tylko jeśli

załadowano OB 82 ) Błąd transmisji modułowej 9

Błąd czasu OB 80 1 zdarzenie (tylko jeśli OB 80 został załadowany) 5

● Przekroczono maksymalny czas cyklu.

● Drugie przerwanie czasowe (cykliczne lub od opóźnienia) rozpoczęło się przed zakończeniem przez CPU pierwszego przerwania.

26

1 Zdarzenie rozruchowe i zdarzenie cyklu programu nigdy nie występują w tym samym czasie, ponieważ zdarzenie rozruchu kończy się zanim rozpoczyna się zdarzenie cykl programu (jest to kontrolowane przez system operacyjny).

2 Zdarzenie rozruch może być przerwane wyłącznie przez zdarzenie błąd diagnostyki (skojarzone z OB 82) . Wszystkie inne zdarzenia są ustawiane w kolejkę do późniejszej obsługi po zakończeniu rozruchu.

3 CPU obsługuje maksymalnie do 4 zdarzeń czasowych współdzielonych przez OB opóźnień czasowych i cykliczne OB. Liczba OB opóźnień czasowych i cyklicznych OB nie może przekroczyć 4.

4 Można użyć więcej niż 50 zdarzeń procesu, jeśli zostały użyte instrukcje ATTACH oraz DETACH.

5 Można skonfigurować CPU tak, aby pozostał on w trybie RUN nawet jeśli maksymalny czas cyklu został przekroczony. Istnieje także możliwość użycia instrukcji RE_TRIGR do zresetowania czasu cyklu. CPU przejdzie jednak w tryb STOP jeśli maksymalny czas wykonania cyklu zostanie drugi raz przekroczony w jednym cyklu skanu.

Po rozpoczęciu wykonywania OB z priorytetem od 2 do 25, jego przetwarzanie nie może zostać przerwane przez obecność innego zdarzenia, poza OB 80 (prze-rwanie od błędu czasowego, które ma priorytet 26). Wszystkie inne zdarzenia zo-staną zakolejkowanie do późniejszego przetwarzania pozwalając na zakończenie bieżącego OB.

Opóźnienie przerwania

Opóźnienie przerwania (czas od momentu, gdy CPU zostało powiadomione o zdarzeniu do chwili wykonania pierwszej instrukcji OB obsługującego to zdarze-nie) wynosi około 175 μs, pod warunkiem, że OB cyklu programu jest w trakcie pojawienia się tego przerwania jedynym aktywnym programem obsługi zdarzenia.

Zdarzenia błędu czasu

Spełnienie jednego z kilku różnych warunków określających błędy czasu generuje w efekcie zdarzenie błędu czasu. Mogą wystąpić następujące błędy czasu:

● Przekroczenie maksymalnego czasu cyklu.

● Nie może wystartować wywołany OB.

● Wystąpienie przepełnienia kolejki.

Warunek przekroczenia maksymalnego czasu cyklu występuje wtedy, kiedy cykl nie zostaje zakończony w wyspecyfikowanym maksymalnym czasie cyklu progra-mu. Więcej na temat informacji związanych z maksymalnym czasem cyklu można uzyskać w książce „Podręcznik systemowy S7-1200”.

Warunek braku możliwości uruchomienia wywoływanego OB występuje wtedy, kiedy OB jest wywoływany przerwaniem cyklicznym lub przerwaniem opóźnienia czasu, a ten wywoływany OB jest już uruchomiony.

Warunek zdarzenia czasu dnia (time of day – TOD), które zostało pominięte lub powtórzone występuje gdy jedno lub więcej przerwań czasowych zostało pomi-nięte ze względu na zmianę ustawień zegara TOD lub przez CPU będące w try-bie STOP.

Warunek przepełnienia kolejki występuje wtedy, kiedy przerwania pojawiają się szybciej niż mogą być obsługiwane. Liczba oczekujących (kolejkowanych) zda-rzeń jest ograniczona przez zastosowanie różnych kolejek dla zdazda-rzeń każdego typu. Kiedy jakieś zdarzenie wystąpi, gdy jego kolejka jest pełna, to generowane jest zdarzenie błędu czasu.

Wszystkie zdarzenia błędu czasu uruchamiają OB 80 (jeśli istnieje). Jeśli OB 80 nie istnieje w programie użytkownika, to ustawienia konfiguracji urządzenia deter-minują reakcję CPU na wystąpienie błędu czasu:

● Domyślna konfiguracja dla błędów czasu, takich jak drugie cykliczne przerwa-nie przed zakończeprzerwa-niem przez CPU wykonania pierwszego, pozostawia CPU w trybie RUN.

● Domyślna konfiguracja dla przekroczenia maksymalnego czasu powoduje przełączenie CPU w tryb STOP.

Dostępna jest instrukcja RE_TRIGR (ponownie rozpocznij monitorowanie czasu cyklu), która kasuje timer mierzący czas cyklu. Jeśli jednak nastąpią dwa przekro-czenia maksymalnego czasu cyklu w jednym cyklu programu, to CPU przejdzie w tryb STOP, niezależnie od istnienia OB 80. Więcej informacji znajduje się w sek-cji „Monitorowanie czasu cyklu” w publikasek-cji „Podręcznik systemowy S7-1200”.

OB 80 zawiera informacje rozruchowe pomagające użytkownikowi określić, które zdarzenie i OB wygenerowało błąd czasu. Wewnątrz OB 80 można wstawić pro-gram badający te wartości rozruchowe i podejmujący odpowiednią akcję.

Tabela 4.2. Informacje rozruchowe dla OB 80

Wejście Typ danych Opis

fault_id BYTE 16#01 – przekroczony maksymalny czas cyklu 16#02 – nie można uruchomić wywoływanego OB 16#07 i 16#09 – wystąpiło przepełnienie kolejki csg_OBnr OB_ANY Numer OB wykonywanego podczas wystąpienia błędu csg_prio UINT Priorytet OB powodującego błąd

W nowo utworzonym projekcie nie ma OB 80 obsługującego przerwanie błędu czasu. Jeśli jest to konieczne OB 80 można dodać do projektu poprzez podwójne kliknięcie Add new block w menu drzewa Program blocks, a następnie wybranie Organization block, i na koniec Time error interrupt.

Zdarzenia błędów diagnostyki

Urządzenia analogowe (lokalne), urządzenia PROFINET oraz PROFIBUS mają możliwość wykrywania i raportowania błędów diagnostycznych. Wystąpienie lub usunięcie jakiegokolwiek spośród różnych błędów diagnostycznych powodują wy-stąpienie zdarzenia błędów diagnostyki. Mogą wystąpić następujące błędy diag-nostyki:

● brak zasilania,

● przepełnienie,

● niedomiar,

● przerwa w obwodzie,

● zwarcie.

Wszystkie zdarzenia błędu diagnostyki uruchamiają OB 82 (jeśli istnieje). Jeśli OB 82 nie istnieje, to CPU ignoruje ten błąd. W nowo utworzonym projekcie nie ma OB 82 obsługującego przerwanie błędu diagnostyki. Jeśli jest to konieczne OB 82 można dodać do projektu poprzez podwójne kliknięcie Add new block w menu drzewa Program blocks, a następnie wybranie Organization block, i na koniec Diagnostic error interrupt.

Uwaga

Błędy diagnostyczne dla wielokanałowych, lokalnych urządzeń analogowych (I/O, RTD i termopary).

Przerwanie od błędu diagnostycznego w OB 82 może raportować błąd diagno-styczny dla tylko jednego kanału równocześnie.

Jeśli dwa kanały wielokanałowego urządzenia zgłaszają błąd, to drugi błąd uru-chamia OB 82 przy następujących warunkach: błąd pierwszego kanału został skasowany, wykonanie OB 82 wywołanego przez pierwszy błąd zostaje dokoń-czone, a drugi błąd nie został skasowany.

OB 82 zawiera informacje rozruchowe pomagające użytkownikowi określić, czy zdarzenie powstało na skutek pojawienia się bądź skasowania błędu oraz pozwa-la określić urządzenie i kanał, który zgłasza ten błąd. Wewnątrz OB 82 można wstawić program badający te wartości rozruchowe i podejmujący odpowiednią akcję:

Tabela 4.3. Informacje rozruchowe dla OB 82

Wejście Typ danych Opis

IOstate WORD

Stan IO urządzenia

● Bit 0 = 1 jeśli konfiguracja jest poprawna;

i = 0 jeśli konfiguracja nie jest już poprawna.

● Bit 4 = 1 jeśli obecny jest błąd (jak np. przerwa w obwodzie).

(Bit 4 = 0 gdy nie ma błędu).

● Bit 5 = 1 jeśli konfiguracja nie jest poprawna;

i = 0 gdy przywrócono poprawną konfigurację.

● Bit 6 = 1 jeśli nastąpił błąd dostępu do obszaru I/O.

Odniesienie do laddr dla sprzętowego rozpoznania I/O z błedem dostępu. (Bit 6 = 0 gdy nie ma błędu).

laddr HW_ANY Identyfikacja urządzenia które zgłosiło błąd 1 channel UINT Numer kanału

multierror BOOL TRUE jeśli wystąpił więcej niż jeden błąd

1 Wejście laddr zawiera sprzętowe rozpoznanie urządzenia lub funkcjonału jednostki, który zwrócił błąd. Sprzętowe rozpoznanie jest przypisane automatycznie w momencie dołączenia komponentu do urządzenia lub sieci i ujawnia się w tablicy Constant znaczników PLC. Nazwa dla sprzętowego identyfikatora jest także przyznawana automatycznie. Wpisy w tablicy Constant w znacznikach PLC nie mogą być zmienione.

Zobacz także

„Połączenie online w celu monitorowania wartości w CPU” (strona 216).