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)