Do Projektu iAutomatyka dołączyli:

https://iautomatyka.pl/wp-content/uploads/2019/05/zd.jpg

Obsługa i mechanizm przerwań w TIA Portal

autor: Tob.

W tym artykule chciałbym przybliżyć mechanizm przerwań. Czym jest, jak działa i gdzie go używać? Dowiesz się czytając dalej.

Sterownik

Do testów i przykładów został wykorzystany sterownik S7-1200 z firmware 4.1 oraz oprogramowanie TIA Portal v15. W sterownikach z niższym firmware do 3.0 występują pewne różnice w porównaniu z nowszymi urządzeniami. Najważniejsze zmiany dotyczące przerwań w sterownikach z nowszym firmware:

  • możliwość konfiguracji przerwań jako nieprzerywalne lub przerywalne,
  • możliwość konfiguracji priorytetu przerwania,
  • dodane zostały przerwania zegarowe,
  • dodane zostały nowe zdarzenia diagnostyczne (np. błąd kasety I/O, zmiana trybu pracy kasety I/O, itp.).

Zasada działania

Praca sterownika polega na cyklicznym wykonywaniu bloków programowych – domyślnie jest to OB1. Wystąpienie przerwania powoduje chwilowe zawieszenie wykonywania programu cyklicznego. W tym czasie wykonywany jest program obsługi przerwania. Wystąpienie przerwania powoduje wykonanie bloku OB, przydzielonego do obsługi tego zdarzenia. Może dojść do zagnieżdżenia przerwania – aktualnie obsługiwane przerwanie zostanie przerwane przez kolejne o wyższym priorytecie. Zakończenie obsługi przerwania powoduje powrót do miejsca w programie, w którym nastąpiło zawieszenie programu.

Lista przerwań

Poniżej tabela z dostępnymi przerwaniami w sterowniku S7-1200 FW>4.0.

Priorytet zdarzenia

Priorytety są to liczby od 1 do 26 przyporządkowane danym blokom OB – im większa liczba, tym większy priorytet. Ogólnie zasada nadawania i zastosowania priorytetów jest prosta – przerwania o nadanym wyższym priorytecie przerywają program o niższym priorytecie. Bloki cykliczne, takie jak OB1, mają najniższy priorytet – 1, ponieważ mogą być zawsze przerwane przez zdarzenie. Gdy zdarzenie zostanie obsłużone, sterownik PLC wraca do miejsca w programie, w którym nastąpiło przerwanie. Aby program mógł być przerwany przez przerwanie o wyższym priorytecie, bloki programowe muszą być skonfigurowane jako przerywalne.

Gdy bloki programowe OB zostaną ustawione jako nieprzerywalne, to nie zostaną przerwane nawet przez OB obsługujące zdarzenia o wyższym priorytecie. OB o wyższym priorytecie będzie musiało czekać w kolejce, aż do zakończenia aktualnie wykonywanego bloku programowego obsługującego przerwanie o niższym priorytecie.

Ustawienia czy przerwania mają być przerywalne, czy nieprzerywalne, dostępne są w konfiguracji sterownika.

Kolejkowanie zdarzeń

Zdarzenia przychodzące do sterownika nie zawsze są wykonywane natychmiast. Obsłużenie przerwania jest opóźnione gdy:

  • jest wykonywane przerwanie o wyższym priorytecie,
  • jest wykonywane inne przerwanie i OB są skonfigurowane jako nieprzerywalne,
  • jest wykonywana instrukcja w programie, która nie może być przerwana (np. UMOVE_BLK).

Przychodzące zdarzenie oraz kolejne trafiaj do kolejki, gdzie oczekują na możliwość obsłużenia. Każda grupa przerwań ma określoną głębokość kolejki. Jeśli zostanie przekroczona, to kolejne zdarzenia zostają utracone.


Odczyt wejść/wyjść

Cykl programu zaczyna się od zapisu pamięci Q do fizycznych wyjść. Po zapisie wyjść, sterownik kopiuje wejścia do pamięci I. W następnej kolejności jest wykonywany program – OB1 i cykl się powtarza. Wynika z tego, że odczyt i zapis wejść/wyjść jest ściśle związany z programem cyklicznym sterownika. W pewnych przypadkach wymagany jest szybszy odczyt i zapis wejść/wyjść. Można wtedy powiązać operacje zapisu i odczytu wejść/wyjść z danym przerwaniem przez przypisanie ich do PIP. Wtedy operacje związane z odczytem/zapisem wejść/wyjść odbywają się razem z przerwaniem, dzięki czemu w przerwaniu można operować na aktualnych stanach wejść i jednocześnie szybko wystawiać odpowiednie stany na wyjściach sterownika.

Konfiguracja przypisania wejść/wyjść sterownika do PIP jest przestawiona na rysunku poniżej.

