Nowoczesne systemy operacyjne czasu rzeczywistego

Współczesne wbudowane systemy operacyjne czasu rzeczywistego uległy znacznej przemianie, zwiększając swą funkcjonalność tak, by spełnić wymogi nowych standardów bezpieczeństwa i ochrony.

Rozwój układów pamięci typu Flash o parametrach i pojemności wystarczających dla systemów przemysłowych pozwolił na wyeliminowanie obrotowych dysków twardych o krótkiej żywotności, zapewniając właściwą obsługę danych z procesów. Zdjęcie od Siemens Energy and Automation

Wbudowane systemy operacyjne czasu rzeczywistego stosowane są powszechnie w samolotach, pociągach czy samochodach, ale również w zakładach przemysłowych. Najistotniejszą ich cechą jest tzw. determinizm czasowy, czyli funkcja gwarantująca odpowiedź systemu w określonym, ustalonym przedziale czasowym, np. na przerwanie lub inny sygnał, który wywołać ma określone działanie. Dziś jednak to już nie wystarcza. Dziś systemom tego typu stawia się dodatkowe wymogi związane z pewnością komunikacji, bezpieczeństwem i ochroną. Jako przykład przedstawione zostaną doświadczenia rynkowe uznanego dostawcy systemów automatyki przemysłowej firmy Siemens Energy and Automation (SEA).

Otóż firma ta przy realizacji jednego ze zleceń chciała na poziomie produkcyjnym umieścić komputery klasy PC. Jednak inżynierowie pracujący w tym zakładzie szybko przekonali się, że w tej aplikacji klasyczne komputery biurowe nie będą działać prawidłowo. W celu uniknięcia możliwych awarii i przestojów zdecydowano się ostatecznie na zastosowanie modułów z systemem czasu rzeczywistego. Jego wybór był jednak zdeterminowany koniecznością zapewnienia łatwej komunikacji z oprogramowaniem biurowym komputerów PC, dlatego też w szerokiej gamie oferty rynkowej poszukiwano takiego systemu, który na to pozwoli.

Zwiększona funkcjonalność w stosunku do sterowników PLC

Współczesne systemy czasu rzeczywistego muszą obsługiwać różne standardy komunikacji i połączeń sieciowych, spełniając jednocześnie coraz bardziej surowe wymogi bezpieczeństwa i ochrony, a przy tym zachowywać się jak popularne komputery osobiste. Ich dostawcy zostali więc zobligowani do wprowadzenia w swoich rozwiązaniach nowych możliwości funkcjonalnych, co niestety zwiększyło wymagania sprzętowe (pamięć, szybkość operacji itp.). Na szczęście szybki postęp technologiczny umożliwia realizację tych zadań, bez zwiększania rozmiarów aplikacji systemów czasu rzeczywistego. Dzięki tym funkcjom i własnościom systemy czasu rzeczywistego mogą być obecnie w coraz szerszym zakresie stosowane w aplikacjach przemysłowych systemów sterowania i automatyki.

Wspomniana już firma Siemens Energy and Automation budując przemysłowy komputer PC Simatic Microbox 420, wykorzystała system czasu rzeczywistego RTX firmy Ardence koncernu Citrix. Dzięki jego zastosowaniu funkcjonalność opracowanego urządzenia znacznie przewyższa klasyczny sterownik PLC. Użytkownik widząc to urządzenie ma wrażenie, iż jest to zwykły sterownik PLC, gdy tymczasem ma ono w stosunku do niego znacznie rozszerzone możliwości funkcjonalne.

