Dziś jest piątek, 23 sierpień 2019 r.
Energoelektronika.pl na stronach Facebook REKLAMA MAPA SERWISU KONTAKT
Strona główna Załóż konto Artykuły branżowe Katalog firm Seminaria FAQ Kalendarium Słownik Oferta
Wyszukaj
1USD 3.9337 +0.32% 1EUR 4.366 +0.34% 1GBP 4.7784 +0.34%
Zaloguj się
Login (adres e-mail):
Haslo:
  Rejestracja
  Zapomniałem hasła
Reklama

Aktualności
32 edycja targów Energetab 2019 juz za cztery tygodnie
więcej
Nowy cykl szkoleń praktycznych związanych z programowaniem sterowników marki Siemens
więcej
Siemensa buduje fabrykę dla Przemysłu 4.0 w Polsce
więcej
Cykl szkoleń z zakresu programowania sterowników SIMATIC S7-300, S7-1200
więcej

Zobacz archiwum

Kalendarium
11 wrzesień 2019
72 edycja Seminarium dla Służb Utrzymania Ruchu 
więcej
17 wrzesień 2019
ENERGETAB - największe w Polsce targi energetyki i elektrotechniki 
więcej
Newsletter
Jeżeli chcesz otrzymywać aktualne informacje o wydarzeniach w branży.
Podaj e-mail do subskrypcji:


Aktualności

Szczegóły budowy wizualizacji WWW - cz.1

28 czerwiec 2012.

Platforma iMod znajduje szerokie zastosowanie w systemach rozproszonych zarówno jako moduł telemetryczny jak i urządzenie komunikująco - sterujące. Urządzenie iMod posiada wbudowaną obsługę protokołów komunikacyjnych takich jak Modbus, Mbus lub TCP/IP.

Wykorzystując te protokoły moduł ma możliwość zbierania i przetwarzania informacji z różnego rodzaju czujników oraz mierników. Dane te mogą być udostępniane i sterowane na różne sposoby, jednym z najbardziej uniwersalnych sposobów jest dostęp do danych z dowolnego miejsca z poziomu przeglądarki WWW.

 

Moduł telemetryczny iMod w celu udostępniania danych wykorzystuje wbudowany serwer www ? Apache - z obsługą PHP i baz danych (SQLite oraz PSQL). Uniwersalność tej metody dostępu do danych wynika z faktu iż zbudowany przez użytkownika interfejs WWW działa pod każdą przeglądarką i umożliwia ciągły podgląd informacji rejestrowanych przez urządzenie iMod. Aby zbudować prosty interfejs WWW wystarczy znać podstawy języka HTML, PHP oraz obsługi baz danych.
 

1. Konfiguracja iMod`a

Aby odczytywać dane za pomocą przeglądarki internetowej należy w pierwszej kolejności odpowiednio skonfigurować iMod`a. W tym celu zostanie wykorzystany plik example1-hardware_access.xml znajdujący się w katalogu /mnt/mtd/iMod/config/example. Konfiguracja ta jest również domyślną konfiguracją znajdującą się na iModzie i zapewnia dostęp do zasobów sprzętowych urządzenia:

  • User Led
  • Wejście Cyfrowe DI1
Rejestracja do bazy danych w iMod'ziejest domyślnie włączona dla SQLite. Istnieje jednak również możliwość wysyłania wartości wprost z iMod engine do lokalnej bądź zewnętrznej bazy PostgreSQL.
 

2. Baza danych

Drugim krokiem jest stworzenie przykładowego pliku php który będzie sczytywał wcześniej zadeklarowane parametry i sterował nimi.

Wszystkie parametry zdefiniowane w pliku konfiguracyjny rejestrowane są do bazy danych SQLite znajdującej się w katalogu:

/mnt/ramdisk/modbus.db