Jeśli dostępna jest większa liczba wejść/wyjść, to można je przypisać do innego PIP np. PIP2 i do innego przerwania o innym czasie cyklu.

Przerwania cykliczne – Cyclic interrupts

Przerwania cykliczne wywoływane są w równych odstępach czasu. Są bardzo ważne w programach sterowników PLC, ponieważ dają możliwość pobierania informacji w stałych odstępach czasu. Dlatego są często wykorzystywane w układach regulacji lub np. próbkowaniu pomiarów (bloki programowe cykliczne np. OB1 nie zapewniają stałej długości cyklu, który może być różny w zależności od wykonywanego programu). Blok OB dla przerwania cyklicznego posiada dwa parametry:

  • czas cyklu – odstęp czasu, w których wywoływane jest OB;
  • faza – opóźnienie wywołania bloku OB obsługi przerwania (przesunięcie względem cyklu wywołania bloku OB przerwania cyklicznego), faza zapobiega nakładaniu się przerwań cyklicznych.

Rysunek poniżej przestawia w sposób graficzny parametry przerwań cyklicznych.

Parametry bloków OB – czas cyklu, faza można ustawić podczas tworzenia bloku programowego oraz we właściwościach (Properies) stworzonego bloku.

Z przerwaniami cyklicznymi są powiązane dwie instrukcje programowe:

  • SET_CIN – instrukcja do ustawiania parametrów bloku OB przerwania cyklicznego;
  • QRY_CINT – instrukcja do odczytu właściwości bloku OB przerwania cyklicznego.

Poniżej przykład wywołania funkcji dla przerwań cyklicznych i opis parametrów.

Jeśli przerwanie jest prawidłowo skonfigurowane to wartość parametru STATUS = 16#14.


Poniżej krótki program do zmiany parametrów przerwania cyklicznego – zmiana cyklu i fazy oraz odczyt ich wartości.

Należy pamiętać, że przerwań cyklicznych nie da się wyłączyć za pomocą programu sterownika.

Przerwania opóźnione – Time delayed interrupts

Przerwanie od opóźnień polega na wywołaniu bloku OB z ustalonym opóźnieniem. Przerwanie jest aktywowane programowo rozkazem SRT_DINT. Należy pamiętać, że przerwanie jest aktywowane stanem wysokim na wejściu EN, ale czas jest liczony od momentu wykrycia zbocza opadającego na tym wejściu. Przerwanie może zostać również wyłączone za pomocą funkcji CAN_DINT. Czy przerwanie od opóźnień jest aktywowane można sprawdzić za pomocą funkcji QRY_DINT. Maksymalny czas, jaki można wprowadzić jako opóźnienie, to 60000 ms czyli 6 min.

Blok programowy OB dla przerwania opóźnionego posiada jeden parametr – priorytet, który można zmienić we właściwościach (Properies) stworzonego bloku.

Rysunek poniżej przedstawia w sposób graficzny, działanie przerwania od opóźnień.

Z przerwaniami cyklicznymi są powiązane trzy instrukcje programowe:

  • SRT_DINT – instrukcja aktywacji przerwania od opóźnień;
  • CAN_DINT – instrukcja wyłączenia aktywowanego przerwania od opóźnień;
  • QRY_DINT – instrukcja do odczytu parametrów przerwania.

Poniżej przykład wywołania funkcji dla przerwań od opóźnień i opis parametrów.

Jeśli przerwanie jest prawidłowo skonfigurowane i zostało aktywowane stanem wysokim na wejściu EN to wartość parametru STATUS = 16#14 (przerwanie aktywne i blok OB istnieje). Jeśli czas opóźnienia zostanie odliczony i przerwanie się wykona lub zostanie wykonana instrukcja CAN_DING lub nastąpi restart sterownika to wartość parametru STATUS = 16#10 (blok OB istnieje, przerwanie nieaktywne).

Ponieważ przerwania cykliczne i opóźnione wykorzystują te same zasoby, łączna liczba wykorzystywanych tego typu przerwań równa się 4.


Przerwania sprzętowe – Hardware interrupts

W sterownikach SIMATIC, można przypisać określone zdarzenie (np. zbocze narastające) na danym wejściu fizycznym do danego bloku OB. Wykonywany program zostanie przerwany i zostanie wykonywany dany blok OB.

Takie zdarzenia można skonfigurować na dwa sposoby – w konfiguracji sterownika lub w jego programie za pomocą instrukcji ATTACH i DETACH.

Na etapie tworzenia konfiguracji sterownika można przypisać dane wejście sterownika do utworzonego bloku OB, przeznaczonego do obsługi zdarzeń sprzętowych.

Można w ten sposób obsłużyć zbocze narastające lub opadające wykorzystując jedno wejście sterownika.

Można też przypisać dwa zdarzenia – zbocze opadające i narastające tego samego wejścia sterownika do wywołania tego samego bloku OB.

