Dziś jest poniedziałek, 21 październik 2019 r.
Energoelektronika.pl na stronach Facebook REKLAMA MAPA SERWISU KONTAKT
Strona główna Załóż konto Artykuły branżowe Katalog firm Seminaria FAQ Kalendarium Słownik Oferta
Wyszukaj
1USD 3.8503 -0.35% 1EUR 4.2844 -0.01% 1GBP 4.9671 +0.43%
Zaloguj się
Login (adres e-mail):
Haslo:
  Rejestracja
  Zapomniałem hasła
Reklama

Reklama

Aktualności
Przyszłość sektora motoryzacji w Polsce ? raport Banku Pekao S.A.
więcej
Nowy cykl szkoleń praktycznych związanych z programowaniem sterowników marki Siemens
więcej
Cykl szkoleń z zakresu programowania sterowników SIMATIC S7-300, S7-1200
więcej
Przed nami 32. edycja targów ENERGETAB 2019
więcej

Zobacz archiwum

Kalendarium
23 październik 2019
LUMENexpo Targi Techniki Świetlnej  
więcej
29 październik 2019
73. edycja Seminarium dla Służb Utrzymania Ruchu  
więcej
Newsletter
Jeżeli chcesz otrzymywać aktualne informacje o wydarzeniach w branży.
Podaj e-mail do subskrypcji:


Artykuły branżowe
22 maj 2009.

Projektowanie wbudowanych systemów sterowania odpornych na zakłócenia

Projektowanie niezawodnego, nieczułego na zakłócenia, wbudowanego systemu sterowania jest jednym z podstawowych aspektów tworzenia takiego systemu. Artykuł przybliża ideę systemu monitorującego pracę systemu wbudowanego. Określa podstawowe założenia i wymagania dotyczące takiego mechanizmu, opisuje możliwe rozwiązania pewnych problemów.

Pojawienie się mikroprocesorów zrewolucjonizowało układy sterowania. Zbieranie danych z różnego rodzaju czujników, skomplikowane przetwarzanie informacji, wypracowanie odpowiedniego sygnału sterowania, optymalizacja wydajności zamkniętego układu sterowania - nie byłyby możliwe bez obecności układu mikroprocesorowego. Mikroprocesory są obecne niemal we wszystkich obszarach naszego życia: od urządzeń domowego użytku, samochodów po samoloty i próbniki kosmiczne. Od ich poprawnego działania niejednokrotnie zależy nasze życie (rozruszniki serca, układy podtrzymujące podstawowe funkcje życiowe, czy w większej skali - bezpieczne działanie elektrowni atomowych). Są to zazwyczaj dedykowane układy mikroprocesorowe, wykonujące specyficzne działania. W odróżnieniu od tradycyjnych systemów komputerowych (bazujących na procesorach ogólnego zastosowania jak RISC czy CISC), systemy wbudowane mają różnorodne ograniczenia począwszy od wielkości, poprzez podstawowe parametry charakteryzujące układy elektroniczne (dostępna pamięć, zużycie energii, ograniczenia związane z zasobami systemowymi), na kosztach skończywszy. Nie należy zapominać o tym, że układy te pracują często w ekstremalnych warunkach środowiska zewnętrznego, co sprzyja powstawaniu błędów w ich działaniu. Skutki błędów softwarowych w systemach wbudowanych są znacznie poważniejsze niż dla systemów typu desktop. Doskonale pamiętamy histerię roku 2000, kiedy to ogromne koszty zostały poniesione na poprawianie błędu formatu daty w systemach wbudowanych. Znane są też tragiczne konsekwencje błędnie działającego urządzenia do naświetlań promieniowaniem X. Systemy wbudowane znacznie lepiej tolerują błędnie działający program niż układy typu desktop, nie wynika to jednak z faktu, że oprogramowanie nigdy nie zawodzi, lecz z obecności mechanizmu umożliwiającego powrót do normalnej pracy, gdy z jakichś przyczyn oprogramowanie źle funkcjonuje.

