Artykuł w PAK - Pomiary, Automatyka, Kontrola (01/2004)
Transkrypt
Artykuł w PAK - Pomiary, Automatyka, Kontrola (01/2004)
HAP J Janusz Hajda - Automatyka Przemysłowa ul. Klasztorna 5, 41-922 Radzionków tel.0602 578 549, tel./fax.(032) 389-91-04 email: [email protected] , [email protected] Nowoczesne systemy SCADA z bezpośrednim dostępem przez Internet. Janusz HAJDA Grzegorz ZIELIŃSKI Wprowadzenie Rozwój techniki wymusza istotne zmiany w podejściu do tworzenia systemów SCADA. Zmiany te dotyczą nie tylko wydajności, ale przede wszystkim prostoty obsługi i łatwości dostępu. Szczególnie ułatwianie dostępu staje się zadaniem priorytetowym. Jest to spowodowane m.in. rosnącą mobilnością pracowników, ale również np. wymogiem społecznej kontroli takich obiektów jak oczyszczalnie ścieków, gdzie pewne parametry powinny być udostępnione publicznie, a co się z tym wiąże, nie mogą wymagać instalacji dedykowanego systemu SCADA na komputerze użytkownika. Jednym z najbardziej interesujących rozwiązań tych problemów jest wykorzystanie modułu serwera WWW dla modularnego sterownika PLC (rys.1). Przykładem może być moduł TSXETY5102 dla sterownika Premium firmy Schneider Electric. Możliwości i ograniczenia modułu oraz zagadnienia związane z jego programowaniem stanowią temat niniejszej publikacji. Rysunek 1 - sterowniki PLC z serwerami WWW w sieci ETHERNET Moduł serwera WWW Moduł oparty na szybkim procesorze Motorola PowerPC MPC860 50Mhz, spełnia wymogi najnowszych standardów: szybka transmisja (100 Mb/s), autonegocjacja szybkości, wsparcie dla BootP/DHCP, SNMP. Moduł wyposażono w dwa obszary pamięci FLASH po 8 MB każdy – pierwszy obszar zawiera system operacyjny czasu rzeczywistego, drugi stanowi przestrzeń dla stron WWW i bibliotek tworzących aplikację użytkownika. Zastosowanie W rzeczywistości moduł serwera WWW jest często wykorzystywany jedynie jako łącze PCPLC, z klasycznym systemem SCADA umieszczonym po stronie PC. Wynika to głównie z nieświadomości odnośnie możliwości modułu. Tymczasem 8 MB pamięci flash dostępnej dla użytkownika pozwala na zbudowanie pokaźnej aplikacji SCADA umieszczonej w module i dostępnej z dowolnego miejsca za pomocą zwykłej przeglądarki internetowej. Bardzo istotnym i często pomijanym faktem jest specyfika aplikacji tworzonych poprzez osadzanie apletów Javy w witrynie WWW. Mianowicie aplety te nie zawierają całego kodu wykonywalnego, a jedynie część stworzoną przez projektanta aplikacji. Większość funkcji czerpią one z bogatych zasobów udostępnianych przez biblioteki składające się na Java Runtime Environment – środowisko uruchomieniowe języka Java. Pakiet ten musi być zainstalowany w systemie po stronie klienta, przy czym jest to darmowy dodatek do najbardziej popularnych przeglądarek, swobodnie dostępny z witryny Sun Microsystems (java.sun.com). Rozwiązanie to znacznie redukuje ilość przesyłanych danych przy zachowaniu głównego założenia jakim jest dostęp do w pełni funkcjonalnej aplikacji z dowolnego, zdalnego komputera, bez konieczności instalacji. Programowanie – FactoryCast i NFC SCADA Library Moduł serwera WWW TSXETY5102 (jak również podobny moduł TSXETZ510 współpracujący we sterownikami TSX Micro) dostarczany jest wraz z pakietem oprogramowania FactoryCast. Pakiet ten zawiera zestaw podstawowych apletów (wskaźnik analogowy, wskaźnik cyfrowy, przycisk, suwak, „pasek postępu”) oraz biblioteki komunikacyjne, zapewniające transmisję danych między sterownikiem i apletami. Aplikacja WWW tworzona jest poprzez umieszczanie tagów <applet> z odpowiednimi parametrami (tag <param>) w kodzie HTML strony WWW. Tak przygotowana strona, umieszczona w pamięci FLASH sterownika, stanowi gotową, dostępną z zewnątrz aplikację SCADA. Pakiet FactoryCast został zaprojektowany jako zwarte, kompleksowe rozwiązanie, pozwalające na szybkie i łatwe tworzenie aplikacji SCADA, przy możliwie niskich wymaganiach odnośnie kwalifikacji projektanta – stąd łatwość konfiguracji i duża odporność pakietu na błędy użytkownika. Dobrze dobrany zestaw kilkunastu apletów pozwala na zbudowanie większości aplikacji. Bardziej skomplikowane aplikacje mogą wymagać zbudowania dodatkowych apletów za pomocą dołączonego SDK. Omawiana wersja 2.2.2 pakietu FactoryCast współpracuje z bibliotekami języka Java w wersji 1.1.5 i późniejszych. Wprawdzie oznacza to zgodność zarówno z środowiskiem Java firmy Sun Microsystems jak i z jego Microsoft’owym odpowiednikiem, jednak aktualną wersję Javy Sun’a, 1.4.2, dzieli od wersji 1.1.5 przepaść technologiczna. Dodatkowo Microsoft zarzucił wspieranie swojej wersji na rzecz języka C#. Co więcej, zmiany w Sun Microsystems Java 1.4.x w niektórych przypadkach uniemożliwiają działanie kodu pisanego w starych wersjach języka, zwłaszcza jeśli jest to kod nie do końca prawidłowo napisany lub nie spełniający wszystkich wymogów bezpieczeństwa. Biblioteki Java 1.1.x korzystają z nieco już dziś archaicznego sposobu tworzenia grafiki. Java 1.4.x zawiera biblioteki Swing, pozwalające na tworzenie znacznie wydajniejszych, efektowniejszych i wygodniejszych interfejsów użytkownika. W chwili projektowania bibliotek FactoryCast, bezpieczeństwo było istotnym, ale nie kluczowym aspektem. Stąd prostota systemu autoryzacji, nie przystającego do wymagań dzisiejszych rozwiązań. FactoryCast przewiduje jedną nazwę użytkownika i trzy hasła: pierwsze pozwala na dostęp do zabezpieczonej części aplikacji, drugie pozwala na zapis informacji do sterownika (pierwsze hasło umożliwia jedynie odczyt), trzecie hasło zabezpiecza dostęp do konfiguracji serwera. W 2003 roku powstał projekt NFC SCADA Library – pakietu będącego rozszerzeniem i częściowo alternatywą dla FactoryCast. W wersji 1.0 pakiet ten korzysta jeszcze z bibliotek komunikacyjnych FactoryCast, jednak całkowicie zastępuje jego warstwę prezentacyjną i konfiguracyjną. Wprowadza także inne podejście do problemu komunikacji aplet-serwer, jak również kilka innych ulepszeń. Między innymi operuje bezpośrednio na apletach, podczas gdy FactoryCast udostępnia tzw. Java Beans, które dopiero na stronie docelowej są „opakowywane” w formę apletu. Porównanie wybranych aspektów obu pakietów przedstawiają stosowne tabele. Projektowanie aplikacji Aplikacje projektowane są w formie stron WWW z umieszczonymi apletami FactoryCast (rys. 2) lub NFC SCADA Library (rys. 3). Struktura plików sterownika przewiduje dwa foldery na strony użytkownika: w folderze /wwwroot/unsecure/user można umieszczać strony ogólnodostępne. Folder /wwwroot/secure/user wymaga zalogowania (nazwa użytkonika i hasło). Obydwa foldery przewidują możliwość tworzenia podfolderów, pozwalając na efektywne i wygodne zarządzanie nawet skomplikowanymi witrynami-aplikacjami. NFC SCADA Library v 1.0 Łatwe i wygodne tworzenie stron użytkownika: Krok pierwszy – standardowy scenariusz <applet>+<param> pozwala na szybkie i łatwe tworzenie surowych stron, za pomocą zwykłego mechanizmu kopiuj-wklej oraz dostarczonych szablonów kodu html, które po drobnych modyfikacjach (nazwa apletu, ewentualnie kilka wartości). Końcowy użytkownik pracuje na rzeczywistych apletach, z pełnymi możliwościami parametryzacji. Pakiet FactoryCast v 2.2 Niewygodne tworzenie stron użytkownika: Krok pierwszy – prekonfiguracja elementów (Java Beans) za pomocą Graphic Editor’a pozwala na ich wizualne dopasowywanie, jednak są one odseparowane od docelowej strony WWW. Wyniki prekonfiguracji są zapisywane jako biblioteka. Krok drugi – aplet ConfManager pozwala na wygodne, wizualne, wykonywane „w locie” dopasowywanie wyglądu strony z niemal natychmiastowym (po odświeżeniu strony) efektem. Każdy aplet jest początkowo wyświetlany z domyślnymi, albo prekonfigurowanymi (patrz krok pierwszy) parametrami, dowolny parametr może być zmieniony w dowolnym czasie przez uprawnionego użytkownika (patrz krok trzeci). Rezultaty konfiguracji są zapisywane jako plik zawierający zestaw parametrów. (opcjonalny) Krok trzeci – modyfikacja wyglądu strony może być dokonana „w locie” przy użyciu apletu ConfManager z natychmiastowym (po odświeżeniu strony) skutkiem. Uprawniony użytkownik może zmienić dowolny parametr dowolnego apletu, przy czym dokonane zmiany widoczne są natychmiastowo dla wszystkich nowych połączeń z serwerem (lub dla każdego istniejącego połączenia po prostym odświeżeniu strony). Wybieralny schemat „look and feel” (schemat wyglądu i obsługi interfejsu użytkownika): Docelowy użytkownik może wybrać jeden z dwu schematów „look and feel”: standardowy, „metalowy” schemat (oznaczony jako „crossplatform”) i nowy, dynamiczny schemat, oznaczony jako „system”. Pierwszy z nich zapewnia jednakowy wygląd, obsługę i zachowanie apletów niezależnie od platformy (Windows, Unix, Linux, Mac) jak i wersji systemu operacyjnego. Drugi natomiast dostosowuje się do systemu operacyjnego danego użytkownika, dostosowując wygląd, obsługę i zachowanie apletów do odpowiedniego systemu operacyjnego, stąd aplety wyglądają inaczej i adekwatnie pod systemami takimi jak Windows 9x, Windows 2000, Windows XP, Linux, Mac OS, itp. Szczególnie pod Windows XP aplety wyglądają bardzo ładnie. Krok drugi – każdy prekonfigurowany elemet „Java Bean” musi zostać „opakowany” w LiveBeanApplet zanim może zostać wstawiony na stronę WWW. Powstałe aplety nie mogą być rekonfigurowane z poziomu docelowej strony WWW (patrz krok trzeci). (opcjonalny) Krok trzeci – modyfikacja wyglądu strony musi być wykonana poprzez modyfikację biblioteki za pomocą Graphic Editor’a lub poprzez ręczną manipulację kodem html. Pierwsze rozwiązanie jest także odseparowane od docelowej strony, a drugie nie pozwala na wstawienie na stronę obiektów nie włączonych do uprzednio (patrz krok pierwszy) utworzonej biblioteki. Pojedynczy schemat „look and feel”: Aplety mają jeden, standardowy, “metalowy” schemat „look and feel”. Występują duże różnice między wyglądem, zachowaniem i obsługą apletów a wyglądem, zachowaniem i obsługą natywnych aplikacji w poszczególnych systemach operacyjnych. Docelowy użytkownik (projektant) może skorzystać z jednego ze skryptów dostarczanych z NFC SCADA Library aby automatycznie dopasować tło strony WWW do apletów, nawet jeśli wybrany przez użytkownika „systemowy” schemat „look and feel” dopasowuje wygląd, a więc i kolor apletów do ustawień systemu konkretnego użytkownika. Docelowy użytkownik (projektant) musi wybrać odpowiednie tło strony aby dopasować je do „metalowego” wyglądu apletów. Rysunek 2 - przykładowa aplikacja FactoryCast (ilustracja ze strony www producenta) Regulator – metal look and feel Regulator – system look and feel (Win 2000) Monitor – metal look and feel Monitor – system look and feel (Win 2000) Rysunek 3 – różnice w stylach “look and feel” – pakiet NFC SCADA Library Komunikacja PC – PLC Omawiany moduł serwera WWW akceptuje dwa protokoły komunikacyjne: modbus TCP/IP oraz XWAY TCP/IP. Stosowne biblioteki zapewniają możliwość czytania, ustawiania i monitorowania zmienych wszystkich istotnych typów (BOOL, SHORT, INT, REAL i ich odmiany). NFC SCADA Library v 1.0 Jeden, prosty i silny, model komunikacji: Prosty i silny model „jeden CommManager – wiele źródeł i odbiorców danych”. Tylko jeden egzemplarz apletu CommManager jest potrzebny na jednej stronie. Każdy pozostały aplet może być źródłem danych, odbiorcą albo jednym i drugim. Co więcej, każdy aplet może zapisywać i/lub monitorować wiele adresów/wartości PLC. Aplet CommManager zbiera deklaracje źródeł/odbiorców danych od wszystkich apletów na stronie, po czym tworzy i rejestruje komponenty zapisujące/monitorujące dane, po jednym dla każdej unikalnej pary adres-typ, oraz zarządza całą komunikacją. Pakiet FactoryCast v 2.2 Dwa modele komunikacji: Model LiveBean-LiveBeanManager, wymagający umieszczenia egzemplarza apletu LiveBeanApplet dla każdego symbolu (zmiennej) lub bezpośredniego adresu monitorowanego/kontrolowanego na stronie. Przykładowo do kontrolowania trzech zmiennych potrzebne będą trzy aplety LiveBeanAplet. Dodatkowo na każdej stronie wymagany jest jeden egzemplarz apletu LiveBeanManager, pośredniczącego w transmisji i umożliwiającego włączenie zapisu do PLC (po zalogowaniu). Model „jeden aplet – jeden element comm bean”, dostępny m.in. dla celów tworzenia własnych apletów. Każdy aplet ma własny egzemplarz elementu CommBean i w rezultacie własne połączenie z PLC. Niestety, biblioteki komunikacyjne FactoryCast nie są prawidłowo przygotowane dla takiego modelu. Podczas testów z dwoma tak przygotowanymi apletami monitorującymi ten sam adres w PLC, drobne różnice czasu ładowania strony i inicjalizacji apletów decydowały o poprawnym lub niepoprawnym funkcjonowaniu komunikacji. Bezpieczeństwo Obydwa pakiety prezentują odmienne podejście do problemów bezpieczeństwa, a szczególnie do zagadnień autoryzacji użytkowników i przydzielania im uprawnień. NFC SCADA Library v 1.0 Bezpieczne zarządzanie komunikacją: Pakiet FactoryCast v 2.2 Luki w bezpieczeństwie w zarządzaniu komunikacją: Klasa CommManager pakietu NFC SCADA Library nie zezwala na pisanie do adresów ustawionych jako „tylko do odczytu”. Każde żądanie rejestracji źródła danych jest sprawdzane i akceptowane lub odrzucane w zależności od uprawnień użytkownika oraz stanu flagi „tylko do odczytu” konkretnego adresu. Rozbudowany system autoryzacji: Aplet AuthManager jest niezależny od apletu zarządzającego transmisją. Pozwala on na autoryzację uprawnień użytkownika. Pakiet NFC SCADA Library przewiduje możliwość zdefiniowania wielu użytkowników, każdego z własnym hasłem i własnym zestawem uprawnień. Informacje o użytkownikach i ich uprawnieniach są składowane w pamięci sterownika w postaci zaszyfrowanej. Algorytmy szyfrowania spełniają dzisiejsze wymagania bezpieczeństwa. Klasa CommBean pakietu FactoryCast zezwala na pisanie do adresów PLC ustawionych jako „tylko do odczytu”. To aplet-klient decyduje czy sprawdzać status adresu czy nie. Jest to dość istotna luka w bezpieczeństwie. Prosty system autoryzacji: Aplet LiveBeanMgr zarówno pośredniczy w komunikacji (patrz wyżej) jak i pozwala na autoryzację zapisu do sterownika. Generalnie pakiet FactoryCast przewiduje jedną nazwę użytkownika i trzy hasła: dostępu (wymagane dla dostępu do stron z folderu / wwwroot/secure/user), zapisu (wymagane dla włączenia możliwości zapisu wartości do zmiennej sterownika) i konfiguracji (wymagane m.in. przez program FactoryCast Configurator dla dostępu do drzewa katalogów sterownika). Hasła przechowywane są w postaci otwartego tekstu w plikach w pamięci sterownika (hasło konfiguratora jest zaszyfrowane prostym algorytmem). Podsumowanie Pakiet FactoryCast jest dość dobrą podstawą do tworzenia prostych systemów wizualizacji. Jednak przyszłość należy do rozwiązań dających większe możliwości graficzne, wygodniejszych i prostszych w użyciu, a przede wszystkim bardziej bezpiecznych. NFC SCADA Library bazuje na najnowszej dostępnej wersji języka Java i jest stale aktualizowany. Nowatorskie podejście do konfiguracji znacząco zwiększa wygodę posługiwania się pakietem, a stale rozwijany aplet autoryzacyjny pozwoli na załatanie istotnych luk w zabezpieczeniach, pozwalając na użycie stworzonych aplikacji zarówno w intra- jak i w internecie. Planowane kierunki rozwoju, jak wsparcie dla urządzeń mobilnych (PDA, telefony z technologią Java), dodatkowa autoryzacja w krytycznych punktach (karty chipowe (smartcards), identyfikatory bezprzewodowe (RFID)), wsparcie dla OPC czy szyfrowanie transmisji czynią NFC SCADA Library pakietem na miarę XXI wieku. Demonstracja pakietu NFC SCADA Library oraz dodatkowe informacje o produkcie będą czasowo dostępne pod adresem http://nfc.intechion.com. Dodatkowo odpowiedzi na pytania będzie można uzyskać poprzez e-mail: [email protected] / [email protected] lub [email protected] / [email protected]