Komunikacja z urzadzeniami firmy Elektrometal S.A. za pomoca

Transkrypt

Komunikacja z urzadzeniami firmy Elektrometal S.A. za pomoca
Tomasz Knebel
prof. J.Figwer
Celem pracy jest stworzenie zestawu
aplikacji uruchomionych na serwerze bazodanowym, służącym do zbierania, przechowywania i wyświetlania danych pochodzących z
” S.A.:
urządzeń firmy „
s
• górniczej lampy nahełmnej ELM-01
• urządzenia mikroprocesorowego MUS-04
MONITOROWANE
URZĄDZENIE
PORT
SZEREGOWY
ŁĄCZE
SZEREGOWE
SERWER
BAZODANOWY
(komputer)
IP-Server
INTERFEJS
SIECIOWY
SERWER WWW
(
)
ZESTAW SKRYPTÓW
(
)
BAZA
DANYCH
(
)
INTERFEJS
SIECIOWY
APLIKACJA DO
ZBIERANIA
DANYCH
(
)
URZĄDZENIE
DOSTĘPOWE
(komputer)
INTERFEJS SIECIOWY
PORT SZEREGOWY
PORT
SZEREGOWY
• obsługa „demona” obsługującego IP-serwer
(program dostarczony przez producenta)
• aplikacja (w Borland C++ Builder v6.0)
pośrednicząca pomiędzy bazą danych
a wirtualnym portem szeregowym (IP-serv)
• baza danych zgodna z SQL-92 (mySQL)
• serwer WWW (Apache) obsługujący SSL,
połączony z interpreterem PHP w wersji 5
• istnieje od 1948 roku (od 1996 jako S.A.)
• posiada certyfikaty IQNet-u oraz PCBC
dot. Zintegrowanego Systemu Zarządzania
• realizuje projekty w kraju oraz za granicą
• działa w branży automatyzacji górnictwa,
oświetlenia przemysłowego, reduktorów
ciśnienia gazu oraz świadczenia usług
„Górnicza lampa nahełmna przeznaczona
jest do indywidualnego oświetlenia miejsca pracy (1500 luxów z odległości 1 m).
Wykonanie iskrobezpieczne kategorii ia oraz stopień
ochronny obudowy IP65 pozwala na stosowanie lampy
w pomieszczeniach o dowolnej koncentracji metanu.”
• trwałość źródła światła wynosi 100 000 godzin
• przejrzysty system informowania o stanie akumulatora i możliwość transmisji danych z lampy
do systemu wizualizacji i nadzoru pracy lampowni
• niska emisja cieplna źródła światła - dzięki
zastosowaniu superjasnych 1-watowych diod LED
• światło białe; nie ulega zmianie przy rozładowaniu
• suchy, bezobsługowy akumulator
• mała masa – zaledwie 1,3 kg
„Mikroprocesorowe urządzenie sterujące
MUS-04 jest w pełni programowalnym
urządzeniem umożliwiającym sterowanie
wybranymi urządzeniami lub procesami technologicznymi. Jest urządzeniem iskrobezpiecznym i może być
stosowane w pomieszczeniach o koncentracji metanu :
• dowolnej (przy zasilaniu lokalnym)
• określonej przepisami (przy korzystaniu z sieciowego
z zasilacza iskrobezpiecznego)”
• kontrola 8 obwodów wejściowych typu: styk,
styk szeregowo z diodą lub klucz elektroniczny
• sterowanie 8 obwodami wyjściowymi
• sygnalizacja stanu wejść na diodach LED
• generowanie komunikatów na wyświetlaczu LCD
• programowanie bezpośrednio z klawiatury
• wyposażenie w interfejs RS 485, umożliwiający
wizualizację procesów i wpisywanie parametrów
•
•
•
•
kontrola stanu pracy i zaistniałych alarmów
przygotowanie pakietu o stanie urządzenia
(nawiązanie komunikacji) i nadanie pakietu
przyjęcie komend sterujących i wykonanie
poleceń – przeprogramowanie (opcjonalnie)
• odmierzenie czasu do kolejnego pakietu
(zwykle nadawane są z odstępem 500ms)
• wizualizacja parametrów procesu ciągłego
• wolnozmienne stany analogowe
• konieczność potwierdzania transmisji (zmian)
• obsługa formatu ramek ASCII Modbus
• szybkozmienne stany cyfrowe
umożliwia podłączenie urządzenia wykorzystującego port szeregowy
standardu RS232; pozwala na komunikację z dowolnym komputerem
(wyposażonym w „firmowego” demona) znajdującym się w zasięgu
lokalnej sieci Ethernet (standardowo długość kabla ograniczona do 15m)
pozwala na wygodne podłączenie urządzenia
do IP-Servera
lub bezpośrednio do komputera (automatycznie dokonuje konwersji
pomiędzy różnymi standardami transmisji sparametryzowanymi przez:
prędkość transmisji, ilość bajtów danych, ilość żył sygnałowych)
• jako standard ISO/ANSI istnieje od 1986 roku
• aktualnie obowiązuje SQL92 (wchodzi SQL2003)
• niezależny od sprzętu i fizycznej struktury danych
• składnia podobna do uproszczonej mowy ludzkiej
• nie jest językiem programowania (nie umożliwia
pisania kompletnych uruchamialnych programów)
• CREATE
• DROP
• ALTER
•
• INSERT
• UPDATE
• DELETE
• Składnia najprostszego zapytania:
tabela
• Rozbudowana wersja zapytania:
tabela
warunek
• Zapytanie niepewne (użycie „wildcards”):
tabela
kolumna
• Zapytanie z sortowaniem wyników:
tabela
kolumna
wzór
• Przyspieszają wyszukiwanie danych (nawet
w niewielkich zbiorach) – przegląd indeksu
zamiast całej zawartości tabeli
• Zakłada się je dla pól, dla których operacja
wyszukiwania jest najczęstsza
• Indeks zakładamy poleceniem:
tabela
indeks kolumna
WADY:
WADY:
• duża objętość
• możliwa nieaktualność
• bardzo wolne szukanie
(rekonstrukcja wpisów)
ZALETY:
• wpisy zawsze aktualne
• efektywne szukanie
(tylko przeglądanie)
ZALETY:
• mała objętość
•
•
•
•
Język skryptowy, działa po stronie serwera
Stworzony w 1994 przez Rasmusa Lerforda
17 milionów witryn na PHP (sierpień 2004)
Open source („wolne” źródla do wglądu,
zmian i redystrybucji - wszystko bezpłatnie)
• Aktualnie wprowadzana jest wersja 5 (wciąż
w użyciu wersja 4 – dobrze przetestowana)
•
•
•
•
•
Łatwość nauki (bardzo podobny do C++)
Wysoka wydajność
Język interpretowany
Wygoda stosowania (brak deklaracji typów)
Integracja z bazami danych (bezpośrednia
lub przy pomocy mechanizmu ODBC)
• Biblioteki rozwiązań popularnych problemów
J. INTERPRETOWANY
•
•
•
•
zawsze jako instrukcje
przetwarzany on-line
bez optymalizacji
wolniejszy w działaniu
J. KOMPILOWANY
•
•
•
•
zmieniony w „binaria”
proces kompilacji
optymalizacja kodu
szybki w działaniu
•
•
•
•
•
•
•
Wspiera obsługę standardu SQL-92
Ułatwia kontrolę dostępu do danych
Wspiera proces logowania i kontrolę sesji
Umożliwia pisanie obiektowe lub proceduralne
Nie wymaga deklarowania typów (dowolność)
Umożliwia generowanie grafiki
Pozwala wykorzystać jeden szablon strony
Sposoby obsługi portu
szeregowego - opis
• zlecamy zapis/odczyt
i czekamy na
obsłużenie naszego
żądania (wszystkie
inne procesy są w tym
czasie zablokowane)
• zlecamy zapis/odczyt,
odczekujemy pewien
czas i dopiero
pobieramy wyniki
(pozostałe procesy
działają w tym czasie
normalnie)
Sposoby obsługi portu
szeregowego - schemat
synchronicznie
asynchronicznie
Synchroniczna obsługa
portu szeregowego (1)
•
•
•
Synchroniczna obsługa
portu szeregowego (2)
handle =
(
”)
// pointer to name of the file („
// access (read-write) mode (
// share mode ( )
// pointer to security attributes (
)
// how to create (
)
// file attributes ( )
// handle to file with attributes to copy (
)
(
// handle to file to write to (
)
)
, )
)
Synchroniczna obsługa
portu szeregowego (3)
(
// handle to file to write to (
)
// pointer to data to write to file ( )
// number of bytes to write ( )
// pointer to number of bytes written (
)
// pointer to structure needed for overlapped I/O (
)
)
Synchroniczna obsługa
portu szeregowego (4)
(
// handle of file to read (
)
// address of buffer that receives data ( )
// number of bytes to read ( )
// address of number of bytes read (
// address of structure for data (
)
)
)
Mechanizm „limitów
czasowych” - opis
Przy wykorzystaniu synchronicznej obsługi portu
szeregowego zalecane jest stosowanie mechanizmu
“limitów czasowych” (ang. time out).
Deklarowane w strukturze DCB (Data Control Byte)
pozwalają uniknąć „zawieszenia” programu oczekującego
na nadejście danych, w sytuacji gdy nic nie jest nadawane.
Rozróżniamy limit dotyczący poszczególnych znaków
oraz limit przeznaczony na całość transmisji.
Mechanizm „limitów
czasowych” - schemat
Lampa nahełmna
Urządzenie sterujące
Ekran logowania (stara wersja)
Wybór zadania (stara wersja)
Wizualizacja stanu lampy
oraz sterowanie (stara wersja)