Spektakularnym dowodem, że taki mechanizm zwany "watchdog" (skrót WDT) jest konieczny przy budowaniu odpornych na błędy systemów wbudowanych, jest misja Pathfinder na Marsa. Oprogramowanie systemu zawiesiło się, lecz dzięki obecności odpowiednio zaprojektowanego mechanizmu, który zajmuje się detekcją nieprawidłowego zachowania się oprogramowania, możliwe było zresetowanie całego systemu oraz wgranie nowego, poprawnie działającego oprogramowania. Można powiedzieć, że tego typu rozwiązane jest ostatnią linią obrony przed błędami, gdy wszystkie inne metody zawiodą. Mechanizm WDT znany jest od lat i stosowany na przykład w programowalnych sterownikach logicznych (PLC). Tylko niektóre procesory znanych producentów są zabezpieczone przed przekłamaniami na poziomie bitów (spowodowanymi choćby promieniowaniem kosmicznym), przykładem jest McKinley czy Itanium 2 Intela. Jednakże większość systemów wbudowanych nie ma możliwości resetowania systemu z zewnątrz, a czasami zdarzają się przypadki nietypowego zachowania, co wprawia w stan zdziwienia lub nawet przerażenia ich użytkowników. Można zatem powiedzieć, że każdy system wbudowany powinien zostać wzbogacony o taki mechanizm. Działający system wbudowany może w pewnym momencie zawiesić się, co często zdarza się, gdy taki system umieszczony na przykład w próbniku kosmicznym nie jest dostępny bezpośrednio dla operatora kontrolującego jego pracę. W innych przypadkach, szybkość działania operatora może być zbyt mała w stosunku do ograniczeń czasowych nałożonych na system. Rozwiązaniem jest zatem zastosowanie układu elektronicznego, który by automatycznie wykrywał anomalie oprogramowania i resetował procesor. Mechanizmem takim jest WDT. Można wyróżnić następujące rodzaje mechanizmu WDT: wewnętrzny, zewnętrzny, śledzący zmienne stanu programu, resetujący lub nieresetujący zewnętrzne urządzenia. WDT może charakteryzować się różnym stopniem złożoności, a w swej najprostszej wersji jest to zwykły licznik zliczający w dół, od pewnej wartości początkowej do zera. Aplikacja systemu wbudowanego ma odpowiednio dobraną wartość początkową licznika i periodycznie ustawia na nowo taką wartość. Jeżeli licznik osiągnie wartość zero zanim oprogramowanie go wyzeruje, to taka sytuacja oznacza niepoprawnie działający program i konieczność wysłania sygnału resetującego procesor. Procesor jak i oprogramowanie zachowają się po tym sygnale tak, jakby operator wyłączył i włączył zasilanie. Na rys. 1 przedstawiono typowe rozwiązanie, a na rys. 2 pokazano jego przebiegi czasowe. Mechanizm WDT może być wbudowanym elementem procesora lub układem działającym niezależnie.

Idea mechanizmu WDT

