ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ FAKULTA ELEKTROTECHNICKÁ KATEDRA MĚŘENÍ
Diplomová práce Automatizovaný měřicí systém
2005
Jiří Javůrek
Automatizovaný Měřicí Systém
Anotace Náplní této práce je vytvoření automatizovaného měřicího systému s využitím přístrojové sběrnice GPIB (IEEE 488). Systém musí být schopen automaticky plnit definované úlohy ve stanovený čas bez nutnosti zásahu obsluhy. Ovládání systému je umožněno pomocí internetu ze vzdálených počítačů.
Anotation Topic of this work is to create an automatic measurement system based on instrument bus GPIB (IEEE 488). This system must be able execute predefined tasks on desired time automaticaly without any user intervention. The system is remotely controlled from remote computers via internet computer network.
-i-
Automatizovaný Měřicí Systém
Prohlášení Prohlašuji, že jsem diplomovou práci „Automatizovaný měřící systém“ vypracoval samostatně a použil k tomu jen podklady uvedené v přiloženém seznamu. Dále prohlašuji, že nemám závažný důvod proti užití tohoto díla ve smyslu §60 Zákona č. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů (autorský zákon)
V Praze dne 27. 1. 2005 …………………………..
- ii -
Automatizovaný Měřicí Systém
0. Obsah Anotace........................................................................................................................................ i Anotation ..................................................................................................................................... i Prohlášení ...................................................................................................................................ii 0.
Obsah.................................................................................................................................iii 0. 1
Seznam obrázků......................................................................................................... iv
1.
Úvod ................................................................................................................................... 1
2.
Sběrnice GPIB .................................................................................................................... 2
3.
Knihovna VISA .................................................................................................................. 4
4.
Struktura systému ............................................................................................................... 5 4. 1 4. 2 4. 3
5.
Server měřicího systému .................................................................................................. 10 5. 1 5. 2 5. 3 5. 4
6.
Rozhraní výkonná aplikace – server........................................................................... 8 Rozhraní server – webová aplikace ............................................................................ 8 Rozhraní server – databáze......................................................................................... 8 Spuštění a ukončení serveru ..................................................................................... 12 Obsluha klientských spojení..................................................................................... 13 Obsluha plánu úloh................................................................................................... 13 Přímá obsluha přístrojů............................................................................................. 14
Výkonná část systému ...................................................................................................... 16 6. 1 Spuštění výkonné části ............................................................................................. 18 6. 2 Skript úlohy .............................................................................................................. 19 6. 3 Načítání skriptu ........................................................................................................ 21 6. 3.1 Část přístrojů ....................................................................................................21 6. 3.2 Část proměnných ..............................................................................................22 6. 3.3 Část standardních výpočtů................................................................................22 6. 3.4 Část sekce .........................................................................................................22
7.
Webové rozhraní .............................................................................................................. 25 7. 1 Bezpečnost................................................................................................................ 25 7. 2 Možnosti webového rozhraní ................................................................................... 26 7. 2.1 Seznam úloh .....................................................................................................26 7. 2.2 Plán úloh...........................................................................................................28 7. 2.3 Přístroje.............................................................................................................30 7. 2.4 Administrace.....................................................................................................31 7. 2.5 Nápověda ..........................................................................................................31
8.
Databáze ........................................................................................................................... 32 8. 1
Požadavky kladené na databázi ................................................................................ 32
- iii -
Automatizovaný Měřicí Systém
8. 2 Popis jednotlivých tabulek ....................................................................................... 33 8. 2.1 Tabulka USERS................................................................................................33 8. 2.2 Tabulka SEZNAM............................................................................................34 8. 2.3 Tabulka PLAN..................................................................................................34 9.
Závěr................................................................................................................................. 36
10. Použitá literatura............................................................................................................... 37 Příloha A. Konfigurační soubor serveru................................................................................... 38 Příloha B. Vytvoření databáze.................................................................................................. 40 Příloha C. Příkazy skriptovacího jazyka .................................................................................. 41 Příloha D. Komunikační protokol server systému – klientská aplikace................................... 46 Příloha E. Vzorová úloha.......................................................................................................... 53 Příloha F. Seznam souborů měřicího systému ......................................................................... 55
0. 1 Seznam obrázků Obrázek 1 Způsob připojení zařízení ke sběrnici GPIB ............................................................2 Obrázek 2 Celkové schéma měřicího systému ..........................................................................7 Obrázek 3 Základní vývojový diagram serveru systému .........................................................11 Obrázek 4 Základní vývojový diagram výkonné části systému ...............................................17 Obrázek 5 Objekt „Tsecdata“ a objekt „Tsection“..................................................................23 Obrázek 6 Objektová struktura příkazů skriptu........................................................................24 Obrázek 7 Mapa webového rozhraní........................................................................................27 Obrázek 8 Základní stránka seznamu úloh...............................................................................28 Obrázek 9 Základní stránka plánu úloh....................................................................................29 Obrázek 10 Prezentace výsledků úlohy....................................................................................30 Obrázek 11 Stránka ovládání přístroje .....................................................................................31 Obrázek 12 Struktura databáze.................................................................................................32
- iv -
Automatizovaný Měřicí Systém
1. Úvod Měřícím systémem rozumíme soubor vzájemně propojených technických zařízení a řídícího počítače (nebo počítačů, v případě distribuovaných systémů), které vzájemnou součinností umožňují realizovat provedení požadované měřicí úlohy. Automatizovaný systém provede celé měření bez zásahu obsluhy podle předem stanovených pravidel (postupu měření). Nejjednodušší systém se může skládat z jednoho měřicího přístroje a jedné řídící jednotky (počítače). Složitější systémy dovolují pracovat s více přístroji a umožňují ovládání z více míst. Zásadní vlastností systému pro použití v laboratoři je jeho schopnost řešit různé úlohy, aniž by bylo třeba do systému zasahovat. Pro maximální využití možností, musí systém umožňovat připojení takového množství přístrojů, jaké dovolí hardwarové možnosti použitých zařízení. Přístroje mohou být připojeny jednotlivě přímo k řídící jednotce. Tento způsob je však neefektivní vzhledem k vysokým nárokům na počet vstupů do řídící jednotky a je vhodný pouze pro malé systémy. Pro větší systémy je nezbytné připojení jednotlivých přístrojů řešit jiným způsobem. Přístroje jsou v takovém systému připojeny k externí sběrnici, ke které je jako jedna z jednotek připojen i řídící počítač. Takto je jeden vstup do řídící jednotky využíván pro ovládání více přístrojů, jejichž počet je omezen technickými vlastnosti použité sběrnice a jejího komunikačního protokolu.
Cílem této práce je navrhnout a realizovat takový měřicí systém, který bude schopen realizovat libovolnou úlohu, která bude do systému zadána a který by umožňoval ovládání a prohlížení výsledků měření z libovolného počítače připojeného k síti internet bez zvláštních nároků jak na výkon klientského počítače tak především na specializovaný software (ovladače a vizualizační programy). Provádění úloh musí být plně automatické. Úlohu musí být možné naplánovat na pozdější spuštění, které bude provedeno systémem bez zásahu obsluhy. Interpret postupů měření úloh (skriptů úloh) musí umožňovat použití základních programových prostředků (práci s výsledky měření, proměnnými, cykly, podmínkami apod.), zároveň musí podporovat práci s jednotlivými přístroji. S ohledem na tyto skutečnosti byla zvolena struktura systému s využitím přístrojové sběrnice GPIB a ovládání systému bylo realizováno pomocí webových stránek.
-1-
Automatizovaný Měřicí Systém
2. Sběrnice GPIB Sběrnice GPIB (General Purpouse Interface Bus) označována těž jako IEEE 488 je 24 vodičová sběrnice, původně vyvinutá firmou Hewllet-Packard (pod označením HPIB).
Zařízení řídící jednotky
Zařízení 1
Zařízení 2
Zařízení 3
Zařízení N
Obrázek 1 Způsob připojení zařízení ke sběrnici GPIB
Sběrnice obsahuje 8 datových vodičů, 5 vodičů s řídícími signály, 3 vodiče se signály pro řízení přenosu dat a 8 zemních vodičů. Připojená zařízení mohou být přepnuta do jednoho z následujících režimů: Posluchač (listener), mluvčí (talker), řídící jednotka (controller). Všechna připojená zařízení mohou být v libovolném z těchto režimů, při splnění těchto omezení: Jedno zařízení nemůže být přepnuto do dvou režimů současně a na sběrnici může být připojeno pouze jedno zařízení v režimu řídící jednotky, to však nevylučuje, aby aktivní řídící jednotka předala řízení jiné jednotce na sběrnici. Ke sběrnici může být připojeno až 15 zařízení rozlišovaných adresami 0 až 30 (pětibitová šířka adresy), přičemž adresa 31 je zástupným symbolem pro označení všech jednotek pro zrušení režimu posluchač resp. mluvčí na všech připojených jednotkách zároveň. Podle standardu IEEE 488.1 mohou zařízení používat ještě sekundární adresu v rozsahu 60H až 7FH (tj. 96 až 127). Celková délka sběrnice nesmí překročit 20m, přičemž vzdálenost mezi připojenými jednotkami nesmí být větší než 2m. Úrovně napětí používaného na sběrnici jsou kompatibilní s úrovněmi TTL (tj. logická nula pro napětí nižší než 0,8 a logická jednička pro napětí vyšší než 2,0V). Komunikace po sběrnici může probíhat libovolným způsobem mezi všemi jednotkami. Která z jednotek bude vysílat zprávu, a které jednotky budou zprávu přijímat určuje výhradně řídící jednotka sběrnice (controller) vysláním adres příslušných jednotek a jejich přepnutím do
-2-
Automatizovaný Měřicí Systém
režimu mluvčí a posluchač (talker / listener). Obrázek 1 znázorňuje způsob připojení jednotlivých jednotek ke sběrnici. Již z vlastností tohoto připojení vyplývá, že v jeden okamžik může být jako mluvčí (talker) označena pouze jedna jednotka. Počet posluchačů není nijak omezen. Pro účely určení, která jednotka má vysílat zprávu a která jednotka nebo jednotky mají být jejím příjemcem má každá z jednotek přiřazeny dvě adresy. Tyto adresy mají dolních pět bitů shodných a tato část adresy je označována za (všeobecnou) adresu přístroje. Kombinací šestého a sedmého bitu je tato adresa rozšířena na adresy MLA (my listen address) a MTA (my talk address). Podle toho, kterou z těchto adres je jednotka adresována, je přepnuta do režimu mluvčí nebo posluchač. Zprávy (příkazy) posílané po sběrnici jsou rozděleny na dva základní druhy – jednovodičové, které využívají řídící signály sběrnice a vícevodičové, které využívají datové vodiče sběrnice spolu s vodiči pro řízení přenosu dat. Příkazy se dále mohou dělit na bezadresné, tedy takové, které přijímají a vykonávají vždy všechny připojené jednotky a adresné, které jsou přijímány a vykonávány jen jednotkami, které byly předem pro příjem příkazů adresovány. Norma IEEE 488.1 definuje způsob, kterým může libovolná jednotka v systému žádat o obsluhu (service request). Tato žádost je vzhledem k ostatní komunikaci asynchronní a je realizována vysláním signálu SRQ. Z takto vyslané žádosti však není zřejmé, které zařízení žádost vyslalo. Norma definuje dva možné způsoby pro zjištění žádajícího zařízení. Je to pomocí sériového nebo paralelního hlášení. Při použití sériového hlášení jsou všechna připojená zařízení dotazována na svůj stavový byte a podle nastavení příznaku SRQ v tomto bytu u zařízení, které vyslalo žádost na obsluhu, je žádající zařízení identifikováno. Při použití paralelního hlášení je zjišťován stav několika zařízení (maximálně osmi) najednou. Každému zařízení je v takovém případě přiřazen jeden bit datové sběrnice, na který zařízení vyšle svůj stav.
-3-
Automatizovaný Měřicí Systém
3. Knihovna VISA Knihovna VISA (Virtual Instrument System Architecture) poskytuje univerzální programátorské rozhraní k různým typům přístrojů a různým přístrojovým sběrnicím. Existuje pro více operačních systémů (například pro Windows, Linux, Solaris, …). Jejímu vzniku předcházela potřeba ovládat různé přístroje propojené pomocí různých typů sběrnic jednotným způsobem tak, aby pro ovládání použitý software nemusel brát ohled na specifické vlastnosti jednotlivých fyzických komponent. Knihovna umožňuje ovládat přístroje připojené pomocí sběrnic GPIB, GPIB-VXI, MXI/VXI, sériové linky (RS-232) a případně ethernetu. Přínos této knihovny spočívá ve sjednocení mechanizmů práce s jednotlivými zařízeními pomocí několika málo, dostatečně univerzálních, příkazů a příznaků. Samozřejmě ani zde se nebylo možné vyhnout některým specifickým vlastnostem podporovaných typů sběrnic, zvláště tam, kde nejsou žádnou normou stanoveny detaily komunikačního protokolu (např. počet stop bitů při použití sériové linky, nebo typ parity). Základními funkcemi pro práci se všemi druhy zařízení je možnost otevřít a uzavřít přístup na zařízení a komunikovat se zařízením, tj. zapisovat na zařízení příkazy a číst odpovědi. Knihovna zavádí jednotný systém obsluhy událostí, které mohou v systému nastat a to dvěma základními způsoby. Jedním je blokující čekání na některou z definovaných událostí, druhým je způsob pomocí obsluhy přerušení, vyvolané výskytem definované události. Z výše popsaných vlastností knihovny VISA plyne, že aplikace používající tuto knihovnu pro ovládání připojených přístrojů mohou být realizovány jednodušším způsobem a snadno lze dosáhnout nezávislosti na použitých hardwarových prostředcích.
-4-
Automatizovaný Měřicí Systém
4. Struktura systému Měřící systém se skládá z několika na sobě nezávislých komponent. Toto řešení přináší výhodu v možnosti vyměnit kteroukoli z nich, aniž by bylo třeba upravovat zbývající a tímto způsobem rozšířit možnosti systému bez větších zásahů do částí, jichž se úpravy přímo netýkají. Dále to umožňuje pomocí externích programů testovat funkčnost jednotlivých částí bez ohledu na celý zbytek systému. Komponenty spolu vzájemně komunikují pomocí jednoduchých příkazů rozhraní popsaného v příloze této práce. Rozdělení komponent zároveň umožňuje rozdělit potřebný výpočetní výkon na více počítačů, které jsou spolu vzájemně propojeny počítačovou sítí, stejně tak je možné, aby všechny komponenty byly spuštěny na jednom počítači a systém byl kompaktní. Jediným omezením v tomto směru je, aby serverová aplikace měřicího systému byla nainstalována (a spuštěna) na stejném počítači, ke kterému jsou připojeny jednotlivé přístroje (resp. interface GPIB) a je na něm serverovou aplikací spouštěna (výkonná) aplikace pro provedení definované úlohy. Jednotlivé komponenty jsou: §
výkonná část
§
serverová aplikace (server)
§
webová aplikace
§
databáze
Výkonná část slouží k provádění předem definovaných úloh. Je spouštěna buď na přímý příkaz uživatele, nebo z důvodu dosažení času plánovaného spuštění některé z úloh. Velkou výhodou oddělení výkonné části od serveru je, že každá nová úloha je spuštěna v rámci nového procesu, který není ovlivněn předchozími měřeními (mimo globálních nastavení rozhraní pomocí parametrů knihovny VISA). Rovněž při možném nekorektním ukončení této aplikace dojde ke korektnímu odpojení všech používaných zařízení a uzavření používaných deskriptorů, jelikož se o to v nejhorším případě postará sám operační systém při uvolňování alokovaných prostředků ukončovaného procesu. Serverová aplikace tvoří jádro celého měřicího systému. Zajišťuje spouštění jednotlivých úloh dle plánu a požadavků uživatelů, poskytuje výsledky měření a informace o průběhu jednotlivých měření uživateli (výsledky jsou prezentovány pomocí webové aplikace)
-5-
Automatizovaný Měřicí Systém
a dále chrání zneužití systému pomocí autorizačního mechanizmu a propojuje všechny komponenty vzájemně dohromady. Tato aplikace je koncipována jako trvale spuštěná a je doporučeno, aby bylo operačním systémem hlídáno, zda opravdu běží a byla spuštěna znovu, pokud by došlo k jejímu ukončení. Webová aplikace slouží jako uživatelské rozhraní celého měřicího systému a umožňuje provádět všechny úkony. Je to aplikace zprostředkovávající uživatelům přístup k informacím, které poskytuje aplikace serveru a naopak předává serveru příkazy uživatelů. Vzhledem k modulární koncepci systému není pro běh systému tato aplikace nutná, neboť komunikace se serverem může být vedena i z jiné klientské aplikace, která bude dodržovat komunikační protokol server – klient (podrobně popsán v kapitole Příloha D. .) Jako klientské rozhraní bylo zvoleno webové rozhraní (pomocí protokolu http) z důvodu umožnění snadné dostupnosti měřicího systému z prakticky kteréhokoli počítače připojeného k počítačové síti (resp. internetu), bez nutnosti instalovat na tento počítač jakýkoli klientský program, který by zajišťoval prezentaci výsledků a zadávání příkazů pro aplikaci serveru (obyčejný webový prohlížeč, např. Microsoft Explorer, nebo Mozilla jsou dnes standardní výbavou všech počítačů). Databáze slouží k uchovávání údajů o jednotlivých uživatelích a definovaných úlohách. Zvolena byla databáze MySQL (viz. http://www.mysql.org), která sice neposkytuje všechny možnosti jazyka SQL, avšak pro tento účel plně vyhoví.
-6-
Automatizovaný Měřicí Systém
Měřící přístroj
Měřící přístroj
GPIB sběrnice
Měřící přístroj Výkonná měřící část (measure engine)
DISKOVÝ PROSTOR
Úkoly: -Načtení úlohy a její parsování -Připojení sběrnice a přístrojů -Provádění příkazů úlohy -Čtení příkazů od serveru -Zasílání výsledků serveru
Informace o přístrojích Skripty plánovaných úloh
Skripty úloh
knihovna VISA Přímé ovládání přístrojů
Výsledky měření Logy měření
Měřící server (measure server)
APACHE web server + PHP Webové rozhraní (web - klient) Úkoly: Zprostředkovat ovládání serveru (definování a plánovaní úloh) uživateli pomocí http protokolu a prezentovat naměřené výsledky.
PHP sessions
SQL příkazy
Úkoly: -umožnit uživateli zadávání, editaci a plánování úloh -prezentovat výsledky měření -aplikovat přístupová omezení -dohlížet na plán úloh a provádět jej
SOCKET (standardně 11222)
Měřící přístroj
Jiná sběrnice
Měřící přístroj
STDIN/STDOUT
Měřící přístroj
MySQL DATABASE Obsažené údaje: -uživatelé + jejich oprávnění -seznam úloh -plán úloh + stav provádění
HTTP protokol
Uživatel
Uživatel
Uživatel
Uživatel Uživatel "Tlustý" klient
Obrázek 2 Celkové schéma měřicího systému
-7-
Automatizovaný Měřicí Systém
4. 1 Rozhraní výkonná aplikace – server Serverová aplikace má přístup k plánu definovaných úloh. V okamžiku, kdy se má některá úloha spustit, buď na přímý příkaz uživatele, nebo z důvodu dosažení času plánovaného spuštění, je spuštěna výkonná aplikace. Zároveň dojde k přesměrování standardního vstupu a standardního výstupu a chybového výstupu výkonné aplikace tak, aby příjemcem výstupu byla aplikace serveru, ve které se spustí vlákno pro příjem zpráv od výkonné části a aby standardní vstup byl veden z aplikace serveru. Rovněž ve výkonné aplikaci je spuštěno vlákno pro obsluhu přijímaných zpráv od aplikace serveru. Toto uspořádání umožňuje jednoduchou oboustrannou komunikaci těchto aplikací. Informace o tom, která úloha má být spuštěna a jakým způsobem má být provedena se předá při spouštění výkonné aplikace jako parametry programu.
4. 2 Rozhraní server – webová aplikace Pro komunikaci mezi aplikací serveru a webovou klientskou aplikací je použito socketového spojení (standardně na portu 11222). To umožňuje, aby obě aplikace byly spuštěny na stejném počítači, ale zároveň to dává možnost, aby byla webová aplikace spuštěna na jiném počítači v počítačové síti, např. na počítači, který slouží jako webový server pro více stránek (nebo aplikací). Zároveň toto uspořádání umožňuje připojení k serveru z libovolného jiného klientského programu, pro testování funkčnosti systému např. pomocí telnetu, neboť příkazy pro server i odpovědi od serveru jsou čistě textové řetězce. Jednotlivé příkazy pro komunikaci jsou popisuje Příloha D. .
4. 3 Rozhraní server – databáze Pro komunikaci s databází je použito jazyku SQL (Structured Query Language) viz. [4]. Připojení k využívané databázi MySQL je interně řešeno pomocí socketového spojení, což umožňuje provozovat aplikaci databáze na jiném počítači, než na kterém je spuštěna aplikace serveru měřicího systému. Výhodou je standardizovanost tohoto rozhraní co do příkazů posílaných databázovému serveru, což umožňuje v případě potřeby snadný přechod na jiný databázový program. Nutné
-8-
Automatizovaný Měřicí Systém
úpravy by spočívaly pouze v úpravě kódu programu serveru měřicího systému tak, aby bylo provedeno připojení a komunikace s databází s využitím jiné knihovny poskytující rozhraní k té které databázi. Pro připojení k databázi MySQL z programu serveru napsaného v jazyce C++ je použito knihovny mysqlclient.so (viz. též [4]). Tato knihovna jednak umožňuje vlastní připojení k databázovému serveru a dále potom zadávání dotazů a čtení jejich výsledků. Knihovna je standardně distribuována spolu s databázovým serverem MySQL.
-9-
Automatizovaný Měřicí Systém
5. Server měřicího systému Aplikace serveru měřicího systému tvoří hlavní část, která slouží ke koordinaci činností všech dalších komponent a má zároveň přístup ke všem informacím o uživatelích, definovaných úlohách a plánu jejich provádění. Tato aplikace akceptuje socketová připojení na definovaném portu, standardně je tento port přednastaven na 11222, tuto hodnotu lze změnit pomocí konfiguračního souboru, viz. Příloha A. K serveru může být v jeden okamžik připojeno libovolné množství klientů, jediné omezení v tomto směru určuje operační systém. Při připojení klientské aplikace k serveru je vytvořen objekt spojení „Tspojeni“, který obsahuje všechny důležité informace o průběhu komunikace a právech připojeného uživatele (po jeho přihlášení zasláním příkazu „LOGIN“ a uživatelského jména a hesla). Bez přihlášení není možné se serverem, resp. s celým systémem pracovat – uživatel nemá žádná práva a všechny jeho požadavky budou zamítnuty. Dále je spuštěno nové vlákno programu, které slouží k obsluze tohoto jednoho konkrétního spojení – čte příchozí data (příkazy) a po ověření uživatelových práv je vykonává. Zpět jsou zasílány odpovědi o výsledcích jednotlivých přijatých příkazů. V jeden okamžik může server pro jedno spojení zpracovávat pouze jeden příkaz, je však možné zpracovávat více příkazů paralelně, pokud přicházejí z různých klientských aplikací (z různých spojení). Vykonávání většiny příkazů je však přesto blokováno, neboť vyžadují práci v kritické sekci, která slouží k ochraně dat a udržení konzistence systému, neboť jednotliví připojení uživatelé mezi sebou sdílejí všechna na serveru uložená data.
- 10 -
Automatizovaný Měřicí Systém
Z OBSLUHA SPOJENÍ
Navázání spojení s DB
OBSLUHA PLÁNU ÚLOH
Otevření VISA default RM
Nastavení obsluhy "SIGALARM"
Otevření socketu pro "listen"
Vytvoření toku "obsluha plánu úloh" Vytvoření toku "obsluha spojení"
Podařilo se vytvořit?
Nastavení stavu "nestandardní ukončení" všech úloh, které jsou při startu obsluhy označené jako "probíhá měření"
-
+
Nastavení obsluhy "SIGINT"
Čekání na připojení klienta
Spojení vláken: "obsluha plánu úloh" "obsluha spojení"
Podařilo se připojit?
Odpojení VISA
-
Ruší se socket pro skončení?
+
Odpojení DB
Pause()
+
Vytvoření toku "obsluha klientského spojení"
K
Nastavení prodlevy alarmu
K
OBSLUHA KLIENTSKÉHO SPOJENÍ
Čteme znak
+
Byl celý řádek?
-
Byla chyba?
+
+
Uzavření spojení
Byl přijat příkaz ukončení spojení?
-
K
Zjistíme jaký byl příkaz a provedeme ho
Obrázek 3 Základní vývojový diagram serveru systému
- 11 -
Automatizovaný Měřicí Systém
5. 1 Spuštění a ukončení serveru Server je koncipován tak, aby tento proces běžel trvale a mohl tedy kdykoli jednak poskytnout uživatelům možnost přihlášení se k měřicímu systému a tedy možnost ovlivnění jeho další činnosti, a jednak mohl zpracovávat plán úloh – tedy spouštět jednotlivé naplánované úlohy v předem stanovenou dobu. Proces serveru by měl být spuštěn pod neprivilegovaným uživatelem (z důvodu bezpečnosti celého počítače, na němž je tento proces spuštěn). Po spuštění provede aplikace načtení konfiguračního souboru, ve kterém jsou uloženy informace pro připojení k databázi, umístění souborů a adresářů s uloženými daty jednotlivých úloh (ať už jejich skripty nebo změřenými výsledky) a požadavky na logování činnosti serveru a prodlevy kontrolu plánu úloh. Bližší informace o možnostech konfigurace viz. Příloha A. Dále aplikace ověří neexistenci souborového zámku proti dvojímu spuštění. Pokud je nalezen existující soubor zámku, je o tom uživatel informován a běh aplikace se ukončí. Z důvodu nutnosti zajištění výhradního přístupu aplikace serveru ke všem datům nutným pro běh celého systému není možné, aby aplikace serveru byla spuštěna vícekrát v jeden časový okamžik. Pokud tento soubor nalezen nebyl, provede se jeho vytvoření a je do něj zapsáno identifikační číslo procesu serveru (PID). Následuje připojení k databázovému serveru a otevření databáze s informacemi měřicího systému. Pokud se nepodaří k databázi připojit, je běh serveru ukončen, neboť by nebyl možný přístup ani k informacím o uživatelích (jména, hesla a práva), tudíž by nebylo možné, aby se jakýkoli uživatel připojil k serveru. Pro obsluhu připojujících se klientů je vytvořeno zvláštní vlákno, které čeká na příchozí socketová spojení. Rovněž pro kontrolu plánu úloh je vytvořeno vlákno. Běh serveru lze ukončit zasláním signálu SIG_TERM nebo SIG_QUIT. Toto lze učinit například příkazem: kill `cat /tmp/Measure_Server.pid`
kde /tmp/Measure_Server.pid je cesta a jméno souboru zámku, ve kterém je uloženo PID serverové aplikace.
- 12 -
Automatizovaný Měřicí Systém
5. 2 Obsluha klientských spojení Při připojení nového klienta k serveru se pro jeho spojení vytvoří nový tok, což umožňuje, aby byly nekonfliktní příkazy1 jednotlivých uživatelů prováděny paralelně a zároveň to usnadňuje vyhodnocování, od kterého klienta je příchozí příkaz. Zpracování konfliktních příkazů se děje sériově a je chráněno pomocí kritických sekcí. Server přijímá příkazy v textové formě, přičemž za konec příkazu a pokyn k jeho vykonání se považuje znak konce řádku (lhostejno, zda je to znak 0x0A „LF“ nebo kombinací znaků 0x0D + 0x0A „CR+LF“). Zadávání příkazu lze přerušit znakem 0x1B „ESC“. Každý korektně přijatý příkaz vrátí klientovi odpověď, která je rovněž v textovém tvaru a skládá se z čísla kódu výsledku příkazu a textového popisu. Tento způsob je vhodný pro zpracování výstupu pomocí klientského programu, kde je mnohem snazší výsledek příkazu posuzovat podle vrácené číselné hodnoty než podle textové zprávy, avšak zároveň to umožňuje snadno číst výsledky i například pomocí telnetového spojení bez nutnosti pamatování si jednotlivých kódů výsledků. Pro zahájení práce s měřicím systémem je nutné, aby se nově připojený klient přihlásil a mohla tak být přiřazena jeho přístupová práva, pomocí kterých jsou omezeny jeho možnosti práce se systémem.
5. 3 Obsluha plánu úloh Tok obsluhující plán úloh periodicky v intervalu stanoveném konfigurací měřicího serveru kontroluje podle tabulky „plan“ databáze, zda nemá být spuštěna některá, v plánu uložená, úloha. Zároveň je zkontrolována doba, která uplynula od posledního logování informací o procesu serveru (pokud je tato funkce zapnuta) a v případě dosažení požadovaného časového intervalu jsou zalogovány informace poskytované operačním systémem ve virtuálním souborovém systému /proc souboru status. Pokud je zjištěno, že některá z plánovaných úloh má být spuštěna, je vytvořen nový proces, kterému jsou přesměrovány ukazatele pro standardní výstup a standardní vstup tak, aby bylo možné s tímto novým procesem komunikovat z procesu serveru. Poté je kód nového
1
Nekonflikním příkazem se rozumí takový příkaz, kdy nehrozí vznik nekonzistentních dat na serveru například současným přístupem dvou klientů do stejné datové oblasti.
- 13 -
Automatizovaný Měřicí Systém
procesu nahrazen kódem výkonné části systému, která provede podle zadaných parametrů a skriptu úlohy vlastní měření a výsledky zašle zpět na server, kde budou uloženy. Komunikace mezi serverem a výkonnou částí probíhá v textové formě pomocí jednoduchých příkazů a stavových hlášení. Iniciátorem komunikace může být jak server tak i výkonná část. Veškerá komunikace týkající se zpracovávané úlohy může být na serveru ukládána do souboru logu úlohy, pokud je to nastaveno v požadavcích na ukládání ladících informací dané úlohy. Hlavní část komunikace spočívá v ukládání naměřených dat. Výsledky jednotlivých měření posílá výkonná část systému vždy formou bloku hodnot všech proměnných skriptu úlohy, které jsou zvoleny pro logování. Tyto hodnoty spolu s číslem zápisu a jeho časem tvoří jeden řádek výsledkového souboru, který je jako celek nebo po částech zpřístupněn serverem všem klientům s potřebným oprávněním. Server ošetřuje možnost, kdy má být některá úloha spuštěna dříve, než bude předchozí úloha dokončena nebo kdy je čas spuštění pro dvě různé úlohy nastaven na stejnou hodnotu. V takovém případě se úloha, která je druhá v pořadí spustí až po dokončení předchozí úlohy. Není tedy možné zpracovávat dvě úlohy najednou. Tato vlastnost je zavedena především proto, že nelze ovládat tytéž přístroje připojené k měřícímu počítači ze dvou různých programů aniž by bylo možné vyloučit riziko, že budou správně přiřazeny odpovědi přístrojů na příkazy tomu z měřících programů (procesů), který je vyvolal a nebudou zpracovány programem jiným. Zároveň to umožňuje lepší využití přístrojové sběrnice, která není sdílena více procesy.
5. 4 Přímá obsluha přístrojů Server umožňuje uživatelům s příslušným oprávněním přímou obsluhu připojených přístrojů. Může tedy sloužit jako interaktivní konzola, kdy uživatel zadá adresu přístroje v rámci měřicího systému a příkaz, který má být přístrojem vykonán. Ten je zpracován a uživatel je informován o jeho výsledku. Vykonávané příkazy jsou, podle toho, zda mají vrátit výsledek ve formě zjištěné hodnoty, děleny na příkazy vracející odpověď na příkazy bez odpovědi, které mají být pouze zaslány přístroji a je u nich možné pouze zjišťovat, zda příkaz proběhl úspěšně, nebo zda došlo k chybě. Typ příkazu může zadat uživatel v požadavku. Rozlišovány jsou „Query“, „Send“ a „Read“, nebo může uvést univerzální typ „Do“, kdy se server rozhodne pro
- 14 -
Automatizovaný Měřicí Systém
zjišťování odpovědi na základě struktury SCPI příkazů podle toho, zda příkaz obsahuje požadavek na odpověď ve formě otazníku za textem příkazu. Pokud je v okamžiku interaktivního ovládání přístrojů měřena některá z plánovaných úloh, musí uživatel povolit provedení požadovaného příkazu i za běhu úlohy (zároveň jsou uplatňována přísnější kritéria pro oprávnění uživatele k provedení interaktivního příkazu). Toto slouží k tomu, aby byl uživatel srozuměn s tím, že je prováděna některá úloha a nemohl tak do jejího běhu zasáhnout omylem, požadavkem na nevhodný příkaz, který by ovlivnil měření úlohy. Přístup k přístroji, který má vykonat interaktivní příkaz je v okamžiku provádění tohoto příkazu exklusivní, pomocí zámku přístroje „viLock“. Vzhledem k možnosti, že v rámci měřícího systému může k přístroji přistupovat více procesů (částí měřicího systému) najednou, byla zvolena možnost použití sdíleného zámku pomocí přístupového klíče (tento klíč je „JAMS-KLIC“). To umožňuje eliminovat od přístupu k přístroji (přístrojům) pouze procesy nenáležející do měřicího systému, ale zároveň jim umožnit práci s přístroji v okamžiku, kdy přístup k danému přístroji není měřicím systémem vyžadován.
- 15 -
Automatizovaný Měřicí Systém
6. Výkonná část systému Jedná se o samostatný program, který je spouštěn serverem měřicího systému v případě, že dle plánu úloh má být některá úloha spuštěna. Technicky je možné program spustit i z příkazové řádky při dodržení předávaných parametrů o měřené úloze a vzhledem k tomu, že ke komunikaci se serverem program výkonné části užívá standardního vstupu a výstupu, je možné jej snadno ovládat pomocí konzoly. V jeden okamžik může být výkonná část spuštěna několikrát, jediným omezením na její straně je možnost exklusivně přistupovat k hardwarovým zdrojům (tj. jednotlivým přístrojům, které jsou pro použití u dané měřené úlohy vyžadovány). Automatické spouštění serverem však dovoluje pouze jeden měřící proces (jedno spuštění) v jeden okamžik.
- 16 -
Automatizovaný Měřicí Systém
Z
Načtení souboru úlohy (vytvoření její objektové reprezentace)
Vytvoření vlákna pro obsluhu komunikace se serverem
Načtení příkazů přístrojů
Čekej na příkaz
Dotaz na způsobilost k pokračování
Můžeme měřit?
Vyhodnocení příkazu. nastavení příznaků
_
+ Vytvoření vláken obsluhy událostí přístrojů
Čekej na událost
Projdi příkazy sekce Najdi sekci, která je pokračováním
Zjisti výsledek operace
Má se skončit?
_
+ _
Jsou výsledkem data?
+ Ulož výsledek do proměnné
K
Obrázek 4 Základní vývojový diagram výkonné části systému - 17 -
Automatizovaný Měřicí Systém
6. 1 Spuštění výkonné části Výkonná část je tou částí měřicího systému, která provádí obsluhu měřících přístrojů podle předem zadaného skriptu úlohy, který je uložen na serveru systému. Která úloha má být provedena je zjištěno podle parametrů, se kterými byla výkonná část spuštěna. Příkazový řádek má následující formát:
measure_engine <úloha>
§
<úloha> je jméno souboru (včetně cesty), ve kterém je uložen skript úlohy
§
je cesta v souborovém systému (adresář), kde jsou uloženy konfigurační soubory jednotlivých přístrojů, s předdefinovanými příkazy
§
je označení uživatele (resp. rodičovského procesu), který spustil program výkonné části. Pokud je výkonná číst spuštěna automaticky serverem, je hodnota vždy „SERVER“ a slouží pouze k ladícím účelům.
Po kontrole vstupních parametrů je spuštěna obsluha komunikace s rodičovským procesem (předpokládejme serverem měřicího systému). Následuje načtení skriptu požadované úlohy a vytvoření jeho objektové reprezentace. Zároveň dojde k vytvoření potřebných proměnných a deskriptorů (popisovačů) jednotlivých použitých přístrojů. Po načtení úlohy je zjištěno, zda byl skript úlohy zpracován korektně, nebo zda došlo při parsování skriptu k chybě (zpravidla k chybě ve skriptu nedodržením syntaxe). Pokud došlo k chybě, nelze v měření pokračovat, neboť není možné celý skript vykonat. O příčině chyby je uživatel informován z logu úlohy, který je uložen na serveru. Zjištění, zda je celý skript úlohy napsán bezchybně na počátku měření zabraňuje havárii, která by chybnou syntaxí mohla vzniknout až během vykonávání skriptu. Uživatel je tak informován o chybách ještě před spuštěním měření a ne až v jeho průběhu, což je výhodné zvláště u měření, která jsou časově velmi náročná. Ukončení procesu výkonné části je provedeno v okamžiku, kdy skončí skript měření úlohy a dojde k odpojení všech alokovaných přístrojů. Další možností, jak ukončit proces měření je žádost uživatele, která je zprostředkována serverem systému. Možné způsoby ukončení procesu jsou:
- 18 -
Automatizovaný Měřicí Systém
§
FAIL – po dokončení právě prováděného příkazu skriptu úlohy je měření přerušeno a je vyvolána sekce „FAILED“ (pokud existuje). Po jejím provedení je proces výkonné části ukončen standardním způsobem.
§
STOP – proces nečeká na dokončení prováděného příkazu a provede odpojení alokovaných přístrojů a ukončí se.
§
EXIT – proces se rovnou ukončí. K odpojení alokovaných prostředků dojde pouze na úrovni operačního systému.
§
KILL – ukončení je provedeno serverem. Proces výkonné části je násilně přerušen signálem SIG_KILL. Tento způsob je krajní možností, jak přerušit měření v případě havárie.
Základní možností ukončení výkonné části (skriptu úlohy) je způsob pomocí příkazu „FAIL“, kdy je zcela korektně dokončena jak prováděná operace skriptu, tak jsou uvolněny všechny alokované prostředky ještě před ukončením vlastního procesu.
6. 2 Skript úlohy Skriptem úlohy se rozumí textový soubor, který obsahuje definice adres a logických jmen přístrojů, definice proměnných a standardních výpočtů a vlastní postup provedení měření. Načtení skriptu spočívá v kontrole syntaxe a vytvoření příslušné objektové reprezentace skriptu. Ve skriptu není u klíčových slov rozlišována velikost písmen, u jmen proměnných, jmen přístrojů a předdefinovaných matematických a fyzikálních konstant je velikost písmen rozlišována. Počet mezer mezi slovy nebo na začátku a konci řádku není rozhodující. Jednotlivé základní části skriptu mohou být použity v libovolném pořadí a mohou být uvedeny i vícekrát. Vždy však musí být splněna podmínka, že lze pracovat jen s těmi přístroji a proměnnými, které již byly definovány (při sekvenčním čtení skriptu). Skript se skládá z následujících základních částí: §
Přístroje – část definující přístroje, použité k měření úlohy. Obsahuje logické pojmenování přístroje, jednotku měřené veličiny, krátký popis měřené veličiny a hardwarovou adresu přístroje v rámci systému. Pro přístroj může být zároveň uveden tzv. soubor předdefinovaných příkazů, které potom ve skriptu úlohy snáze používat. Část pro definování přístrojů je uvedena mezi klíčovými slovy „INSTRUMENTS“ a „END_INSTRUMENTS“.
- 19 -
Automatizovaný Měřicí Systém
§
Proměnné – Obsahuje pouze seznam jmen proměnných, které jsou použity ve skriptu. Všechny definované proměnné jsou typu „double“ a „text“, přičemž pro matematické operace je za hodnotu proměnné typu „text“ považováno číslo nula. Proměnné jsou definovány mezi klíčovými slovy „VARIABLES“ a „END_VARIABLES“.
§
Standardní výpočty – Jedná se o definici výrazů, které jsou za běhu skriptu vyhodnocovány vždy, když dojde ke změně vstupních proměnných. Umožňuje to mít stále k dispozici hodnoty veličin, které nejsou v dané úloze měřeny přímo, ale k jejich stanovení je třeba použít nějaký výpočet. Například nepřímé měření výkonu pomocí měření napětí a proudu protékajícího zátěží. U jednotlivých výpočtů je možné definovat jejich logický název (jméno proměnné výsledku), krátký popis a jednotku vypočítávané veličiny. Výpočty jsou zapsány mezi klíčovými slovy „CALCULATORS“ a „END_CALCULATORS“.
§
Sekce kódu – Obsahují vlastní kód úlohy, tj. jednotlivé příkazy, které jsou vykonávány. Příkazy se dělí na „interní“, k jejichž provedení není potřeba přistupovat k hardwaru a slouží pro řízení běhu úlohy (čekání, vyhodnocení podmínek, volání podprogramů, cyklů apod.) a na příkazy přistupující k hardwaru (posílání příkazů přístrojům a čtení odpovědí a chybových hlášení). Jednotlivé sekce jsou uvedeny mezi klíčovým slovy „SECTION“ a „END_SECTION“, přičemž každá sekce má své definované jméno. Existují dvě speciální označení sekcí. Sekce „INIT“ je povinná a je vždy provedena jako první – jedná se tedy o začátek kódu úlohy. Sekce „FAILED“ není povinná, její použití je však doporučeno. Tato sekce je provedena v případě, že dojde k chybě běhu skriptu úlohy nebo je měření úlohy přerušeno na uživatelovu žádost. Příkazy této sekce jsou provedeny před ukončením měření a lze jich využít např. k vypnutí použitých zdrojů.
Pro práci se změřenými hodnotami veličin z jednotlivých přístrojů existují proměnné, které mají stejné pojmenování, jako je logické pojmenování příslušných přístrojů. Stejně tak výsledky standardních výpočtů jsou přístupné ve formě proměnných. Tímto je standardizován přístup ke všem hodnotám, které mohou být ve skriptu úlohy využity. Pokud
bude
mít
některá
z proměnných
stejný
název,
jako
má
některá
z předdefinovaných matematických a fyzikálních konstant, pak dojde k přetížení hodnoty, tj. za hodnotu příslušející danému názvu proměnné bude považována hodnota uživatelem
- 20 -
Automatizovaný Měřicí Systém
vytvořené proměnné a předdefinovaná konstanta bude odstíněna a nebude moci být použita. Tento přístup byl zvolen pro umožnění korektní funkce skriptu aniž by uživatel musel ověřovat neexistenci jednotlivých označení konstant. Použití jména proměnné shodného s názvem některé definované matematické funkce je možné. Protože funkce mají své parametry uvedeny v závorce, je parser schopen rozlišit mezi tím, zda má být ve výrazu použita hodnota proměnné nebo zda se jedná o volání funkce. Všechny příkazy musí být uvedeny samostatně, každý na jednom řádku. Řádky začínající znakem „#“ jsou považovány za komentář. Stejně tak jsou za komentář považovány prázdné řádky (tj. jsou ignorovány). Při zápisu hodnot do souboru výsledků jsou vždy zapsány aktuální hodnoty všech používaných proměnných. Pokud není zapisování některých proměnných žádoucí (např. jsou použity jen pro iterace cyklu), pak se před jejich jméno v definici uvede znak „_“.
6. 3 Načítání skriptu 6. 3.1 Část přístrojů Obsahuje informace o jednotlivých použitých přístrojích. Každý přístroj je definován na jednom řádku, oddělovačem jednotlivých položek je znak „=“. Definice přístroje může vypadat následovně: V1=V=vstupni napeti=voltmetr=GPIB0::22::INSTR
§
V1 – pojmenování přístroje, je shodné s názvem proměnné, která zpřístupňuje výsledky měření tímto přístrojem.
§
V – jednotka měřené veličiny
§
vstupni napeti – popis měřené veličiny
§
voltmetr – soubor s předdefinovanými příkazy přístroje
§
GPIB0::22::INSTR – hardwarová adresa přístroje
Povinnými údaji je pouze pojmenování přístroje a jeho hardwarová adresa. Všechny ostatní položky mohou být vynechány (při zachování příslušného počtu oddělovačů).
Pro každý přístroj je vytvořen tok obsluhy jeho příkazů a odpovědí. Tato koncepce umožňuje provádění příkazů různých přístrojů paralelně. Tedy není třeba čekat na výsledek měření z předchozího příkazu, pokud se další měření má provést s použitím jiného přístroje. Zároveň je tak umožněno korektní zpracování výsledků při použití trigrovaného měření - 21 -
Automatizovaný Měřicí Systém
příkazem „GET“ sběrnice GPIB. Pokud má být přístrojem proveden nový příkaz v případě, že jeho předchozí příkaz nebyl ještě dokončen, je provádění skriptu pozastaveno do doby dokončení již prováděného příkazu. Toto chování je zajištěno pomocí dvou zámků kritických sekcí (existence nového příkazu a dokončení prováděného příkazu).
6. 3.2 Část proměnných Obsahuje pouze seznam jmen proměnných, které mají být vytvořeny. Všechny nově vytvořené proměnné jsou inicializovány na hodnotu nula a jsou typu číslo (double).
6. 3.3 Část standardních výpočtů Definuje vzorce pro standardní výpočty, které jsou automaticky prováděny v případě změny vstupních proměnných. Výpočet je definován následujícím způsobem: P1=W=prikon=V1*A1 §
P1 – pojmenování proměnné obsahující výsledek výpočtu
§
W – jednotka vypočítané veličiny
§
prikon – název vypočítané veličiny
§
V1*A1 – vzorec pro výpočet (zde např. jako součin hodnoty změřených voltmetrem a ampérmetrem)
Povinnými údaji je pouze pojmenování proměnné výsledku a vzorec výpočtu. Obě zbývající položky mohou být vynechány (při zachování příslušného počtu oddělovačů).
6. 3.4 Část sekce Blok skriptu obsahující kód úlohy, který má být proveden. Každá sekce má povinně definované jméno, pomocí kterého se lze na ní odvolávat při provádění příkazů skoku nebo skoku na návěští či provedení podprogramu (procedury). Každá sekce musí na svém konci obsahovat skok na jinou sekci nebo skok na sama sebe, pokud nemá být po dokončení sekce ukončen běh skriptu úlohy. Obdobně to platí i pro použití příkazu „RETURN“ pro návrat z podprogramu. Pokud je tento příkaz proveden na nejvyšší úrovni, pak je běh skriptu ukončen. Načítání jednotlivých sekcí a jimi obsažených příkazů je prováděno sekvenčně, přičemž na řazení sekcí nezáleží. Ve skriptu se lze odvolávat i na sekce, které ještě nebyly definovány (jsou definovány až za místem použití jejich jména).
- 22 -
Automatizovaný Měřicí Systém
Všechny sekce patří do základního objektu skriptu „Tsecdata“, který obsahuje odkazy na všechny informace, které jsou skriptem využívány. Všechny vlastnosti objektu ukazuje Obrázek 5. Tsecdata Tsection *sekce[JVKM_SMAXSECT] int maxsekce int stav_provadeni int cislo_radku int presnost_logu int uroven_logovani int fail_on
Tsection sem_t zamek_asynchr_cekani
Tsecdata *rodic char jmeno[JVKM_SMAXJMENO]
Tinstrdata *vse_pristroje Tpromdata *vse_promenne Tcalcdata *vse_calc
Tsecprikaz *prikaz
Tsection* NovaSekce (char *jmeno) int PropojSekce () Tsection* NajdiSekci (char *jmeno) int ProvedPrikazy(bool vracet, Tsecprikaz* zacatek= NULL, bool spoustet_failed= true) Tsecdata() ~Tsecdata()
Tinstrdata *vse_pristroje Tpromdata *vse_promenne int PridejPrikaz(char*,char*,char*) Tsecprikaz* NajdiPosledniPrikaz(void) Tsection() ~Tsection()
Obrázek 5 Objekt „Tsecdata“ a objekt „Tsection“ Každá sekce je po načtení reprezentována jako objekt, jemuž jsou přiřazeny příkazy, které do dané sekce náleží. Datovou strukturu objektu reprezentujícího jednu sekci zobrazuje Obrázek 5. Provádění příkazů je realizováno jako volání přetížené virtuální metody pro provedení příkazu. Hierarchické uspořádání a dědění vlastností jednotlivých objektů příkazů ukazuje Obrázek 6. Tento způsob přístupu k jednotlivým příkazům umožňuje přistupovat na úrovni objektů sekcí ke všem příkazům shodným způsobem a jednotlivé specifické vlastnosti příkazů použít až při jejich vykonávání. Detailní popis jednotlivých příkazů uvádí Příloha C.
- 23 -
Automatizovaný Měřicí Systém
Tsecprikaz
Ttyp_prikazu typ_prikazu int cislo_radku Tsecprikaz *dalsi Tsection * rodic
Tinstrument *pristroj Tprikaz *prikaz Tvyraz parametry[JVKM_IMAXPARAMS] int maxparametr
Tsecprikaz_do
Tsecprikaz_ddo
Tsecprikaz_dquery Tpromdata *vse_promenne Tinstrdata *vse_pristroje char cekat
Tsecprikaz_dsend
Tsecprikaz_read
Tinstrdata *vse_pristroje Tpromenna *promenna Tvyraz *vyraz char cekat
Tsecprikaz_log
char jmeno_kam[JVKM_SMAXJMENO] int poradi_kam Tsection *sekce Tsecprikaz *prikaz
Tsecprikaz_let
Tsecprikaz_goto
Tinstrdata *vse_pristroje
Tsecprikaz_gosub
Tsecprikaz_return
char jmeno_kam_prim[JVKM_SMAXJMENO] char jmeno_kam_else[JVKM_SMAXJMENO] Tsection *vetev_prima, *vetev_else Tsecprikaz *prikaz_prima, *prikaz_else char cekat Tvyraz *podminka Tinstrdata *vse_pristroje
Tsecprikaz_complete
Tsecprikaz_if
Tvyraz *vyraz
Tsecprikaz_sleep
Tsecprikaz_asleep_set
Tsecprikaz_asleep_wait
Tinstrument *interface Tinstrument *pristroje[JVKM_IMAXPRISTROJ] int maxpristroj Tinstrdata *vse_pristroje char jmeno_navesti[JVKM_SMAXJMENO]
Tsecprikaz_HPIB_get char jmeno_bpt[JVKM_SMAXJMENO] Tsecprikaz_label char jmeno_kam[JVKM_SMAXJMENO] Tinstrdata *vse_pristroje Tsecprikaz *prikaz Tsection *vetev Tpromenna *promenna Tvyraz *vyraz_zacatek,*vyraz_iterace char cekat Tvyraz *podminka
Tsecprikaz_breakpoint
Tsecprikaz_for
Tsecprikaz_break
Tvyraz *presnost
Tsecprikaz_continue
Tvyraz *vyraz
Tsecprikaz_precision
Tfail_on fail_on
Tsecprikaz_loglevel
Tsecprikaz_failon
Obrázek 6 Objektová struktura příkazů skriptu - 24 -
Automatizovaný Měřicí Systém
7. Webové rozhraní Pro ovládání měřicího systému a prezentaci výsledků měření bylo zvoleno webové rozhraní komunikující pomocí protokolu http. Výhodou této volby je možnost ovládání systému z libovolného počítače vybaveného prohlížečem webových stránek bez nutnosti instalovat jakýkoli další komunikační software. Značnou nevýhodou použitého protokolu je jeho nestavovost a z toho plynoucí minimální možnosti ukládání informací na straně klienta (webového prohlížeče). Dalším podstatným omezením je nemožnost iniciovat jakoukoli akci (obnovení stránky) ze strany webového serveru (tedy webové aplikace). Problém s nestavovostí protokolu byl eliminován použitím „sessions“ (sezení), tj. možností použitého webového serveru, kterým je v tomto případě server Apache, pamatovat si hodnoty proměnných, které jsou používány v programu rozhraní, nezávisle na webovém prohlížeči. Jednotliví připojení uživatelé jsou identifikování pouze pomocí čísla sezení („session id“). Tento přístup umožňuje komfortnější ovládání a snazší naprogramování prezentačního systému. Nevýhodou zvolené metody je nutnost mít na straně webového prohlížeče povoleno přijímání „cookies“, tedy krátkých datových bloků, kam je uloženo právě zmíněné identifikační číslo. Prezentační a ovládací systém byl vytvořen v jazyce PHP (Personal homepage) (viz. [5] nebo [6]). Snahou při návrhu webové aplikace bylo minimalizovat požadavky na schopnosti klientského webového prohlížeče. Pro běh systému plně postačí, pokud prohlížeč bude schopen akceptovat stránky v prostém HTML formátu. Pro využití grafických možností systému, je nutné přidat ještě požadavek na interpretaci CSS (kaskádových stylů) a JavaScriptu.
7. 1 Bezpečnost Použití webového rozhraní nepředstavuje pro chod systému žádné bezpečnostní riziko, protože tato aplikace slouží pouze jako rozhraní mezi uživatelem a serverem systému, který provádí příslušné požadované operace. Jelikož server je navržen tak, že klientem může být libovolný program dodržující komunikační protokol, jsou veškerá ověřování práv uživatelů prováděna až serverem a tedy není možné podvrhnout žádné příkazy serveru pomocí protokolu http (např. speciálně upraveným get nebo post požadavkem).
- 25 -
Automatizovaný Měřicí Systém
Místem možného útoku se může stát pouze komunikace mezi uživatelem (webovým prohlížečem) a webovou aplikací. Zvláště se jedná o posílání hesla při přihlašování a možnost ovládání existujícího sezení při odposlechnutí čísla sezení (session id). Tomuto jevu lze úspěšně čelit pomocí použití kódovaného spojení, například pomocí protokolu https. Pro jeho využití není třeba upravovat webovou prezentační aplikaci, ale stačí pouze nastavit příslušné kódování démonem webového serveru.
7. 2 Možnosti webového rozhraní Webové rozhraní je navrženo tak, aby umožňovalo přístup ke všem funkcím měřicího serveru a bylo jím možné v maximální míře ovládat měřicí systém a zpět získat všechny informace, které jsou v systému uloženy. Základním navigačním prvkem je hlavní menu uvedené v záhlaví všech webových stránek. Pomocí něj je možné přecházet mezi jednotlivými částmi systému (pokud má uživatel na základě svých oprávnění k dané části systému přístup). Každá z částí systému má své kontextové menu, které je zobrazeno pod hlavní nabídkou a v něm uvedené funkce se váží k možnostem dané části systému. Dále následuje informační oblast obsahující požadované údaje o úlohách, jejich výsledcích apod. Mapu celého rozhraní ukazuje Obrázek 7.
7. 2.1 Seznam úloh Část týkající se seznamu úloh umožňuje definování skriptů nových úloh a jejich modifikaci. Umožňuje zároveň prohlížení všech již definovaných úloh, jejich vymazání ze systému a zařazení do plánu prováděných úloh. Úlohu lze definovat nebo modifikovat pomocí jednoduchého formuláře přímo prostřednictvím webového rozhraní, ale je možné skript úlohy stáhnout na lokální počítač, jeho modifikaci provést pomocí libovolného textového editoru a modifikovaný (nebo nově vytvořený) soubor nahrát zpět do systému. Důležitou funkcí seznamu úloh je možnost zařazení úlohy do plánu. Pro její přidání do plánu úloh k provedení je třeba zadat čas, kdy má být úloha spuštěna. Zároveň je možné zvolit pro úlohu jméno, které ji bude v plánu identifikovat. Skript úlohy platí pro naplánovanou úlohy v takové podobě, v jaké byl uložen na serveru v okamžiku jejího přidání do plánu. Další změny ve skriptu úlohy se v již naplánované úloze neuplatní.
- 26 -
Automatizovaný Měřicí Systém
Základní stránku seznamu úloh zobrazuje Obrázek 8.
Přidání / změna úlohy
Úvodní stránka
Vymazání úlohy Přihlášení Odhlášení
Zobrazení úlohy
Seznam úloh
Plánování úlohy
Plán úloh
Zobrazení výsledků úlohy
Zobrazení chybového výstupu
Zastavení úlohy
Volba způsobu zastavení
- Okamžité spuštění - Pozastavení - Obnovení - Přerušení
Odblokování BREAKPOINTu
Změna plánu úlohy Přístroje
Vymazání úlohy z plánu
Interaktivní provádění příkazů
Zobrazení úlohy
Administrace
Uživatelé
Změna práv uživatele / vymazání
Nápověda
Soubory úloh
Vymazání souborů
Přidání uživatele
Obnova ze záloh
Zjištění vlastních oprávnění Soubory logů úloh Osobní nastavení
Obrázek 7 Mapa webového rozhraní
- 27 -
Vymazání souborů
Automatizovaný Měřicí Systém
Obrázek 8 Základní stránka seznamu úloh
7. 2.2 Plán úloh Plán úloh poskytuje přístup k úlohám, které mají být provedeny nebo již provedeny byly. Základní stránku plánu úloh ukazuje Obrázek 9. V plánu úloh je možné měnit zvolený čas spuštění definované úlohy a případně její název. Přístup k modifikaci těchto položek je umožněn pouze uživatelům majícím příslušné oprávnění (viz. kapitola 8. 2.1). Zároveň je možné dočasně pozdržet spuštění úlohy pomocí funkce „Pozastavit“ nebo úlohu spustit ručně. Dále lze prohlížet skripty úloh a nebo úlohy z plánu trvale vymazat. Hlavní funkcí je ovšem přístup k výsledkům měření. Ten je možný od okamžiku, kdy se úloha začala zpracovávat a tímto způsobem lze vzdáleně monitorovat úspěšnost průběhu úlohy. Zároveň je možné prohlížet soubor ladících informací vedený k příslušné úloze a v případě, že při zpracování úlohy dojde k takové chybě, že další pokračování nemá smysl, je možné úlohu předčasně ukončit jedním ze způsobů, který je popsán v kapitole 6. 1. Pomocí webového rozhraní je rovněž možné provádět jednoduché ladění skriptu úlohy, kdy je možné vykonávání úlohy zastavovat pomocí speciálního příkazu „Breakpoint“ vloženého na příslušná místa skriptu úlohy.
- 28 -
Automatizovaný Měřicí Systém
Pomocí tohoto rozhraní lze stahovat naměřené výsledky na lokální počítač a to v několika formátech. Základním z nich je textový formát, přičemž jednotlivé zapsané odměry jsou uvedeny na jednotlivých řádcích ve formě čísel oddělených znakem tabulátor. Tento formát lze načíst do většiny tabulkových procesorů, kde je možné data snadno libovolným způsobem dále zpracovávat. Pro zpracování dat pomocí skriptů lze využít formát, kdy jsou všechny jednotlivé položky na samostatných řádcích. Spolu s výsledky měření poskytuje tato část systému také přístup k ladícím informacím o průběhu skriptu úlohy. Uložené informace jsou rozděleny do 8-mi úrovní podle závažnosti a uživatel si může vybrat zobrazení jen těch informací, které ho zajímají. Hlavními kategoriemi jsou „Fatální chyby“, po kterých dojde k předčasnému ukončení úlohy, „chyby“ a „varování“, což jsou události, které mohou negativně ovlivnit průběh měření a záznam komunikace mezi výkonnou částí měřicího systému a přístroji.
Obrázek 9 Základní stránka plánu úloh
- 29 -
Automatizovaný Měřicí Systém
Obrázek 10 Prezentace výsledků úlohy
7. 2.3 Přístroje Tato část rozhraní slouží jednak pro získání informace o tom, které přístroje jsou k měřicímu systému připojeny a jaké jsou jejich hardwarové adresy a dále umožňuje interaktivní ovládání těchto přístrojů. Pro dovolení ovládání přístrojů je nutné, aby měl uživatel příslušné oprávnění. Přístroje lze ovládat ve dvou režimech. Pokud není měřena žádná jiná úloha nebo i v případě, že je některá z plánovaných úloh právě měřena. Ve druhém z těchto případů je zodpovědnost za nekonfliktní použití přístrojů vzhledem ke zpracovávané úloze zcela na uživateli a nenarušení průběhu úlohy nemůže být garantováno. Možnosti interaktivního ovládání přístrojů znázorňuje Obrázek 11.
- 30 -
Automatizovaný Měřicí Systém
Obrázek 11 Stránka ovládání přístroje
7. 2.4 Administrace Stránky administrační části slouží k především k umožnění přímých zásahů do databáze systému a do adresářů souborového systému patřících pod měřicí systém, z webového rozhraní. Pomocí těchto stránek je možné provádět libovolné změny a je pouze na zodpovědnosti administrátora systému, aby jeho zásahy nevedly k havárii. Pomocí těchto stránek lze spravovat databázi uživatelů, přidávat a mazat uživatele a měnit jejich přístupová oprávnění. Dále je možné přímo měnit položky tabulek seznamu definovaných úloh a plánovaných úloh. Přes tyto funkce je možné přistupovat i k výsledkům a skriptům již vymazaných úloh, pokud ještě nebyly vymazány ze souborového systému soubory s uloženými skripty a výsledky měření.
7. 2.5 Nápověda Tato část stránek nijak neovlivňuje běh celého systému a slouží pouze k on-line získání informací o systému a způsobech jak s ním zacházet. Jedinou výjimkou je, že si uživatel pomocí této části rozhraní může měnit nastavení informací o své osobě, které jsou vedeny v tabulce uživatelů databáze. Může však měnit pouze své heslo a plné jméno. Pomocí těchto změn tedy uživatel nemůže získat vyšší oprávnění k práci se systémem. - 31 -
Automatizovaný Měřicí Systém
8. Databáze Údaje potřebné pro běh měřicího systému jsou uloženy v databázi. Na základě zadání této práce je zvolena databáze MySQL. Tato databáze neumožňuje transakční zpracovávání dotazů, což bylo třeba řešit jiným způsobem – použitím kritických sekcí na straně serveru systému. V jiných ohledech databázový systém zcela vyhoví kladeným požadavkům.
8. 1 Požadavky kladené na databázi Z požadavku realizace systému jako víceuživatelského, vyplývá základní funkce databáze uchovávat informace o jednotlivých uživatelích systému, tak aby bylo možné ověřit uživatelovu identitu (uživatelské jméno a heslo) a určit jeho přístupová práva k ostatním funkcím systému. Dále musí být možné zjistit, kdo do systému vložil jaký skript úlohy a kdo přidal kterou úlohu do plánu úloh k provedení. Struktura databáze je patrná z následujícího obrázku: USERS
SEZNAM
uId integer auto_increment primary key not null jmeno varchar(20) heslo varchar(50) plnejmeno varchar(50) opravneni integer default 0
tId integer auto_increment primary key not null uId integer references users(uid) not null nazev varchar(30) soubor varchar(30) flags integer not null default 0 PLAN
Bit: 1 - Přihlášení 2 - Prohlížení seznamu vlastních úloh 4 - Prohlížení seznamu všech úloh 8 - Plánování vlastních úloh 16 - Plánování všech úloh 32 - Přidávání, mazání a změny vlastních úloh 64 - Přidávání, mazání a změny všech úloh 128 - Změna plánu u vlastních úloh 256 - Změna plánu u všech úloh 512 - Přímá obsluha přístrojů, pokud neběží úloha 1024 - Přímá obsluha přístrojů, i pokud běží úloha 2048 - Administrace
pId integer auto_increment primary key not null tId integer references seznam(tid) not null uId integer references users(uid) not null nazev varchar(30) zacatek datetime stav integer not null default 0 flags integer not null default 0
Nepoužito
Hodnota: 0 - K provedení 1 - Pozastaveno 10 - Měří se 11 - (breakpoint) 20 - Dokončeno 30 - Havárie
Nepoužito
Obrázek 12 Struktura databáze Naznačené vazby mezi tabulkami nemohou být realizovány pomocí využití cizích klíčů (foreign keys), protože tato vlastnost není v použité verzi databázového systému MySQL
- 32 -
Automatizovaný Měřicí Systém
implementována. Nedostupnost této vlastnosti však není na závadu a paradoxně umožňuje snazší aktualizaci záznamů o uživatelích v tabulce „USERS“ a především změny tabulky „SEZNAM“.
8. 2 Popis jednotlivých tabulek 8. 2.1 Tabulka USERS Tabulka slouží k uchovávání informací o jednotlivých uživatelích systému. Jednoznačná identifikace uživatele je pomocí jeho uživatelského jména (jmeno). V rámci měřicího systému je uživatel identifikován svým jedinečným uživatelským číslem (uid). Práva uživatele jsou nastavena v položce opravneni a jsou bitovým součtem povolených operací, tak jak je popsáno dále.
Položky databáze: uid
integer
Jedinečné identifikační číslo uživatele v rámci měřícího systému. Jedinečnost je automaticky zajištěna vlastností auto_incerement.
jmeno
varchar(20) Jedinečné uživatelské jméno uživatele. Jedinečnost musí zaručit správce systému při jeho přidělování.
heslo
varchar(50) Heslo, které umožní uživateli spolu s jeho jménem přístup do systému.
plnejmeno varchar(50) Celé uživatelovo jméno. Tato položka neslouží k žádné činnosti systému, je pouze informativní. opravneni integer
Bitový součet jednotlivých práv, která má uživatel přidělena.
Bit
Hodnota
Právo
0 1 2 3 4 5 6 7 8 9 10 11
1 2 4 8 16 32 64 128 256 512 1024 2048
Přihlášení Prohlížení seznamu vlastních úloh Prohlížení seznamu všech úloh Plánování vlastních úloh Plánování všech úloh Přidávání, mazání a změny vlastních úloh Přidávání, mazání a změny všech úloh Změna plánu u vlastních úloh Změna plánu u všech úloh Přímá obsluha přístrojů, pokud neběží úloha Přímá obsluha přístrojů, i pokud běží úloha Administrace
- 33 -
Automatizovaný Měřicí Systém
8. 2.2 Tabulka SEZNAM Tabulka slouží k uchovávání informací o jednotlivých zadaných úlohách v systému. Tyto úlohy je potom možné přidávat do plánu úloh a tím zajistit jejich vykonání. Úlohy jsou fyzicky uloženy ve formě souborů souborového systému a tabulka obsahuje pouze odkaz na jméno tohoto souboru. Na základě znalosti vlastníka úlohy (tj. uživatele, který úlohu založil nebo naposledy modifikoval) je uplatněna ochrana skriptu úlohy před modifikací jinými uživateli, kteří nemají příslušné oprávnění (ti mohou skript úlohy pouze prohlížet a nikoli ho modifikovat).
Položky databáze: tid
integer
Jedinečné identifikační číslo úlohy v rámci měřícího systému.
uid
integer
Odkaz do tabulky users, obsahuje identifikační číslo vlastníka úlohy.
nazev
varchar(30) Uživatelem definovaný název úlohy. Tato položka neslouží k žádné činnosti systému, je pouze informativní.
soubor
varchar(30) Jméno souboru s uloženým postupem (skriptem) úlohy. Předpokládá se relativní jméno vzhledem k adresáři postupů (skriptů) úloh, který je definován v serveru měřícího systému.
flags
integer
rezerva, není použito
8. 2.3 Tabulka PLAN Tabulka slouží k uchování informací o úlohách, které mají být provedeny nebo již provedeny byly. Obsahuje stěžejní informace z pohledu automatického vykonávání úloh, zvláště stav provádění úlohy (viz. dále) a čas a datum, kdy se má úloha spustit. Pomocí identifikace uživatele, který úlohu k provedení do plánu přidal (tj. vlastníka úlohy v plánu) jsou uplatněny restrikce v možnosti úpravy nastavených parametrů jinými uživateli.
Položky databáze: pid
integer
Jedinečné identifikační číslo vykonané úlohy v plánu úloh.
tid
integer
Odkaz do tabulky seznam, obsahuje identifikační číslo úlohy, ze které byla vytvořena naplánovaná úloha.
uid
integer
Odkaz do tabulky users, obsahuje identifikační číslo vlastníka plánované úlohy.
- 34 -
Automatizovaný Měřicí Systém
nazev
varchar(30) Uživatelem definovaný název úlohy. Tato položka neslouží k žádné činnosti systému, je pouze informativní. Tento název se nemusí shodovat s názvem mateřské úlohy z tabulky seznam.
zacatek
datetime
Datum a čas plánovaného začátku spuštění úlohy.
stav
integer
Obsahuje informaci o průběhu zpracování úlohy. Významy jednotlivých hodnot jsou:
Hodnota Význam 0 Úloha má být spuštěna ve stanovený čas 1 Spuštění pozastaveno, úloha není vymazána, ale nebude spuštěna 10 Úloha se právě měří (je spuštěna) 20 Měření úlohy bylo úspěšně dokončeno 30 Měření úlohy bylo ukončeno neúspěšně – při měření došlo k chybě flags
integer
rezerva, není použito
- 35 -
Automatizovaný Měřicí Systém
9. Závěr Cílem této diplomové práce bylo navrhnout a realizovat automatizovaný měřicí systém, který by umožňoval automatické měření předem definovaných úloh. Připojení jednotlivých přístrojů k měřicímu systému bylo provedeno pomocí sběrnice GPIB (IEEE 488). Pro nízkoúrovňový přístup k přístrojové sběrnici a ovládání přístrojů bylo využito funkcí, které nabízí programové rozhraní knihovny VISA. Systém byl koncipován jako modulární. Jeho základní částí je trvale spuštěný program serveru, který koordinuje činnost ostatních komponent. Pro realizaci jednotlivých programů systému bylo použito jazyka C++ a pro vytvoření uživatelského rozhraní jazyka PHP. Celý systém je možné ovládat a monitorovat pomocí sítě Internet z libovolného počítače vybaveného webovým prohlížečem, přes webové uživatelské rozhraní. Výsledky jednotlivých měření mohou být snadno staženy v textovém formátu, který lze importovat do většiny tabulkových procesorů k dalšímu zpracování. Systém je navržen jako víceuživatelský, s možností udělování přístupových práv k jeho jednotlivým částem. Tím je zajištěna ochrana dat uložených jednotlivými uživateli. Úlohy, které mají být automaticky změřeny jsou definovány pomocí interního skriptovacího jazyka, který umožňuje plně ovládat jednotlivé připojené přístroje a řídit průběh měření i podle již změřených dat. Základními používanými příkazy pro ovládání přístrojů jsou příkazy standardu SCPI. Protože však některé přístroje tento standard nepodporují, není v tomto systému bezpodmínečně vyžadován. Na sběrnici GPIB je podporována možnost provedení skupinového spuštění odměru více přístrojů pomocí příkazu GET. Program provádějící měření úlohy je schopen automatického zotavení z chyb při zpracování příkazů nebo komunikaci s přístroji, které by se vyskytly v průběhu měření a v případě závažných událostí znemožňujících pokračování měření dovoluje jeho korektní ukončení pomocí speciální části skriptu úlohy. K systému lze kromě realizovaného webového rozhraní přistupovat i pomocí jakýchkoli jiných programů, které dodrží komunikační protokol. To umožňuje uzpůsobení rozhraní přesným potřebám jednotlivých uživatelů, případně rozšíření možností prezentace výsledků.
- 36 -
Automatizovaný Měřicí Systém
10. Použitá literatura [1]
Vladimír Haasz, Jaroslav Roztočil, Jiří Novák: Číslicové měřící systémy. Vydavatelství ČVUT, Praha 2000
[2]
Leroy Davis: http://www.interfacebus.com/ , 2004
[3]
Dokumentace National Instruments: http://www.ni.com/
[4]
Dokumentace MySQL: http://www.mysql.org/
[5]
Dokumentace PHP: http://www.php.net/
[6]
Jiří Kosek: PHP – Tvorba interaktivních webových aplikací. Vydavatelství GRADA, Praha 1998
[7]
David Flanagan: JavaScript – Kompletní průvodce. Vydavatelství Computer press, Praha 1998
[8]
Richard Stones, Neil Mathew: Linux, začínáme programovat. Vydavatelství Computer press, Praha 2000
[9]
Richard Stones, Neil Mathew: Linux, programujeme profesionálně. Vydavatelství Computer press, Praha 2001
[10] Petr Tyml: Diplomová práce – Měřící systém pro distanční výuku. Praha 2003
- 37 -
Automatizovaný Měřicí Systém
Příloha A. Konfigurační soubor serveru Slouží ke snadnému určení základních parametrů potřebných pro běh serveru měřicího systému. Konfigurační soubor se předpokládá ve stejném adresáři, kde se nachází spustitelný soubor serveru. Existence tohoto souboru není povinná. V případě, že tento soubor nebude existovat (nebude nalezen) bude serverem předpokládáno předdefinované nastavení. Jednotlivé položky jsou v souboru ve tvaru Název_položky=hodnota. Řádky začínající znakem „#“ jsou považovány za komentář. Jednotlivé volitelné položky jsou: §
DATABASE_HOST Jméno počítače (nebo jeho IP adresa), na němž se nachází databázový server (MySQL databáze). Přednastavená hodnota je „localhost“ (odpovídá IP adrese 127.0.0.1)
§
DATABASE_NAME Jméno databáze, ve které jsou uloženy informace měřicího systému. Přednastaveno je „measurement“.
§
DATABASE_USER Jméno uživatele, pod kterým se má server měřicího systému k databázi přihlásit. Přednastaveno je „ms_server“.
§
DATABASE_PASSWORD Heslo, které se má použít při přihlašování k databázi. Přednastaveno je „password“ – zde je velmi doporučeno nepoužívat jako heslo tuto přednastavenou hodnotu z důvodu bezpečnosti.
§
INSTRUMENTS_PATH Adresářová cesta, kde jsou uloženy soubory předdefinovaných příkazů jednotlivých typů přístrojů. Pokud žádná z úloh nepoužívá tyto příkazy, je tato hodnota bezpředmětná. Přednastavena je hodnota „../meas/instr“.
§
TASKS_PATH Adresářová cesta, kde jsou uloženy skripty jednotlivých definovaných úloh a úloh, které jsou zařazeny do plánu měření. Přednastavená hodnota je „../meas/tasks“.
§
LOGS_PATH Adresářová cesta, kde budou vytvářeny soubory výsledků jednotlivých měření plánovaných a již vykonaných úloh. Přednastaveno je „../meas/log“.
- 38 -
Automatizovaný Měřicí Systém
§
PID_FILE Jméno souboru, které slouží jako zámek proti vícenásobnému spuštění serveru systému. Jeho obsahem je identifikační číslo procesu (PID) serveru. Přednastaveno je „/tmp/MeasureServer.pid“.
§
PLAN_CHECK_INTERVAL Časový interval v sekundách pro kontrolu plánu úloh, kdy se zjišťuje, zda je na aktuální čas naplánováno spuštění některé úlohy.
§
STATUS_LOG_INTERVAL Časový interval v minutách, kdy budou na standardní výstup procesu vypsány informace o běhu procesu (zabraná paměť, vytížení procesoru a další ladící informace) tak, jak jsou poskytovány jádrem operačního systému ve virtuálním souborovém systému adresáře „/proc“. Pokud je zadána hodnota 0, pak je zapisování těchto informací vypnuto. Přednastavena je hodnota 0.
§
CONNECTION_PORT Číslo portu, na kterém bude server očekávat připojení klientů (uživatelů). Přednastavena je hodnota 11222.
Příklad konfiguračního souboru: # # konfiguracni soubor pro measure_server # #Informace pro pripojeni k databazi DATABASE_HOST=localhost DATABASE_NAME=mereni DATABASE_USER=mericiserver DATABASE_PASSWORD=heslo #Interval pro kontrolu planu (v sekundach) PLAN_CHECK_INTERVAL=30 #Interval zapisu status informaci (v minutach / 0=vypnuto) STATUS_LOG_INTERVAL=60 MEASURE_ENGINE_EXECUTABLE=/usr/bin/Measure_Engine/measure_engine PID_FILE=/tmp/Measure_Server.pid INSTRUMENTS_PATH=/usr/share/meas/instr/ TASKS_PATH=/usr/share/meas/tasks/ LOGS_PATH=/usr/share/meas/logs/ CONNECTION_PORT=11222
- 39 -
Automatizovaný Měřicí Systém
Příloha B. Vytvoření databáze Pro vytvoření databáze používané měřicím systémem slouží následující SQL skript (je napsán pro interpretaci programem pro přístup k MySQL databázi „mysql“):
CREATE DATABASE jams;
Po vytvoření databáze pokračujeme přepnutím na nově vytvořenou databázi:
\u jams
CREATE TABLE users ( uid integer auto_increment not null primary key, jmeno varchar(20), heslo varchar(50), plnejmeno varchar(50), opravneni integer default 0 );
CREATE TABLE seznam ( tid integer auto_increment not null primary key, uid integer not null, nazev varchar(30), soubor varchar(30), flags integer not null default 0 );
CREATE TABLE plan ( pid integer not null auto_increment primary key, tid integer not null, nazev varchar(30), uid integer not null, zacatek datetime, stav integer not null default 0, flags integer not null default 0 );
- 40 -
Automatizovaný Měřicí Systém
Příloha C. Příkazy skriptovacího jazyka Řízení průběhu skriptu GOTO – Pokračovat v provádění skriptu v jiné sekci, nebo spustit aktuální sekci od začátku nebo od uvedeného návěští. Syntaxe: GOTO <jméno sekce>.<jméno návěští>
§ jméno_sekce - Označení sekce, kterou bude měření úlohy pokračovat § jméno_návěští - Označení návěští v sekci, za nímž má měření úlohy pokračovat. Uvedení návěští není povinné, pokud se má sekce vykonávat od začátku. Uvedení jména sekce není povinné, pokud se návěští nachází v právě prováděné sekci. GOSUB - Předání zpracování do jiné sekce (nebo spuštění aktuální sekce od začátku) - po jejím skončení se bude pokračovat dalším příkazem v aktuální sekci po příkazu GOSUB. Jedná se o zavolání sekce jako podprogramu. Syntaxe: GOSUB <jméno sekce>.<jméno návěští>
§ jméno_sekce - Označení sekce, kterou bude měření úlohy pokračovat § jméno_návěští - Označení návěští v sekci, za nímž má měření úlohy pokračovat. Uvedení návěští není povinné, pokud se má sekce vykonávat od začátku. Uvedení jména sekce není povinné, pokud se návěští nachází v právě prováděné sekci. RETURN - Ukončení zpracování sekce. Syntaxe: RETURN
IF - Větvení postupu podle splnění nebo nesplnění podmínky. Podmínka je splněna, pokud je výsledek výrazu nenulová hodnota. Varianta příkazu NOWAIT nečeká před vyhodnocováním výrazů podmínky na dokončení všech operací na jednotlivých přístrojích (tedy ani na čtení dat výsledků měření), takže hodnoty proměnných nemusí být v okamžiku vyhodnocení aktualizované podle posledního měření. Syntaxe: IF [NOWAIT] ... ENDIF IF [NOWAIT] ... ELSE
... ENDIF
§ výraz - Matematický výraz podmínky (splněn pokud je výsledek nenulový) - 41 -
Automatizovaný Měřicí Systém
§ příkaz - Příkazy k vykonání, pokud je nebo není (v sekci ELSE) splněna podmínka FAILON - Definování důvodu pro ukončení měření Syntaxe: FAILON NEVER | ALLERR | CMDERR | IOERR
možnosti - NEVER = nikdy, ALLERR = při všech vyhodnocovaných chybách, CMDERR = při chybě vykonávání příkazu přístrojem, IOERR = při chybě komunikace s přístroji. FOR – Příkaz pro definování cyklu Syntaxe: FOR <proměnná> ... NEXT FOR ... NEXT
§ proměnná – označení proměnné cyklu § výraz počátku – počáteční inicializace proměnné cyklu § výraz – podmínka cyklu – pokud je výraz nenulový, bude provedeno tělo cyklu. § výraz iterace – výraz, který je přirazen do proměnné <proměnná> při každé iteraci : návěští Syntaxe: : <jméno návěští>
§ jméno návěští – identifikace návěští (místa ve skriptu) v rámci sekce, kde je použito.
Příkazy přístrojů DO - Provedení předdefinovaného příkazu (ze souboru příkazů přístroje). Funkce provede doplnění parametrů podle druhu příkazu. Syntaxe: DO <jméno přístroje> [ ...]
§ jméno přístroje - Označení přístroje, který má zpracovat příkaz § výraz - Výraz parametru, který je doplněn, na v předdefinici specifikované místo, před provedením příkazu. DDO - Provedení příkazu. Funkce doplní parametry na místa označená znakem $, který je následován výrazem. Pro zápis hexadecimálních čísel lze použít znak "\". Syntaxe: DDO <jméno přístroje> ...
§ jméno přístroje - Označení přístroje, který má zpracovat příkaz
- 42 -
Automatizovaný Měřicí Systém
QUERY, SEND, READ - Jsou obdobou příkazu DDO, ale provedená akce (čtení výsledků, zápis příkazu) není rozhodována podle syntaxe SCPI příkazu COMPLETE - Pozastavení průběhu úlohy do doby, než budou na všech přístrojích dokončeny právě prováděné příkazy. Tento příkaz slouží k synchronizaci provádění úlohy, pokud to vyžadují okolnosti. Syntaxe: COMPLETE
Příkazy práce s proměnnými LET - Přiřazení výsledku výrazu do proměnné. Varianta příkazu NOWAIT nečeká před vyhodnocením výrazu na dokončení všech operací na jednotlivých přístrojích (tedy ani na čtení dat výsledků měření), takže hodnoty proměnných nemusí být v okamžiku vyhodnocení aktualizované podle posledního měření. Syntaxe: LET [NOWAIT] <proměnná>
§ proměnná - Označení proměnné, do které se má uložit výsledek § výraz - Matematický výraz, jehož výsledek má být přiřazen do proměnné LOG - Zapsání aktuálních hodnot proměnných do souboru výsledků měření (zároveň je automaticky zapsán čas provedení příkazu, tedy čas, k jakému jsou hodnoty proměnných platné). Varianta příkazu NOWAIT nečeká před zápisem výsledků na dokončení všech operací na jednotlivých přístrojích (tedy ani na čtení dat výsledků měření), takže hodnoty proměnných nemusí být v okamžiku vyhodnocení aktualizované podle posledního měření. Syntaxe: LOG [NOWAIT]
PRECISION - Změna počtu desetinných míst, na které jsou zapisovány výsledky do souboru výsledků. Syntaxe: PRECISION []
§ výraz - Výsledek výrazu je číslo udávající počet desetinných míst. Pokud výraz není uveden, je nastavena hodnota 7. Příkazy časování SLEEP - Pozastavení průběhu úlohy na specifikovaný čas (v ms). Syntaxe: SLEEP
§ výraz - Výsledek výrazu je čas v ms, na který funkce pozastaví zpracování úlohy.
- 43 -
Automatizovaný Měřicí Systém
ASLEEP_SET - Nastavení a spuštění asynchronního časovače pro pozastavení úlohy na specifikovaný čas (v ms). Syntaxe: ASLEEP_SET
§ výraz - Výsledek výrazu je čas v ms, na který funkce pozastaví zpracování úlohy. ASLEEP_WAIT - Pozastavení běhu úlohy do vypršení času asynchronního časovače nastaveného příkazem ASLEEP_SET. Syntaxe: ASLEEP_WAIT
Příkazy ladění LOGLEVEL - Změna úrovně ladících informací, které budou zapisovány do souboru logu úlohy. Syntaxe: LOGLEVEL []
§ výraz - Výsledek výrazu je číslo udávající úroveň hlášení. (0=fatal errors, 1=errors, 2=warnings, 3=komunikace, 4=debug, 5=debug1, 6=debug2, 7=debug3, 8=všechny informace) BREAKPOINT – Místo zastavení provádění skriptu do doby povolení pokračování uživatelem. Syntaxe: BREAKPOINT [<jméno>]
§ jméno – Označení breakpointu. Nemá žádný vliv na interpretování skriptu.
Ukázka použití jednotlivých příkazů je v kapitole Příloha E. Výrazem se rozumí v hranatých závorkách uvedený matematický výraz s číselným výsledkem. Výrazy mohou obsahovat operátory: unární +, +, -, *, /, %
součet, rozdíl, součin, podíl, zbytek po dělení
<, <=, >, >=, !=, <>, ==
relační operátory
&&, ||
logické AND a OR
- 44 -
Automatizovaný Měřicí Systém
Definované konstanty: Značka Jméno PI π e e µ0 MI0 EPS0 ε0 g ag mp mp me me mn mn Qe Qe NA NA F F R R vc vc k k h h SIGMA σ KJ KJ FI0 ϕ0
Hodnota 3.141592654 2.718281828 12.566370614e-7 8.854187817e-12 9.80665 9.1093826e-31 1.67262171e-27 1.67492728e-27 1.60217653e-19 6.0221415e+23 96485.3383 8.314472 299792458 1.3806505e-23 6.6260693e-34 5.670400e-8 483597.879e+9 2.06783372e-15
Jednotka NA-2 Fm-1 ms-2 kg kg kg C mol-1 C mol-1 J mol-1 K-1 m s-1 J K-1 Js W m-2 K-4 Hz V-1 Wb
Popis Ludolfovo číslo Eulerovo číslo Permeabilita vakua Permitivita vakua Gravitační zrychlení klidová hmotnost elektronu klidová hmotnost protonu klidová hmotnost neuronu Náboj elektronu Avogadrova konstanta Faradayova konstanta Molární plynová konstanta rychlost světla ve vakuu Boltzmanova konstanta Planckova konstanta Stefan-Boltzmanova konst. Josephsonova k. magnetic flux kvantum
Definované funkce: SQRT(x), POW(x,n), ABS(x), SIGN(x), CEIL(x) SIN(x), COS(x), TAN(x), ASIN(x), ACOS(x), ATAN(x), ATAN2(y,x) SINH(x), COSH(x), TANH(x), ASINH(x), ACOSH(x), ATANH(x) TODEG(x), TORAD(x) EXP(x), LG(x), LN(x), LOG(x,a), FACT(x)
- 45 -
Automatizovaný Měřicí Systém
Příloha D. Komunikační protokol server systému – klientská aplikace Odpověď serveru se vždy skládá z čísla chybového kódu, mezery, pomlčky, mezery a následují data odpovědi (podle daného příkazu). Každý řádek odpovědi je zakončen znakem 0x0A (LF). Například: 222 – Uloha z planu vymazana\n
Kódy začínající 2** signalizují úspěšné provedení příkazu, kódy začínající 3** signalizují chybu při provádění příkazu: § 221 – Příkaz proběhl úspěšně, vrácenými daty je seznam – každý záznam na jednom řádku, budou následovat další data (další řádek odpovědi). § 222 – Konec seznamu, pokud byl vrácenými daty seznam, obecně: příkaz proběhl úspěšně, nebudou následovat žádná další data. § 223 – Řádek obsahuje informace o úloze § 224 – Řádek obsahuje informace o sloupci následující tabulky § 231 – Úspěšné přihlášení do systému § 322 – Uživatel nemá právo daný příkaz provést nebo je provedení příkazu v danou chvíli nemožné, z důvodu porušení stanovených omezení. § 331 – Chyba při přihlašování do systému § 340 – Příkaz se nepodařilo provést, pravděpodobně chyba ve formátu dat příkazu nebo selhání některé funkce serveru Příkazy ADMINUSERSLIST ADMINCHANGEUSER ADMINDELETEUSER Příkazy pro přímou práci s tabulkou uživatelů. Syntaxe: ADMINUSERLIST ADMINCHANGEUSER :<jméno>::: ADMINDELETEUSER
- 46 -
Automatizovaný Měřicí Systém
ADMINTASKSFILESLIST Provede zjištění seznamu souboru definovaných úloh. Syntaxe: ADMINTASKSFILELIST
ADMINSHOWTASKFILE ADMINRESCUETASKFILE ADMINDELETETASKFILES Příkazy pro práci se soubory definovaných úloh. Pracují přímo se souborovým systémem a nemají vliv na obsah tabulky „SEZNAM“ databáze. Syntaxe: ADMINSHOWTASKFILE <jméno_souboru> ADMINRESCUETASKFILE <číslo_úlohy> <číslo_zálohy> ADMINDELETETASKFILES <jméno_souboru>
ADMINLOGSFILELIST ADMINSHOWLOGFILE ADMINDELETELOGFILES Příkazy pro práci se soubory logů provedených úloh. Pracují přímo se souborovým systémem a nemají vliv na obsah tabulky „PLAN“ databáze. Syntaxe: ADMINLOGSFILELIST ADMINSHOWLOGFILE <jméno_souboru> ADMINDELETELOGFILES <jméno_souboru>
ADMINTASKSLIST ADMINCHANGETASK ADMINDELETETASK Příkazy pro přímou práci s tabulkou definovaných úloh. Syntaxe: ADMINTASKSLIST ADMINCHANGETASK <číslo_úlohy>::<soubor>: ADMINDELETETASK <číslo_úlohy>
ADMINCHANGESCHEDULEDTASK ADMINDELETESCHEDULEDTASK Příkazy pro přímou práci s tabulkou plánu měření.
- 47 -
Automatizovaný Měřicí Systém
Syntaxe: ADMINCHANGESCHEDULEDTASK <číslo_úlohy>:: <číslo_výchozí_úlohy>::<stav>: ADMINDELETESCHEDULEDTASK <číslo_úlohy>
BYE Příkaz pro ukončení komunikace ze strany serveru. Syntaxe: BYE
CONTINUE Příkaz slouží k odblokování provádění skriptu úlohy, pokud se provádění zastavilo na příkazu BREAKPOINT. Pokud se při provádění skriptu dojde opět na příkaz BREAKPOINT bude provádění opět zastaveno Syntaxe: CONTINUE
CONTINUEALL Příkaz slouží k odblokování provádění skriptu úlohy, pokud se provádění zastavilo na příkazu BREAKPOINT. Pokud se při provádění skriptu dojde opět na příkaz BREAKPOINT bude ignorován – slouží k ukončení ladění a skript je dále vykonáván bez přerušování. Syntaxe: CONTINUEALL
DELETESCHEDULEDTASK Příkaz slouží pro vymazání již naplánované úlohy z plánu úloh a to i pokud úloha ještě nebyla provedena, tak pokud již měření proběhlo. Syntaxe: DELETESCHEDULEDTASK
DELETETASK Příkaz pro vymazání úlohy ze seznamu definovaných úloh Syntaxe: DELETETASK <číslo>
EXIT Příkaz pro ukončení komunikace ze strany serveru Syntaxe: EXIT
- 48 -
Automatizovaný Měřicí Systém
GETSCHEDULEDTASKCODE Příkaz vrátí celý postup (kód skriptu) specifikované úlohy Syntaxe: GETSCHEDULEDTASKCODE
GETSCHEDULEDTASKINFO Příkaz zjistí informace o specifikované úloze z plánu úloh. Bližší informace viz tabulka „PLAN“ databáze Syntaxe: GETSCHEDULEDTASKINFO
GETTASKCODE Příkaz vrátí celý postup (kód skriptu) specifikované úlohy Syntaxe: GETTASKCODE <číslo>
GETTASKERRORS Příkaz vrátí celý log soubor úlohy, která se již alespoň začala měřit (nebo je již skončena). Je možno nastavit úroveň závažnosti hlášení, která budou vrácena Syntaxe: GETTASKERRORS <úroveň>
GETTASKINFO Příkaz zjistí informace o specifikované úloze ze seznamu úloh. Bližší informace viz. tabulka „SEZNAM“ databáze Syntaxe: GETTASKINFO <číslo>
GETTASKRESULTS Příkaz slouží k získání výsledků měření úlohy. Výsledky lze zjišťovat, pokud se úloha již alespoň začala měřit (nebo její měření skončilo) Syntaxe: GETTASKRESULTS <počet_řádků>
INSTRUMENTSLIST Příkaz slouží ke zjištění seznamu přístrojů připojených k měřícímu systému. Příkazem nelze zjistit identifikaci (*IDN?) přístrojů, pokud se právě měří některá úloha Syntaxe: INSTRUMENTSLIST
- 49 -
Automatizovaný Měřicí Systém
QUIT Příkaz pro ukončení komunikace ze strany serveru Syntaxe: QUIT
RESUMESCHEDULEDTASK Příkaz slouží k obnovení spuštění úlohy, jejíž spuštění bylo pozstaveno příkazem SUSPENDSCHEDULEDTASK nebo SUSPENDALLSCHEDULEDTASKS. Syntaxe: RESUMESCHEDULEDTASK
SCHEDULERLIST Příkaz vrátí seznam úloh, které jsou v plánu měření (ať k vykonání nebo již skončeny). Bližší informace viz tabulka „PLAN“ databáze Syntaxe: SCHEDULERLIST
SCHEDULETASK Příkaz přidá úlohu do plánu úloh. Další změny kódu skriptu úlohy v seznamu úloh již neovlivní skript naplánované úlohy. Tímto příkazem lze změnit nastavený čas spuštění úlohy. Syntaxe: SCHEDULETASK <číslo> :<min>:<den>:<měsíc>:
SENDCOMMAND Příkaz pošle přímý příkaz na vybraný měřící přístroj připojený do systému Syntaxe: SENDCOMMAND =
SETTASKCODE Příkaz nastaví kód skriptu k dané úloze. Vždy se musí zapsat znovu celý skript. Automaticky jsou vytvářeny záložní kopie předchozích 3 verzí skriptu, jsou však přístupné pouze přes administrátorské funkce Syntaxe: SETTASKCODE <číslo> <řádek> <řádek> … <0x04> (EOF)
- 50 -
Automatizovaný Měřicí Systém
SETUSERSETTINGS Příkaz provede aktualizaci informací o uživateli, tj. jeho plného jména a pokud je uvedeno, tak i hesla. Syntaxe: SETUSERSETTINGS :
STARTNOW Příkaz slouží k okamžitému spuštění plánované úlohy. Úlohu je tímto způsobem možno spustit i pokud je ve stavu pozastaveného spustění Syntaxe: STARTNOW
STOPTASK Příkaz slouží k přerušení právě měřené úlohy. Umožňuje volbu způsobu ukončení měření (viz 6. 1). Syntaxe: STOPTASK
SUSPENDALLSCHEDULEDTASKS Příkaz provede změnu stavu všech úloh, u kterých na to má uživatel právo, z „ke spuštění“ na „pozastaveno“, tím pádem úlohy nebudou v nastavený čas spuštěny, ale nejsou vymazány z plánu Syntaxe: SUSPENDALLSCHEDULEDTASKS
SUSPENDSCHEDULEDTASK Příkaz provede změnu stavu úlohy z „ke spuštění“ na „pozastaveno“, tím pádem úloha nebude v nastavený čas spuštěna, ale není vymazána z plánu Syntaxe: SUSPENDSCHEDULEDTASK
TASKLIST Příkaz vrátí seznam definovaných úloh. Bližší informace viz. tabulka „SEZNAM“ databáze Syntaxe: TASKLIST
- 51 -
Automatizovaný Měřicí Systém
USER Příkaz pro přihlášení k systému. Povinně musí předcházet veškeré další komunikaci Syntaxe: USER <jméno>
VISARESTART Příkaz provede znovupřipojení knihovny VISA. Syntaxe: VISARESTART
- 52 -
Automatizovaný Měřicí Systém
Příloha E. Vzorová úloha Předpokládejme následující úlohu: Ověřte dvěma voltmetry výstupní napětí zdroje v rozsahu 0V až 6V s krokem po 0,05V v obou směrech (pro zvyšující se napětí a pro snižující se). Odměr napětí proveďte oběma voltmetry současně s využitím funkce GET sběrnice GPIB.
Skript pro prevedení úlohy by vypadal následovně: #definice pouzitych pristroju instruments _KARTA====GPIB0::INTFC z=x=zdroj==GPIB0::2::INSTR v1=V=voltmetr==GPIB0::22::INSTR v2=V=voltmetr==GPIB0::23::INSTR end_instruments #preddefinovane vypocty calculators odchylka1=V=chyba napeti zdroje=v1-z odchylka2=V=chyba napeti zdroje=v2-z end_calculators #pouzite promenne variables krok _pocatek _konec end_variables section INIT loglevel [2] failon NEVER #inicializace promennych podle pozadavku zadani let krok [0.05] let pocatek [0.0] let konec [6.0] #zapnuti zdroje a konfigurace voltmetru send z sour:curr 0.01 send z sour:volt 0.0 send z outp:state on send v1 conf:volt:dc send v2 conf:volt:dc send v1 trig:sour bus send v2 trig:sour bus #provedeni podprogramu pro vlastní mereni gosub mereni_nahoru gosub mereni_dolu
- 53 -
Automatizovaný Měřicí Systém
#prepnuti zpusobu mereni voltmetru zpet a vypnuti zdroje send v1 trig:sour imm send v2 trig:sour imm send z sour:volt 0.0 send z outp:state off complete end_section section FAILED #vypnuti zdroje v send z outp:state send v1 trig:sour send v2 trig:sour complete end_section
pripade preruseni mereni off imm imm
section mereni_nahoru for z [pocatek] [z<=konec] [z+krok] send z sour:volt $[z] sleep [1000] ddo v1 init ddo v2 init gpib_get KARTA v1 v2 ddo v1 FETCH? ddo v2 FETCH? sleep [200] log next end_section section mereni_dolu for z [konec] [z>=pocatek] [z-krok] send z sour:volt $[z] sleep [1000] ddo v1 init ddo v2 init gpib_get KARTA v1 v2 ddo v1 FETCH? ddo v2 FETCH? sleep [200] log next end_section
- 54 -
Automatizovaný Měřicí Systém
Příloha F. Seznam souborů měřicího systému SERVER (realizován v jazyce C++) databaze.cc / databaze.h – Funkce a definice objektů pro práci s databází MySQL. main.cc / main.h – Inicializace systému a jeho ukončení, funkce kontroly plánu měření a obsluha požadavků na připojení klientů. mereni.cc / mereni.h – Funkce pro obsluhu měřené úlohy a interaktivního ovládání připojených přístrojů. soubory.cc / soubory.h – Funkce pro práci se soubory, které náleží k měřicímu systému (skripty úloh, výsledky měření apod.) spojeni.cc / spojeni.h – Funkce a defnice objektů pro obsluhu příkazů připojených uživatelů. VÝKONNÁ ČÁST (realizována v jazyce C++) calculators.cc / calculators.h – Funkce a definice objektů pro vyhodnocování předdefinovaných výrazů. expresions.cc / expresions.h – Definice objektů proměnných a funkce pro vyhodnocování matematických výrazů. instruments.cc / instruments.h – Funkce pro obsluhu jednotlivých používaných přístrojů, inicializace VISA knihovny a obsluha událostí. main.cc / main.h – Inicializace výkonné části a načtení skriptu měřené úlohy. Definuje funkce pro komunikaci s měřicím serverem. section.cc / section.h – Definice objektů jednotlivých příkazů skriptovacího jazyka. Obsahuje metody těchto objektů pro vykonávání skriptu. WEBOVÉ ROZHRANÍ (realizováno v jazyce PHP) administrace.php – Stránky s administrátorskými funkcemi. download.php – Skript pro download skriptu úlohy nebo výsledků. index.php – Základní skript pro zpracování požadavků uživatele. login.php / login_res.php – Skript pro přihlášení uživatele (a webové aplikace) k serveru menu.php – Zobrazení menu navod.php – Návod k používání systému (používá další soubory obsahující text nápovědy) plan.php – Skript pro zobrazení stránky plánu úloh a práci s ním. pristroje.php – Skript pro interaktivní ovládání připojených přístrojů seznamuloh.php - Skript pro zobrazení stránky definovaných úloh a práci s ním. welcome.php – Skript pro zobrazení úvodní stránky.
- 55 -