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.