Studia przypadków / Sterowanie i akwizycja danych

Wykorzystanie serwera WWW w module ADAM-6217

22.01.2015 Producent: Advantech Zastosowanie: Zakłady przemysłowe
Wizerunek autora
Jarosław Molenda Inne artykuły tego autora
Wykorzystanie serwera WWW w module ADAM-6217

Poprzez implementację prostego serwera www, dla modułów występujących w serii ADAM-6200, producent przewidział między innymi możliwość korzystania z urządzeń za pośrednictwem zgodnej z HTML5 przeglądarki internetowej (za pośrednictwem komputera, tabletu czy nawet smartfona). Po wpisaniu do pola adresowego przeglądarki adresu IP modułu i po prawidłowym zalogowaniu (wymagane jest podanie hasła ustawianego za pomocą programu narzędziowego AdamApax .NET Utility) uzyskujemy widok fabrycznie wgranej do urządzenia prostej strony www, pozwalającej na wgląd w aktualne stany we/wy (wraz z krótkim trendem graficznym) oraz ewentualne wysterowanie poszczególnych wyjść (w zależności od typu modułu).

Oczywiście nic nie stoi na przeszkodzie, aby strona ta została odpowiednio zmodyfikowana we własnym zakresie przez użytkownika. Wystarczy odpowiednie przygotowanie samego kodu HTML (oczywiście w połączeniu z JavaScript). Dla dostępu do danych modułu będzie to ajax’owe wykorzystanie zaimplementowanych i szczegółowo opisanych w instrukcji użytkownika wywołań GET/POST (zgodnych z architekturą REST i zwracających informacje w postaci danych XML). Do graficznej reprezentacji wyników skorzystać możemy z występującego w specyfikacji HTML5 i pozwalającego na uzyskanie rozbudowanych grafik elementu (kontenera) „canvas”, a do interakcji z użytkownikiem oczywiście z obiektów formularzowych. Utworzony kod wgrywamy do pamięci modułu za pomocą utility ... i gotowe!

Ale prześledźmy krok po kroku "co, jak i dlaczego":

1. "Fabryczna" strona modułu uwzględnia wszystkie kanały pomiarowe, nawet te wyłączone - co czasem jest zbędne i może powodować zmniejszenie czytelności. Dlatego w naszym "projekcie" ograniczymy się tylko do sygnałów w danym zagadnieniu istotnych.

2. "Fabryczna" strona modułu wyświetla bezpośrednio wartości poszczególnych sygnałów. Informacja typu 6.712V czy 5.098mA nie jest zbyt oczywista - interesować nas będa przecież rzeczywiste wartości wielkości fizycznych. Dlatego w naszym "projekcie" uwzględnimy skalowanie, zgodne z charakterystyką podłączonych przetworników obiektowych.

3. Prosty schemat synoptyczny (tutaj przykładowo zbiornik z dopływem i trzema punktami odbioru) przygotowujemy w dowolnym programie graficznym, zapisujemy jako plik jpg/png i wstawiamy bezpośrednio do źródłowego pliku HTML (z wykorzystaniem kodowania Base64).

4. Dla każdego z istotnych tu sygnałów:

     - wypełniamy wartości w tablicy AI (opis, jednostka, wartości potrzebne do skalowania sygnał->wielkość fizyczna)
     - tworzymy element "canvas" (umieszczony na naszym schemacie w odpowiednim miejscu)
     - za pomocą przygotowanej funkcji Label1 jednorazowo umieszczamy na nim tekst z opisem

5. Cyklicznie, w funkcji "GetValues()":

     - za pomocą ajax'owego wywołania "GET /analoginput/all/value" pobieramy aktualne wartości z wszystkich kanałów pomiarowych
     - zwracane w formie znaczników XML, z wartościami HEX odpowiadającymi 16-to bitowym rejestrom WORD
     - następnie dla wszystkich zadeklarowanych w tablicy AI:

          - obliczamy rzeczywistą wartość wielkości fizycznej (AI[ch]['value'])
          - na przyporządkowanym doń elemencie "canvas" (AI[ch]['ctx']) wyrysowujemy miernik analogowy
          - za pomocą przygotowanych funkcji AnalogMeter1/2/3).

I to już wszystko. Wynikowy kod w postaci pliku o rozmiarze 77kb wgrywamy do pamięci modułu za pomocą programu narzędziowego, w przeglądarce wpisujemy adres IP naszego modułu ADAM-6217 oraz podajemy hasło dostępu. I uzyskujemy wgląd w aktualne dane fragmentu naszej instalacji.