Domyślna baza danych zawiera kolumny odpowiadające elementom jakie użytkownik jest w stanie zdefiniować w konfiguracji iMod`a:
Nazwa elementu w konfiguracji iModa Nazwa elementu w bazie SQLite
id TIGER_ID
description Name
scale Scale
comment Comment
unit Unit
offset Offset
Aby odczytać wartość wybranego parametru, należy odwołać się do zmiennej Value.
 

3. Konfiguracja PHP

Zdefiniowanie bazy danych

W pierwszej kolejności należy zdefiniować ścieżkę dostępu do bazy danych co wiąże się z podaniem jej lokalizacji. Baza danych SQLite na urządzeniu iMod wykorzystuje uniwersalny interfejs połączenia z baza danych PDO, dlatego w definicji bazy danych znajduje się odwołanie do tego interfejsu. Bazie danych modbus.db przypisujemy zmienną $db.  
 
  1. define('DB_SQLLITE','/mnt/ramdisk/modbus.db');
  2. $db = new PDO('sqlite:'.DB_SQLLITE);


Odczytanie wartości z bazy danych

Kolejnym krokiem jest odwołanie się do bazy danych i odczytanie z niej odpowiednich wartości dla wybranych parametrów ? w tym przypadku dla parametrów których Description w pliku MainConfig.xml został zdefiniowany jako USER_LED oraz DI1.  

  1. $sqlite = "SELECT TIGER_ID, Name, Value, SQLiteFlag FROM dane WHERE name='USR_LED' or name='DI1'";

Zmienna SQLiteFlag pozwala na zapis wybranych wartości bezpośrednio na urządzeniu NPE/iMod. Więcej na jej temat w dalszej części artykułu.

Następnie należy wyświetlić interesujące użytkownika parametry. W tym celu należy stworzyć tabelę, wraz z fragmentem formularza dzięki któremu użytkownik będzie w stanie dokonać zmiany wartości wybranego parametru. Dla przykładu z artykułu, zostanie stworzona tabela 4x3:

  1. echo "<table>";
  2. echo "<tr><td><b>ID</b></td><td><b>Name</b></td><td><b>Value</b></td></tr>";
  3. foreach($dbh->query($sqlite) as $row)
  4. {
  5. print "<tr><td>". $row['TIGER_ID']."</td>";
  6. print "<td>". $row['Name']."</td>";
  7. print '<td><form action="test.php?a=update" method="post">
  8. <input type="hidden" name="id" value="'.$row['TIGER_ID'].'"/>
  9. <input type="text" name="value_new" value="'.$row['Value'].'"/></td>';
  10. print '<td><input type="submit" value="upgrade"/>
  11. </form></td></tr>';
  12. }
  13. echo "</table>";


Zapisanie wartości do bazy danych

Wartość atrybutu action z formularza z punktu 3.2. zdefiniowana jest jako adres test.php?a=update. Zostaje tutaj wprowadzona zmienna $a. W momencie wciśnięcia przycisku update przy wybranym parametrze, zmienna $a przyjmuje wartość update. Zapis wartości parametru odbywa się przy wykorzystaniu funkcji logicznej ? w momencie kiedy zmienna $a przyjmuje wartość update. W takim wypadku zostaje z formularza sczytane id oraz wartość wybranego parametru, oraz zostaje ona zapisana do bazy danych.

Ważnym elementem jest przypisanie zmiennej SQLiteFlag wartości '1'. Ustawienie SQLiteFlag na '1' sprawia iż iMod engine pobierze wartość z tabeli i zapisze ją do parametru. Następnie, wyzeruje ponownie flagę zmiany. Takie rozwiązanie zwiększa wydajne monitorowanie wprowadzonych zmian przez WWW. Na sam koniec strona zostaje przeładowana w celu wczytania aktualnych wartości z bazy danych.

  1. if($_GET ['a'] =="update")
  2. {
  3. $id2=$_POST['id'];
  4. $value2=$_POST['value_new'];
  5. $sth = $dbh->exec("UPDATE dane SET SQLiteFlag = 1, Value = '$value2' WHERE TIGER_ID = '$id2'");
  6. header("location: " . $_SERVER['REQUEST_URI']);
  7. }


Zakończenie pracy z bazą danych

Ważnym elementem jest rozłączenie się z bazą danych. W tym celu wykorzystywana jest funkcja:

  1. $dbh = null;

Na sam koniec znajduje się funkcja wyświetlająca komunikaty o błędach. Przy prawidłowej pracy urządzenia, funkcja ta nie jest wywoływana w żaden sposób.

  1. catch (PDOException $e)
  2. {
  3. print "Error!: " . $e->getMessage() . "<br/>";
  4. die();
  5. }
 

W celach testowych istnieje możliwość wgrywania plików PHP do katalogu mnt/ramdisk/htdocs, jednak jest to część pamięci ulotnej, co powoduje że po restarcie iMod`a wszelkie zapisane pliki znikną. Dlatego wskazane jest umieszczenie przetestowanych plików w katalogu /mnt/nand-user/htdocs_src . Dzięki temu wszelkie zmiany zostaną zapisane na stałe, i widoczne będą po restarcie urządzenia.

Użyte pliki znajdują się na końcu artykułu w linku poniżej:

 Zobacz urządzenia z serii iMod

Zobacz część 2



Źródło: A2s
O nas  ::  Regulamin  ::  Polityka prywatności (Cookies)  ::  Reklama  ::  Mapa stron  ::  FAQ  ::  Kontakt
Ciekawe linki: www.klimatyzacja.pl  |  www.strony.energoelektronika.pl  |  promienniki podczerwieni
Copyright © Energoelektronika.pl