Jak już wspomniano wcześniej, elementem decydującym o zwiększeniu funkcjonalności systemu jest sprawna komunikacja i łączność. We współczesnych systemach sterowania w czasie rzeczywistym najważniejsza jest komunikacja systemu ze światem zewnętrznym. Chodzi tu przede wszystkim o możliwość wymiany informacji z sieciami standardu Ethernet oraz obsługę interfejsu szeregowego USB. Użytkownicy końcowi coraz częściej domagają się również możliwości połączenia z sieciami Internetu następnej generacji (IPv6), różnymi standardami sieci bezprzewodowych rodziny 802. x, sieciami MIPv4 i MIPv6 dla aplikacji mobilnych oraz systemami bezpieczeństwa IPsec i HTTPS.

Istnieje jednak niebezpieczeństwo, że dodatki funkcjonalne stosowane niezależnie przez użytkowników końcowych bądź producentów urządzeń specjalizowanych OEM, mogą oddziaływać na programowy układ szeregowania zadań, bardzo istotny element każdego systemu czasu rzeczywistego. W takich przypadkach warto, by użytkownicy ci zawczasu przekazali informacje o planowanych dodatkach do dostawcy systemów czasu rzeczywistego, tak by mógł on aplikować go bezpośrednio do swojego produktu. To samo dotyczy kwestii bezpieczeństwa i ochrony.

Poszerzony wachlarz obsługiwanych protokołów komunikacyjnych utrudnia nieco funkcjonowanie systemów czasu rzeczywistego, szczególnie w aspekcie ochrony informacji. Dotychczas stosowano różne stopnie ochrony w różnych systemach, z wyjątkiem ujednoliconych standardów w branży militarnej. Obecnie podejmowane są liczne działania zmierzające do stworzenia jednego standardu, poziomu ochrony, bazującego zarówno na sprzęcie, jak i funkcjach oprogramowania, który ma zapewnić najwyższy stopień ochrony danych oraz informacji w systemie. Osobną kwestią pozostaje bezpieczeństwo i ochrona danych na poziomie biurowych sieci komputerowych połączonych do systemu czasu rzeczywistego, w których możliwy jest łatwiejszy niekontrolowany dostęp do danych w sieci.

W sukurs inżynierom przychodzą tu najnowsze zdobycze technologiczne w sferze sprzętowej. Coraz częściej producenci układów scalonych dołączają do ich struktur różne elementy przetwarzania i obróbki danych, dzięki czemu nie jest konieczna ich realizacja w sferze oprogramowania. Niektóre z tych funkcji mogą kodować, szyfrować dane oraz wykrywać krążące w sieci wirusy. Dedykowany układ sprzętowy jest znacznie szybszy od procedur programowych, dlatego też wbudowane systemy czasu rzeczywistego powinny mieć możliwość obsługi i współpracy z różnymi dodatkowymi aplikacjami sprzętowymi. W systemach czasu rzeczywistego – co należy podkreślić – coraz częściej stosuje się już procesory wielordzeniowe. Dzięki temu możliwy jest rozdział operacji pomiędzy rdzenie i zmniejszenie szybkości taktowania procesorów, co przyczynia się do zmniejszenia poboru energii przy jednoczesnym wzroście wydajności. Wykorzystanie struktur wielordzeniowych uwarunkowane jest tym, aby obsługiwało oprogramowanie systemowe.

Rdzenie nowoczesnych mikroprocesorów mają wydzielone, dedykowane obszary pamięci, umożliwiające selekcjonowanie funkcji i aplikacji. W takich urządzeniach system czasu rzeczywistego może być użyty do zarządzania zadaniami i dzięki czemu w jednej części pamięci realizowane są zadania deterministyczne, w innej niedeterministyczne. Taka separacja jest szczególnie korzystna w systemach ochrony danych.

Zasady selekcjonowania i zapobiegania atakom na dane z zewnątrz stosowane w jednej części systemu mogą być z powodzeniem wykorzystane również w innych jego częściach, w celu eliminacji niezamierzonych błędów i awarii.

Funkcje niezbędne w każdym systemie czasu rzeczywistego