Załóżmy, że w pewnym systemie wbudowanym oprogramowanie działa w zamkniętej pętli i jeden przebieg trwa przeciętnie około 20 ms, a w najgorszym przypadku 40 ms. Watchdog przyłączony jest do linii sygnalizującej przerwanie o wysokim priorytecie w systemie, np. RESET lub do niemaskowalnego przerwania (ang. non-maskable interrupt - NMI). Po włączeniu, WDT odczekuje 60 ms, a następnie wysyła sygnał RESET do procesora, powodując zresetowanie całego systemu. Jedynym sposobem, aby zapobiec tej sytuacji, jest poinformowanie WDT o poprawnej pracy przez wysłanie przez system główny przed upływem 60 ms impulsu (tzw. sygnału życia), który ponownie spowoduje start w odliczaniu 60-milisekundowego interwału. Jest to ostatnia operacja wykonywana przed przejściem do nowej iteracji pętli. Według Niella Murphy przed zresetowaniem licznika należy wykonać pewne dodatkowe operacje zabezpieczające, do których można zaliczyć np. sprawdzenie głębokości stosu, ustalenie liczby zaalokowanych buforów czy ustalenie stanu aktualnie wykorzystywanych mechanicznych elementów systemu. Dodatkowo powinno się ustawiać flagi sygnalizujące prawidłowe wykonanie pewnych części kodu. Przed wyzerowaniem licznika dokonuje się analizy ustawienia flag ? jeżeli wszystko przebiegło poprawnie, to licznik zaczyna odliczać następny interwał, w przeciwnym przypadku system przechodzi w stan błędnej pracy. Jeżeli sytuacja rozwija się niepomyślnie, ze względu na problem sprzętowy lub programowy, licznik czasowy przekracza swój limit i generowany jest sygnał resetu systemu. Niestety, tak prosty mechaniz nie zawsze wystarcza do prawidłowego zainicjowania poprawnej pracy systemu.

Wewnętrzny WDT

Wewnętrzny WDT to taki, który jest wbudowany w układ scalony procesora. Wysoko zintegrowane procesory zawierają wiele dodatkowych układów, w których z kolei często wbudowane są proste mechanizmy WDT (np. Toshiba TPM96141); elementy te generują NMI, gdy ich licznik przekroczy limit czasu, co nie zawsze jest rozwiązaniem najlepszym. Korzystne jest, gdy po wygenerowaniu przerwania NMI, system odczeka chwilę i dopiero potem wykonywany jest jego reset (czego procesor Toshiby nie potrafi zrobić). Zatem, aby WDT pracował poprawnie konieczny jest sprzętowy reset umożliwiający procesorowi wznowienie poprawnej pracy. Ustawienie samego licznika instrukcji (rejestr PC) może nie zainicjować poprawnej pracy CPU. Dobrą cechą WDT jest to, że dopiero dwie, bezpośrednio następujące po sobie operacje zapisu danych o wartościach np. 0x55 i 0xaa, mogą dezaktywować timer, zatem przypadkowe operacje pisania programu głównego z małym prawdopodobieństwem mogą wyłączyć ten mechanizm. Ze szczególną ostrożnością należy podchodzić do takich WDT, których rejestry sterujące mogą zostać zmodyfikowane w trakcie wykonywania programu, a to grozi wyłączeniem watchdoga. Jeżeli przekroczenie limitu czasu WDT nie powoduje ustawienia odpowiedniego stanu na odpowiednim wyprowadzeniu procesora, to konieczne jest dołożenie sprzętu resetującego każde urządzenie zewnętrzne. Bez tego taki reset przywróci do życia tylko CPU, lecz niepoprawnie działające peryferia spowodują, że system będzie dalej pracował niewłaściwie.

Zewnętrzne WDT

Część urządzeń nadzorujących pracę procesora i zarządzających sygnałem resetu ma wbudowane mechanizmy WDT. Nie wszystkie jednak zawsze zadziałają poprawnie (np. chip TI UCC3946, SMT czy też Maxim MAX 823), dlatego należy być świadomym ich zalet i wad. Dobrze jest, gdy WDT działają w pewnym oknie czasowym. Oznacza to, że sygnał świadczący o poprawnej pracy procesora jest przyjmowany w ściśle określonym wycinku czasu i jest mało prawdopodobne, że błędnie działający program prześle wtedy prawidłowo dwie ściśle określone wartości, co z kolei spowoduje wyzerowanie licznika watchdoga.

Magadalena Szymczyk

Całość artykułu dostępna jest w czasopiśmie PAR 04/2009
Źródło: PAR
O nas  ::  Regulamin  ::  Polityka prywatności (Cookies)  ::  Reklama  ::  Mapa stron  ::  FAQ  ::  Kontakt
Ciekawe linki: www.klimatyzacja.pl  |  www.strony.energoelektronika.pl  |  promienniki podczerwieni
Copyright © Energoelektronika.pl