Można również w sposób programowy przypisać dane zdarzenie do bloku OB poprzez instrukcję ATTACH (obsługa zdarzenia przez blok OB zostaje aktywowana) lub odłączyć za pomocą instrukcji DETACH (obsługa zdarzenia przez blok OB zostaje dezaktywowana). Poniżej przykład programu w jaki sposób parametryzuje się funkcję obsługi przerwań sprzętowych.

Konfiguracja funkcji – przypisanie bloku przerwania OB do funkcji konfiguracji przerwania.

Konfiguracja funkcji – przypisanie zdarzenia dla danego wejścia sterownika do funkcji konfiguracji przerwania.

Funkcja ATTACH posiada wejście ADD:

  • wartość 0 – funkcja z tym parametrem przypisuje blok organizacyjny OB tylko i wyłącznie do danego zdarzenia EVEN dla tej funkcji ATTACH, jeśli istnieją inne przypisania to zostają skasowane;
  • wartość 1 – funkcja z tym parametrem powoduje dopisanie zdarzenia EVEN do listy zdarzeń, które są obsługiwane przez dany blok OB (blok OB może być wywołany przez kilka zdarzeń).

Przerwania od zegara czasu rzeczywistego

Przerwania synchronizowane zegarem czasu Time of day interrupt dostępne są dla nowszych sterowników S7-1200 i S7-1500. Dostępne są dwa bloki OB do obsługi przerwań – OB10 i OB11.

Dostępne są następujące przerwania:

  • once – jednokrotne, w danym dniu i danej godzinie;
  • every minute – co minutę, o pełnych minutach,
  • Hourly – co godzinę, z podaniem minut;
  • Daily – raz dziennie, określa się godzinę i minuty;
  • Weekly – co tydzień, określa się godzinę i minutę, dzień tygodnia określa data startu przerwania;
  • Monthly – co miesiąc, określa się godzinę i minutę, dzień miesiąca określa data startu przerwania;
  • Yearly – co rok, określa się godzinę i minutę, dzień roku określa data startu przerwania;
  • End of month – na koniec miesiąca, określa się godzinę i minutę.

Najbardziej przydatne jest przerwanie generowane END_OF_MONTH, ponieważ nie trzeba kontrolować jaki jest miesiąc i czy jest rok przestępny. Można w prosty sposób wygenerować raport na koniec każdego miesiąca bez dodatkowego programu w sterowniku.

Artykuł został nagrodzony w Konkursie iAutomatyka – edycja Maj 2019

Nagrodę zestaw narzędzi + gadżety dostarcza ambasador konkursu, firma Weidmüller.

 



Utworzono: / Kategoria: , , ,

Reklama

Newsletter

Zapisz się i jako pierwszy otrzymuj nowości!



PRZECZYTAJ RÓWNIEŻ



NAJNOWSZE PUBLIKACJE OD UŻYTKOWNIKÓW I FIRM

Reklama



POLECANE FIRMY I PRODUKTY
  • Zapraszam Cię na kurs tworzenia wizualizacji HMI z wykorzystaniem panelu XV102 od firmy EATON. Kurs stworzyłem z myślą o każdym, kto chce zacząć przygodę z tworzeniem wizualizacji HMI przy użyciu programu Galileo. Stworzyłem kurs bazujący n...
  • Sterowniki kompaktowe, modułowe i zintegrowane, CODESYS V3 (programowanie, wizualizacja, komunikacja), Krótkie cykle czasowe, EtherCAT, BACnet (opcjonalnie), Modbus, CANopen, Porty szeregowe: RS232, RS485, 2 konfigurowalne karty Ethernet, W...
  • Kurs zaczyna się od uniwersalnych porad związanych z czytaniem schematów elektrycznych. Następnie, Agata stopniowo wprowadzi Cię w zagadnienia związane z wykorzystaniem oprogramowania podczas tworzenia kompletnej dokumentacji elektrycznej. ...
    Link: Terminy
  • Chcieliby Państwo być informowani z wyprzedzeniem o stanie maszyny lub techniki napędowej? Nic prostszego! Aplikacja DriveRadar® oferuje kompleksowe zarządzanie konserwacją w oparciu o cyfrowe rejestrowanie danych, na podstawie których możl...
  • RPI-1ZI-U24A, to przekaźnik  instalacyjny wytrzymujący maksymalny prąd załączania 120A w czasie 20ms. Przekaźnik ten dedykowany jest do załączania obwodów o wysokim prądzie początkowym, w szczególności do obwodów oświetleniowych, potwierdzo...
  • Wyświetlacz słupkowy ITP15 jest kompaktowym wskaźnikiem procesowym, który wizualizuje analogowy sygnał wejściowy w zakresie od 0 do 100% z 10 słupkami po 10%. Sygnałem wejściowym może być liniowy sygnał napięciowy 0 (2) -10 V lub sygnał prą...