Jak już wspomniano wcześniej, współczesne wbudowane systemy czasu rzeczywistego, oprócz obsługi dodatkowych układów sprzętowych, muszą zapewnić komunikację z wieloma najpopularniejszymi standardami komunikacji sieciowej oraz spełniać wymogi dotyczące bezpieczeństwa komunikacji i ochrony danych.

Zbliża się jednak moment, kiedy konieczne w tego typu systemach okażą się jeszcze inne funkcje. W szczególności chodzi tu o kwestię rozwoju wielozadaniowości i odpowiednich dla niej standardów komunikacji. Wiele aplikacji, w których prowadzone jestjednocześnie kilka zadań, wymaga zastosowania do swojej obsługi odpowiednich standardów komunikacyjnych, np. z funkcjami kolejkowania, nadawania priorytetów. Jest to konieczne w celu uniknięcia sytuacji zablokowania zadań ważniejszych przez mniej ważne. W aplikacjach przemysłowych ważne są również kwestie szeregowania zadań oraz wyizolowania czasowego i obszarów pamięci dla poszczególnych zadań. Dzięki temu na przykład możliwe jest wyświetlanie danych z zadań o najwyższym priorytecie w oknach aktualizowanych na bieżąco, a zadań mniej ważnych w oknach aktualizowanych okresowo.

Z aplikacjami i urządzeniami systemów automatyki wiąże się bezpośrednio kilka protokołów komunikacyjnych oraz innych standardów sieciowych. Okazuje się jednak, że przy obsłudze wybranych standardów komunikacji sieciowej, jak np. IPv4 i IPv6, niektóre z funkcji podstawowych protokołów są już realizowane przez nie. Nie należy jednak wówczas podejmować decyzji o wyeliminowaniu obsługi tych standardowych, charakterystycznych protokołów przez system czasu rzeczywistego, ponieważ mogą one być potrzebne w przyszłości w innych aplikacjach. Chodzi tu o takie standard, jak: CAN, OPC, DCOM, przemysłowy WLAN do komunikacji bezprzewodowej, Profinet oraz inne standardy sieci przemysłowych, standard XML itp. Warto uwzględnić również inne nowsze technologie, jak np. ZigBee (bezprzewodowa), które mogą stać się integralną częścią systemu czasu rzeczywistego.

Tak znaczna liczba obsługiwanych standardów komunikacji i funkcji zmusza do zastanowienia się nad tym, które z nich są niezbędne w systemach czasu rzeczywistego jako ich integralne elementy. Zbyt duża liczba aplikacji bowiem może doprowadzić do sytuacji, w której układ szeregowania zadań systemowych zostanie przeciążony i zachwieje się deterministyczność czasowa systemu, a więc jego podstawowa i najważniejsza czecha w porównaniu z klasycznymi sieciami wymiany informacji. W takich przypadkach z pomocą przychodzą środki programowo-sprzętowe, odpowiedzialne za komunikację pomiędzy poszczególnymi aplikacjami systemu. Mogą one nawet dostarczyć dodatkowych funkcji pomocniczych, specjalizowanych w rozwiązaniu konkretnego problemu systemowego; np. mogą przenieść dane pomiędzy jednostką CPU będącą częścią systemu do miejsca w sieci, gdzie nie wymagają już one stosowania specjalnego kodowania w celu ich ochrony.

Takie przenoszenie danych i separacja zadań mogą być wykorzystane nie tylko przy usprawnianiu ich szeregowania. Wbudowane systemy czasu rzeczywistego z reguły pracują bowiem w środowisku, gdzie pamięć operacyjna jest ograniczona. Jednocześnie wciąż rośnie liczba realizowanych przez nie funkcji i aplikacji. W efekcie niewielka pamięć musi mieć możliwość obsługi coraz bardziej wyrafinowanych i skomplikowanych zadań. Aby temu sprostać, dostawcy tego typu systemów podejmują liczne wysiłki.

