Moravské přístroje, a. s., zdroj: https://www.mii.cz/art?id=1011&lang=405, vytištěno: 30.04.2025 16:06:33
Hlavní stránka▹Control Web - Ukázkové aplikace▹Komunikace (kanály, ovladače, síťové aplikace, web server) | 6.6.2019 |
---|
Archivaci mají v systému Control Web na starosti archivní datové sekce. Zobrazení archivních dat přístroj data_viewer. Toto rozdělení umožňuje jednak snadné sdílení archivních sekci mezi aplikacemi a také vytváření různých pohledů na stejná archivní data. V naší ukázce budeme chtít, aby měl uživatel možnost z webové aplikace ve formuláři zadat rozsah dat (počáteční a koncové datum) grafu. Po potvrzení mu aplikace zobrazí požadovaný graf. Naučíme se, jak přenést data z webového formuláře do Control Webu. Jak nastavit parametry přístroje data_viewer a jak obrázek tohoto přístroje zobrazit ve webové aplikaci. Krok 1: Aplikace archivujeZačneme tím, že si v aplikaci vytvoříme jeden archivní datový element. data alarm archiv1 {period = 1}; arch_1 = rand() * 100; end_alarm; end_data; perioda určuje, jak často se bude výsledek zadaného výrazu archivovat. Pro ukládání dat doporučujeme používat SQL server, který je k dispozici při instalaci systému Control Web. Vytvořenou aplikaci necháme chvíli běžet, abychom měli k dispozici nějakou historii a mohli se na ní později dívat. Nyní do aplikace vložíme přístroj data_viewer, který nám umožní archivní data sledovat. data_viewer je velice mocný přístroj, který umožňuje zobrazit historická data v tabulce nebo grafu. Je možné vybírat z obrovského množství zobrazení, typů časových nebo datových os a podobně. Kompletní popis tohoto přístroje by vydal na samostatný článek. My si nyní vystačíme pouze se základním nastavením (kompletní popis přístroje je možné najít v dokumentaci). V přístroji musíme nastavit jaké datové elementy bude zobrazovat. data_viever organizuje datové elementy ve skupinách (data groups). Pro náš datový element musíme vytvořit novou skupinu. a textový zápis tohoto nastavení: data_viewer data_viewer_1; data_group group_name = 'group1'; title = 'Skupina 1'; data_elements item data_element = archiv1.arch_1; end_item; end_data_elements; end_data_group; active_group = 'group1'; end_data_viewer; Přístroj data_viewer může pracovat ve dvou režimech:
V našem příkladu nám bude data_viewer v historickém módu vykreslovat grafy, které budeme jako obrázky zobrazovat na webu. Krok 2: Web serverNyní máme aplikaci připravenou, zbývá jen doplnit webový přístup. Web server je v systému Control Web v přístroji httpd. Pokud tento přístroj vložíme do aplikace bude součástí běžící aplikace web server. Podrobnější popis tohoto přístroje najdeme v jeho dokumentaci. Přístroj httpd může pracovat jako standardní HTTP server pouze vracející klientům soubory z disku. Současně ale poskytuje další služby:
My z této nabídky využijeme hned několik služeb. Nejprve vygenerujeme kořenovou stránku. Do ní vložíme HTML formulář pro zadání požadovaných parametrů (počátek a konec časové osy grafu). Data z formulářů příjmeme v Control Webu a podle nich vygenerujeme obrázek z přístroje data_viewer. Poznámka: Stalo se konvencí, že uživatel přistupující na WWW server poprvé nemusí zadat žádné jméno HTML dokumentu. Zadá pouze adresu WWW serveru. Server potom dostane požadavek s cestou obsahující kořenový adresář '/' a vrátí takzvaný indexový soubor (index file). Jméno indexového souboru definuje parametr index_file přístroje httpd. My vytvoříme následující indexový soubor: <html> <head> <title>Control Web</title> </head> <body> <b>Zobrazit graf</b><br> <form action="graf.html"> Od: <input type="text" name="from"> Do: <input type="text" name="to"> <input type="hidden" name="akce" value="nastav_graf"> <input type="submit" value="Zobrazit"> </form> </body> </html> V HTML se k formátování používají tzv tagy, které se zapisují do ostrých závorek. Pokud jsou párové, ukončovací začíná lomítkem. Například <b> </b> se používá pro zápis tučného textu. Pro definici webového formuláře se používá tag <form>. Všechny parametry, které jsou v rámci jednoho formuláře (tedy mezi form a /form) jsou odeslány současně v jednom požadavku. Parametry se definují tagem <input>. Mohou být zadávané uživatelem nebo skryté (type=hidden). Skryté parametry definuje autor HTML dokumentu a web serveru se odesílají vždy, bez možnosti zásahu uživatele (uživatel je na stránce nevidí). Aby mohl uživatel formulář odeslat, je vhodné do něj umístit <input type="submit">, který je zobrazen jako tlačítko. Jeho zmáčknutím odešle data formulář na server. Při odeslání formuláře zároveň HTTP klient (prohlížeč) požádá o novou stránku ta je určena parametrem action tagu form. Nyní můžeme naši aplikaci poprvé spustit a webovým prohlížečem se podívat na vytvořenou HTML stránku. Pokud přistupujeme z lokálního počítače, zadáme lokální adresu 127.0.0.1. Krok 3: Hodnoty z formulářeParametry ve formuláři se definují tagem input. Ten má parametr type, který určuje, jak je hodnota zadávána. Volba text říká, že uživatel bude editovat hodnotu v textovém řádku. Parametr name definuje jméno, s nímž je hodnota parametru poslána na server. V Control Webu bude každý příchozí parametr uložen do samostatné proměnné. Tyto proměnné se definují v parametrech přístroje httpd, v sekci forms. httpd Server; forms item id = 'from'; output = DateTimeFrom; end_item; item id = 'to'; output = DateTimeTo; end_item; end_forms; end_httpd Proměnné DateTimeFrom a DateTimeTo vytvoříme v aplikaci jako globální typu string. Pokud přijdou hodnoty pojmenované from a to z formuláře, uloží jejich hodnoty přístroj httpd do těchto proměnných. Poslední skrytý parametr pojmenovaný akce (bude vždy obsahovat hodnotu nastav_graf) použijeme k vyvolání akce, která nastaví počátek a konec grafu dle požadovaných parametrů. Tato akce se skládá ze dvou kroků. Prvním bude uživatelská procedura, která nastaví počátek a konec časové osy grafu. V druhém kroku aktivujeme přístroj data_viewer. Aktivace přístroje data_viewer je extrémně důležitá, zajistí, aby přístroj načetl data ze zadaného období a bylo možné z něj vytvořit obrázek, který později pošleme uživateli. Vyvolání prvního kroku nastavíme v parametrech přístroje httpd: form_calls item id = 'nastav_graf'; call = nastav_graf(); end_item; end_form_calls; V proceduře nastav_graf musíme ze dvou řetězců DateTimeFrom a DateTimeTo, zadaných uživatelem, dekódovat datum a čas a tyto zadat do přístroje data_viewer: procedure nastav_graf(); var From : real; To : real; begin From = date.StringToJD( DateTimeFrom ); To = date.StringToJD( DateTimeTo ); DV.SetXAxisRange( From,To ); end_procedure; Uživatelem zadané hodnoty převedeme na Juliánské datum. Aby převod proběhl správně, musí uživatel zadat datum a čas ve správném formátu. Pokud je v operačním systému nastaveno české prostředí, musí zadat například 19.12.2017 08:10:00. Pokud by zapomněl například nulu před číslem 8, převod se nepovede. Pro praktické použití bude tedy nutné tuto ukázku rozšířit tak, aby akceptovala i ne zcela přesný formát data a času. Je také možné nechat uživatele zadávat datum a čas v samostatných políčkách nebo zadávat zvlášť hodiny minuty a podobně. Další krok, který je nutné provést, je aktivace přístroje data_viewer. Tu opět zajistíme v parametrech přístroje httpd (web server): form_receivers item id = 'nastav_graf'; receivers = DV; end_item; end_form_receivers; Ještě jednou si zopakujme posloupnost akcí, které proběhnou, pokud uživatel potvrdí webový formulář:
Krok 4: Zobrazení grafu - přístrojeJakmile uživatel potvrdí webový formulář, prohlížeč odešle data serveru a načte stránku graf.htm. To způsobí parametr action tagu form v našem HTML kódu: <form action="graf.html"> Stránka graf bude obsahovat pouze obrázek grafu. <html> <head> <title>Control Web</title> </head> <body> <b>Graf</b><br> <img src="/DV"> </body> </html> Stránka obsahuje obrázek, který bude prohlížeč číst ze serveru. V našem web serveru musíme nastavit, aby tento obrázek nehledal na disku, ale vygeneroval jej při každém požadavku z přístroje data_viewer. To nastavíme v parametrech přístroje httpd: instruments item path = '/DV'; instrument = DV; end_item; end_instruments; Aplikaci máme nyní hotovou, můžeme ji spustit a vyzkoušet. Kompletní aplikaci najdete zde. |