Prototyp mikroserwera WWW - Pomiary Automatyka Robotyka
Transkrypt
Prototyp mikroserwera WWW - Pomiary Automatyka Robotyka
Pomiary Automatyka Robotyka 11/2005 Prototyp mikroserwera WWW dla regulatora RM-32 z protokołem Modbus Dariusz Rzońca Bartosz Trybus * M ożliwość komunikacji ze sterownikami i innymi urządzeniami automatyki za pośrednictwem sieci Internet spotyka się z coraz większym zainteresowaniem. Zastosowanie takich łączy dotyczy wymiany danych pomiędzy dwoma oddalonymi urządzeniami, najczęściej sterownikiem i komputerem. W ten sposób można zrealizować szereg rozwiązań, których celem może być: a) śledzenie procesu mimo znacznego oddalenia od instalacji b) jednoczesne nadzorowanie kilku obiektów rozmieszczonych daleko od siebie c) zdalne konfigurowanie i zmiana parametrów urządzeń. Większość dotychczasowych rozwiązań internetowych dotyczy dużych systemów sterowania. Podobne możliwości istnieją również przed systemami opartymi na niewielkich urządzeniach, np. regulatorach mikroprocesorowych. Lukę tę może wypełnić przedstawiony konwerter protokołów lokalnych i internetowych. Pełni on jednocześnie rolę serwera WWW, umożliwiając zdalny nadzór, obsługę i akwizycję danych procesowych (rys. 1). Komunikaty w protokole MODBUS są zorganizowane w ramki składające się z pól znacznika początku, adresu urządzenia podrzędnego, wywoływanej funkcji, danych, kontroli poprawności transmisji oraz znacznika końca. Ogólna postać ramki jest przedstawiona w tab. 1. Tabela 1. Ramka komunikatu MODBUS Znacznik początku MW3 MODBUS WD Suma kontrolna Dane Znacznik końca Tabela 2. Podstawowe funkcje MODBUS Kod Funkcja Kod Funkcja 01 Odczyt wielu wyjść binarnych 06 Zapis jednego rejestru 02 Odczyt wielu wejść binarnych 07 Odczyt bajtu alarmów 03 Odczyt wielu rejestrów wyjściowych 15 Zapis wielu zmiennych binarnych 04 Odczyt wielu rejestrów wejściowych 16 Zapis wielu rejestrów 05 Zapis jednej zmiennej binarnej ST BA Kod funkcji Protokół MODBUS definiuje dwa tryby transmisji: ASCII oraz RTU. Zdecydowanie popularniejszy jest tryb RTU, w którym dane są kodowane binarnie. Większość urządzeń aparatowych obsługuje podstawowe funkcje MODBUS, tzw. funkcje klasy 1, przedstawione w tab. 2. Internet Sieć lokalna Adres urządzenia MODBUS/TCP Ethernet MODBUS HTTPS ST BAT Konwerter MW3 Regulatory Zdalni użytkownicy Rys. 1. Schemat komunikacji internetowej z użyciem konwertera MW3 Protokoły Modbus i Modbus/TCP W aparatowych urządzeniach automatyki (urządzeniach warstwy bezpośredniego sterowania) bardzo często wykorzystywany jest protokół MODBUS [1]. Umożliwia on komunikację master-slave. * mgr inż. Dariusz Rzońca, dr inż. Bartosz Trybus – Katedra Informatyki i Automatyki, Politechnika Rzeszowska W sieci Ethernet protokół MODBUS występuje jako MODBUS/TCP [2]. Osadza on ramkę MODBUS w polu danych ramki TCP, jak pokazano w tab. 3. Znaczenia poszczególnych pól ramki: Identyfikator transakcji – dwubajtowe pole identyfikujące zapytanie, pozwalające powiązać je z odpowiedzią. Klient ustala to pole, dowolnie wysyłając komendę, zaś serwer kopiuje otrzymaną wartość do odpowiedzi. Identyfikator protokołu – dwubajtowe pole przyjmujące wartość 0, zarezerwowane do przyszłych rozszerzeń protokołu. 5 Pomiary Automatyka Robotyka 11/2005 Długość – dwubajtowe Tabela 3. Pole danych ramki TCP w protokole MODBUS/TCP pole określające liczbę Pole danych ramki TCP bajtów w komunikacie. Starszy bajt jest zerem, Ramka MODBUS bo liczba bajtów nie Identyfikator Identyfikator Długość Identyfikator jednostki transakcji protokołu może przekroczyć 255. Kod funkcji Dane (adres urządzenia) Identyfikator jednostki – jednobajtowe pole określające urządzenie, do którego adresowane Tabela 4. a) Przykładowy komunikat, b) odpowiedź w protokole MODBUS/TCP jest zapy tanie. Adres a) urządzenia z protokołu Dane MODBUS został zastąIdentyfikator Identyfikator Identyfikator Długość Kod funkcji Adres Liczba piony przez jednobajtransakcji protokołu jednostki początkowy rejestrów towy identyfikator jednostki, umożliwiając 00 00 00 00 00 06 09 03 00 04 00 01 komunikację wykorzystującą pojedynczy adres IP do obsługi wielu nie- b) zależnych jednostek. Dane Kod funkcji – jednobajIdentyfikator Identyfikator Identyfikator Długość Kod funkcji Liczba odczytanych towe pole określające transakcji protokołu jednostki Wartość bajtów wywoływaną funkcję, o identycznym znacze00 00 00 00 00 05 09 03 02 00 05 niu jak w standardowym MODBUS-ie. Dane – pole o zmiennej długości zawierające inforjące zabezpieczenia, a właściwie brak zabezpieczeń, macje związane z funkcją (identycznie jak w MODco ułatwia przejęcie poufnych danych lub – nawet BUS-ie). W niektórych funkcjach pole to nie wystę– sabotaż. Możliwość obsługi sterownika z dowolnego puje. komputera przy braku kontroli dostępu, uwierzytelKontrola poprawności transmisji odbywa się za niania i szyfrowania jest dużym zagrożeniem. Istnieje pomocą standardowych mechanizmów TCP, nie zaś więc potrzeba uwierzytelniania operatora, szyfrowapoprzez sumę kontrolną MODBUS-a. nej transmisji lub zawężenia funkcjonalności realizoKlient nawiązuje połączenie TCP z serwerem, używanej z komputerów zdalnych. wając portu 502. Następnie wysyła do serwera ramkę polecenia i czeka na odpowiedź. Serwer po otrzymaKomunikacja internetowa niu ramki analizuje ją. Jeżeli ramka jest nieprawidłowa z wykorzystaniem konwertera MW3 (niezerowy identyfikator protokołu, długość większa niż 255 itp.), to serwer jednostronnie zamyka połąJednym z urządzeń opracowanych w Politechnice czenie. Jeżeli ramka jest prawidłowa, to serwer wyRzeszowskiej, produkowanym w Zakładzie Produkkonuje polecenie i zwraca odpowiedź do klienta (lub cji Doświadczalnej Automatyki w Ostrowie Wielkozwraca kod błędu, analogicznie jak w standardowym polskim, jest regulator RM-32 (rys. 2) [3]. Umożliwia MODBUS-ie). Klient po otrzymaniu odpowiedzi może on komunikację z komputerem nadrzędnym według wysłać kolejny komunikat lub zamknąć połączenie. protokołu MODBUS RTU w standardzie RS-232C lub Klient może jednostronnie zakończyć połączenie RS-485. Obsługiwane są podstawowe funkcje MODw przypadku braku odpowiedzi przez zadany czas. BUS-a klasy 1 (tab. 2). Pozwala to na szybsze wykrycie błędu komunikacji W celu umożliwienia komunikacji po sieci Ethernet i ewentualne ponowienie transmisji niż przy korzywedług protokołu MODBUS/TCP konieczne stało się staniu jedynie ze standardowych mechanizmów TCP. opracowanie zewnętrzSerwer powinien mieć możliwość jednoczesnego nego konwertera. Konprzyjmowania wielu połączeń, właśnie w celu szybwerter MW3 powstał kiego ponowienia transmisji przy błędach. dla komunikacji interW tab. 4a przedstawiono przykładowy komuninetowej z urządzeniami kat (szesnastkowo) – odczyt rejestru wyjściowego wa rst w y bezpośred (funkcja 03) o adresie 4 ze sterownika o numerze 9. niego sterowania, jak Odpowiedź sterownika oznaczającą, że w rejestrze jest zapisana liczba 5 pokazano w tab. 4b. Protokół MODBUS/TCP umożliwia nadzór nad steRys. 2. Regulator mikroprocesorowy rownikiem z dowolnego komputera w sieci Intranet RM-32 lub Internet. Należy jednak uważać na niewystarcza- 6 Pomiary Automatyka Robotyka 11/2005 regulator RM-32, czy system PSW/WWT-166 [4]. Konwerter umożliwia pracę w dwóch trybach: konwersji MODBUS/TCP oraz serwera WWW. Pierwszy z nich dotyczy sieci Intranet z protokołem TCP/IP. Stanowiska monitorowania i nadzoru znajdujące się w takiej sieci uzyskują dostęp do regulatorów za pośrednictwem konwertera (rys. 3). Umożliwia to śledzenie sygnałów procesowych oraz konfigurowanie i obsługę za pomocą standardowych narzędzi. Połączenie takie może być szyfrowane. Dokonuje tego oprogramowanie konwertera oraz komputera zdalnego. Możliwe jest także wykorzystanie tego trybu w sieci Internet. MW 3 MODBUS/TCP TCP MODBUS RTU IP RS-232 Ethernet Rys. 3. Schemat konwersji protokołów MODBUS z użyciem MW3 Drugim trybem pracy konwertera MW3, przeznaczonym dla sieci Internet, jest praca jako serwer WWW. Względy bezpieczeństwa mogą wymagać rezygnacji z bezpośredniego przesyłania danych. Użytkownik otrzymuje określony zestaw funkcji do obsługi i konfiguracji sterownika. Użytkownik może mieć ograniczone prawa, np. jedynie odczyt parametrów z urządzenia. Poprzez Internet są przesyłane obrazy związane z interfejsem oraz polecenia. Założono, że program do zdalnej obsługi regulatora będzie wykonywany nie po stronie użytkownika internetowego, lecz przez konwerter MW3, który pośredniczy między regulatorami a użytkownikiem internetowym. Oprogramowanie konwertera MW3 jest realizowane za pomocą dynamicznych stron WWW, wyświetlanych w przeglądarce internetowej na komputerze użytkownika zdalnego. Program określa wygląd strony WWW przy zajściu określonych warunków oraz określa podejmowane czynności, gdy użytkownik prowadzi interakcję ze stroną (naciska przyciski). Komputer zdalny nie musi mieć zainstalowanego żadnego specjalizowanego oprogramowania – użytkownik pracuje z interfejsem, który poprzez Internet dostarcza przeglądarce serwer WWW konwertera (rys. 4). Architektura ta pozwala odseparować sieć lokalną od Internetu oraz umieścić w jednym miejscu funkcjonalność związaną ze zdalnym dostępem do urządzenia. Zastosowano autoryzację użytkownika oraz szyfrowanie transmisji. Serwer MW3 zapobiega także ewentualnym konfliktom, kolejkując zdarzenia związane z obsługą oraz blokując żądania innych użytkowników. Budowa wewnętrzna konwertera Wykorzystano sprzętowy moduł komunikacji w standardzie Ethernet. Moduły takie zawierają sprzętowy kontroler sieci Ethernet, mikroprocesor sterujący pracą całego urządzenia i ewentualnie dodatkowe urządzenia peryferyjne. Szczególnie interesującym rozwiązaniem jest projekt Ethernut [5]. W jego ramach opracowano zarówno oprogramowanie dostępne na zasadach Open Source, jak i sprzęt dostępny jako Open Hardware. Oznacza to, że przy konstruowaniu własnych urządzeń, także komercyjnych, można swobodnie korzystać ze schematów, wzorów płytek drukowanych, dokumentacji, kodów źródłowych i przykładów. Co więcej, wszystkie źródła programów można skompilować przy użyciu kompilatora AVR-GCC, również dostępnego na zasadach Open Source. Pozwala to zminimalizować nakłady na opracowanie urządzenia, przy jednoczesnej gwarancji stabilności wielokrotnie przetestowanego środowiska. Rys. 5. Wygląd płyty głównej konwertera MW3 Rys. 4. Strona WWW wygenerowana przez serwer MW3 Moduł Ethernut 1.3 jest oparty na popularnym ośmiobitowym mikrokontrolerze ATmega128 z rodziny Atmel AVR. Jako kontroler sieciowy jest używany zewnętrzny układ scalony RTL8019AS firmy Realtek. Specjalnie na potrzeby tego projektu został opraco- 7 Pomiary Automatyka Robotyka 11/2005 wany system operacyjny czasu rzeczywistego Nut/OS, pozwalający na uruchomienie stosu TCP/IP Nut/Net oraz własnych aplikacji. Nut/OS zapewnia wielowątkowość bez wywłaszczania, kolejkowanie zdarzeń oraz dynamiczną alokację pamięci. Z punktu widzenia programisty komputerów PC są to podstawowe zadania systemu operacyjnego, ale należy pamiętać, że do dyspozycji jest jedynie ośmiobitowy mikroprocesor, którego pamięć liczy kilkadziesiąt kilobajtów. Stos TCP/IP implementuje protokoły ARP, IP, ICMP, UDP i TCP. Możliwa jest automatyczna konfiguracja przez DHCP lub praca na wcześniej zapisanych ustawieniach. Z poziomu Nut/OS są dostępne funkcje do budowy serwera HTTP z obsługą skryptów CGI tworzących dynamiczne strony WWW. Możliwe jest także wykorzystanie gniazd TCP i UDP w celu implementacji innych protokołów wyższej warstwy. MODBUS RTU UART Podsumowanie RAM CPU ATmega 128 LAN RTL8019AS MODBUS/TCP HTTP DataFlash Rys. 6. Struktura sprzętowa konwertera MW3 Firmy wytwarzające moduły ethernetowe opierają się często na projekcie Ethernut. Przykładem może być gdańska firma Propox i jej minimoduł MMnet02 [6]. Jest on zbliżony do standardowej płyty Ethernut, ale zawiera sporo interesujących ulepszeń, jak większa pamięć RAM z elastycznym kontrolerem pamięci, pamięć DataFlash (64 Mbit) oraz zegar czasu rzeczywistego. Oprogramowanie wykorzystuje system operacyjny Nut/OS, ale również zawiera kilka przydatnych uzupełnień, jak serwer plików FTP czy biblioteki do obsługi wyświetlacza LCD i zegara. Do budowy prototypu mikroserwera MW3 zdecydowano się na minimoduł MMnet02. Główny nacisk położono na utworzenie oprogramowania realizującego założoną funkcjonalność. Konieczne stało się przede wszystkim zaimplementowanie protokołów MODBUS RTU dla łącza szeregowego oraz MODBUS/ TCP dla Ethernetu. Opracowano także oprogramowanie konwertujące komunikaty. Dla zwiększenia bezpieczeństwa komunikacji wprowadzono procedury szyfrujące i uwierzytelniające transmisję. Bezpieczne uwierzytelnianie klienta zrealizowano za pomocą protokołu challenge-response [7], generując jednocześnie jednorazowy klucz sesji używany do szyfrowania dalszej części transmisji silnym symetrycznym algorytmem kryptograficznym. Proces autoryzacji przebiega następująco. Operator podczas logowania wprowadza na stacji tajne hasło. Stacja nawiązując połączenie, otrzymuje od serwera pewną losowo wygenerowaną 8 liczbę. Na podstawie tej liczby oraz tajnego hasła, za pomocą jednokierunkowej funkcji skrótu zarówno na stacji operatorskiej, jak i na serwerze są generowane odpowiedź oraz klucz sesji. Stacja przesyła obliczoną odpowiedź do serwera, który weryfikuje jej poprawność. Jeśli odpowiedź jest poprawna, to dalsza komunikacja jest szyfrowana wygenerowanym kluczem sesji. Warto podkreślić, że proces generowania klucza przebiega niezależnie na obu urządzeniach i ani główne hasło, ani klucz sesji nigdy nie jest przesyłany w żadnej formie. Dzięki temu komunikacja jest zabezpieczona zarówno przed nieautoryzowanym dostępem, próbami podsłuchu, jak też przed atakami typu man-in-the-middle. Podczas tworzenia oprogramowania konieczne stało się również dostosowanie serwera WWW wbudowanego w konwerter MW3 do dynamicznego generowania stron prezentujących wizualizację procesu. Wprowadzono także szereg innych pomniejszych zmian. W artykule przedstawiono konwerter protokołów MW3, pełniący również funkcję serwera WWW. Jego główne zastosowanie dotyczy aparatowych urządzeń automatyki komunikujących się według protokołu MODBUS. Umożliwia on rozwiązanie problemu integracji urządzeń z siecią Internet. Niewielkie wymiary sprzętowego modułu konwertera pozwalają na stosunkowo łatwe doposażenie istniejących instalacji w funkcje komunikacji internetowej. W ten sposób można prowadzić zdalny nadzór i obsługę urządzeń. Wbudowane w MW3 mechanizmy bezpieczeństwa pozwalają zminimalizować ryzyko związane z zastosowaniem ogólnodostępnego medium transmisyjnego. Praca jest częściowo finansowana przez Ministerstwo Nauki i Informatyzacji, grant nr 4 T11A 017 24 Bibliografia 1. Modicon MODBUS Protocol Reference Guide, Massachusetts 1996. 2. A. Swales, Open MODBUS/TCP specification, Schneider Electric 1999. 3. Z. Świder, W. Milkuszka, D. Rzońca, B. Trybus, Integracja protokołów CAN i MODBUS w rozproszonym systemie sterowania, PAK 1/2005. 4. W. Milkuszka, B. Trybus, Konwersja protokołów w rozproszonym systemie sterowania PSW/WWT-CAN, SCR 2001, Krynica. 5. Ethernut – Embedded Ethernet Devices, www. ethernut.de. 6. MMnet02 Minimoduł ethernetowy. Instrukcja użytkownika, Propox 2004, http://www.propox. com/download/docs/MMnet02_pl.pdf. 7. W. Strothmann, Kryptografia. Teoria i praktyka zabezpieczania systemów komputerowych, Read Me 2000.