Jedną z metod jest podejście, w którym decydującą rolę odgrywa opinia i wymagania użytkownika końcowego, na podstawie których w fazie projektowania systemu podejmowane są decyzje co do dodania lub usunięcia określonych funkcji i aplikacji programowych, co zmniejsza obciążenie całego systemu.

Korzyści takiego postępowania mogą być dość znaczące. Na przykład w czasie opracowywania i testowania systemu użytkownicy mogą wybrać, jakie funkcje diagnostyczne umieścić w kodzie źródłowym systemu. Po całkowitym jego opracowaniu, w razie potrzeby funkcje te mogą być łatwo usunięte, zwiększając efektywność funkcjonowania systemu. W efekcie końcowym objętości i gabaryty konkretnych urządzeń mogą być mniejsze, a cały system wbudowany bardziej kompaktowy.

Inna metoda to zmniejszenie samych aplikacji systemowych poprzez dobór właściwego języka programowania i kompilatorów, który może doprowadzić do znacznej redukcji objętości kodu aplikacji. Dla przykładu pakiet LabVIEW firmy National Instruments ma opcję, która pozwala na integrację i wielokrotne wykorzystanie istniejącego kodu przy programowaniu portów systemu czasu rzeczywistego do wykorzystania w różnych zastosowaniach.

Wzajemna zależność pomiędzy wydajnością systemów czasu rzeczywistego i objętością aplikacji programowych wskazuje, iż kolejnym krokiem w ich rozwoju będzie dążenie do pełnej integracji funkcjonalnej systemów, aplikacji, narzędzi programowych i koniecznego do ich funkcjonowania sprzętu i peryferiów. Dlatego też dostawcy wbudowanych systemów czasu rzeczywistego nie mogą być postrzegani jako wyizolowana grupa branżowa. Wręcz przeciwnie, stanowią oni integralną część swoistego „ekosystemu”, którego wszyscy członkowie powinni z sobą ściśle współpracować. Tylko wtedy planowany proces pełnej integracji funkcjonalnej systemów czasu rzeczywistego może się powieść.

Integracja taka przyniesie wymierne korzyści zarówno dla dostawców, jak i użytkowników końcowych systemów. Złożoność i komplikacja funkcjonalna wszystkich systemów wciąż postępuje i to tak szybko, że niekiedy nie dotrzymuje jej tempa oprogramowanie. Dlatego też wydaje się, że i ono powinno stać się integralną częścią systemu, a do tego konieczny jest wczesny kontakt z odbiorcą- -użytkownikiem tak, aby cała aplikacja spełniała jego wymagania.

ce

Artykuł pod redakcją
dr. inż. Andrzeja Ożadowicza,
adiunkta w Katedrze Automatyki Napędu
i Urządzeń Przemysłowych w Akademii
Górniczo-Hutniczej w Krakowie 


Eliminacja zjawiska „elektronicznej amnezji” 

W działających systemach czasu rzeczywistego w pamięci przechowywane są: system operacyjny, uruchamiane aplikacje i dane. Kluczowa pozostaje kwestia, jaki typ pamięci wybrać? Czy mają to być pamięci SRAM, pamięci Flash, a może elektrycznie kasowane i zapisywane EEPROM? Który typ jest najlepszy?

Odpowiedź na to pytanie nie może być jednoznaczna. Dobór pamięci zależy bowiem bezpośrednio od tego, jakie są statyczne i dynamiczne wymagania funkcjonalne systemu czasy rzeczywistego. Duże zasoby pamięci, liczone w setkach megabajtów, są z reguły potrzebne dla zainstalowania i uruchomienia samego systemu oraz jego aplikacji, podczas gdy dla obsługi danych z procesów wystarczą niewielkie pamięci, jednak umożliwiające szybkie zbieranie, zapisywanie i kasowanie danych. Jednym z możliwych rozwiązań jest zastosowanie klasycznego twardego dysku z dodatkową zewnętrzną pamięcią Flash – takie dyski są niewielkie, odporne na większość czynników środowiskowych i zużywają niewiele energii.

Co istotne, w razie potrzeby mogą być łatwo wymienione, a nawet mogą wziąć na siebie część zadań systemowych związanych ze zbieraniem danych.

Dyski twarde stały się również w ostatnim okresie znacznie bardziej dostępne nawet dla niezamożnych użytkowników. Swego czasu koszty jednostki pamięciowej były w nich bardzo wysokie, ale teraz sytuacja rynkowa jest zupełnie inna. Nie wszystkie dyski twarde są takie same pod względem funkcjonalności i szybkości dostępu do danych. W najnowszych dyskach znacznie wydłużono żywotność, stosując narzędzia zapobiegające przedwczesnemu uszkodzeniu jednostek pamięci na skutek ich częstego użytkowania. Niektóre z dysków mogą zapisywać wybrane dane w specjalnych, zabezpieczonych obszarach pamięci, co pozwala na zachowanie plików systemowych lub aplikacyjnych w nienaruszonej w formie. Wadą dysków twardych jest fakt, że ich minimalny rozmiar musi wynosić przynajmniej kilka dziesiątków megabajtów, ze względu na budowę obracających się tarcz dyskowych.

Rozwiązaniem przydatnym w aplikacjach o mniejszych zasobach pamięciowych są układy pamięci Flash, RAM i EEPROM. Przy ostatecznym wyborze odgrywają rolę różne czynniki, takie jak: ilość gromadzonych i przetwarzanych danych czy częstość powtarzania ich zapisu. Zazwyczaj systemy czasu rzeczywistego oraz ich aplikacje programowe przechowywane są w pamięciach typu Flash, dlatego też podstawowa kwestia do rozstrzygnięcia to typ pamięci dla danych z procesu. Jeżeli ich ilość jest niewielka, wtedy dobrym rozwiązaniem są pamięci EEPROM, szczególnie w aplikacjach przemysłowych, gdzie wymagana jest długa żywotność urządzeń rejestrujących i zapamiętujących. Jedną z zalet stosowania tego typu pamięci jest stała informacja o liczbie cyklów czyszczenia i zapisu. Podczas gdy w pamięciach typu Flash błędy pojedynczych danych mogą pojawiać się już po 10 000 cykli, pamięci EEPROM z powodzeniem wytrzymują nawet do miliona takich cykli. Wadą tych ostatnich jest mniejsza szybkość obsługi danych oraz niższa opłacalność przy większych ilościach gromadzonych danych.

Ostatecznym rozwiązaniem jest zdalne przesyłanie i gromadzenie niezbędnych danych poprzez sieć Ethernet lub sieci bezprzewodowe, z wykorzystaniem podtrzymywanych bateryjnie pamięci typu SRAM w okresach braku połączenia sieciowego. W tych rozwiązaniach nie występuje problem przerwania lub utraty danych, a odczyt i zapis danych jest znacznie szybszy. Problematyczna jest zaś kwestia sprawności i poziomu naładowania baterii, które wymagają ciągłego monitoringu i właściwego serwisowania. W przeciwnym razie może wystąpić zjawisko tzw. „elektronicznej amnezji”, a więc bezpowrotnej utraty istotnych danych o obsługiwanych procesach przemysłowych.


Wbudowane aplikacje firmy Microsoft

System operacyjny Windows w swych podstawowych, komercyjnych wersjach nie może być łatwo i bezpośrednio zastosowany w typowych aplikacjach przemysłowych oraz sterowaniu procesami. Firma Microsoft dostrzegła ten problem i w tym celu opracowała specjalną wersję systemu, która ma wiele dodatkowych funkcji, jest niezwykle elastyczna i przystosowana do pracy w tzw. aplikacjach wbudowanych. Mowa tu o takich systemach operacyjnych, jak: Microsoft Windows Embedded CE, Windows XP Embedded oraz Windows Embedded.