Zpracování dat StoneBase
Zpracování dat v časových úrovních
SCADA
systém pracuje obecně s daty
- změřenými
- vypočtenými
- generovanými přepočtem
Základním elementem dat je vzorek reprezentovaný hodnotou, statusem, časem a počtem vzorků.
Hodnota představuje základní kvantitativní parametr vzorku. Hodnota je v systému uložena jako 8 bytový float a může nabývat libovolné reálné hodnoty.
U binárních proměnných bývá hodnota prakticky vždy pouze celé číslo v intervalu 0 až 15, což přestavuje jeden z 16 možných digitálních stavů, i když zpracováním by mohla i binární veličina nabývat hodnot jiných než celá čísla. Analogová proměnná směr větru obsahuje v jediné reálné hodnotě jak směr (0-359 stupňů), tak váhu.
V některých případech nemusí být hodnota vzorku definována. Tato situace je pak označena ve statusu (zatímco hodnota obsahuje číslo 0).
Status představuje doplňkový kvalitativní parametr vzorku. Status je v systému uložen jako 4 bytový integer a soustřeďuje v celkem 32 bitech několik různých charakteristik, podle kterých lze vzorky klasifikovat.
Čas přiřazuje jednotlivým vzorkům vzájemnou posloupnost. Čas je uložen jako 8 bytový float (standardní formát vyjadřující počet dnů od definovaného počátku). Čas označuje počátek časového intervalu, za který byl vzorek zpracován. Délka tohoto intervalu závisí na úrovni, které vzorek přísluší.
Při prezentaci vzorku se z praktických důvodů používá pro časové označení vzorku nikoli počátek příslušného časového intervalu, ale jeho konec, tedy vlastně počátek intervalu bezprostředně následujícího.
Počet vzorků je další upřesňující parametr vzorku. Počet vzorků je uložen jako 4 bytový integer a ukazuje, z kolika vzorků nižší úrovně byl vzorek vytvořen. Tento údaj je nezbytný, pokud vzorek vytváří systém přepočtem ze vzorků nižší úrovně.
SCADA systém pracuje s daty na více různých úrovních. Tyto úrovně se nazývají časové, někdy se také označují jako datové. Časová uroveň je charakterizována především délkou vzorku - někdy označovanou také jako perioda. Délka vzorku je vlastně délka časového intervalu, za který se vzorky na dané úrovni zpracovávají.
Systém může pracovat s 1 až 8 časovými úrovněmi, v praxi se nejčastěji používá úrovní 5 nebo 6. Nejnižší úroveň je vždy označena číslem 0. Délky vzorků mohou nabývat jen určitých vybraných hodnot, přičemž nejkratší možná délka vzorku je 1 sekunda, nejdelší 1 rok. Délka vzorku na každé úrovni musí být vždy větší než délka na úrovni předchozí.
U jednotlivých proměnných se nemusí pracovat se vzorky na všech úrovních, které systém používá. U každé proměnné jsou úrovně, se kterými se pracuje (neboli jsou pro proměnnou definovány) určeny konfiguračním parametrem LEVEL_MASK.
Ve většině případů se sice pracuje se všemi úrovněmi, někdy jsou však vyloučeny nejnižší úrovně (měření veličiny je realizováno až na delších časových intervalech) nebo naopak úrovně nejvyšší (v dlouhých časových intervalech už nemá význam veličinu zpracovávat). Teoreticky si lze představit i situaci, kdy je vyloučena některá úroveň uprostřed.
Vzorek na každé úrovni vzniká některým z následujících způsobů:
- změřením
- výpočtem
- přepočtem
ze vzorků nižší úrovně.
Všechny uvedené způsoby lze označit jako zpracování dat. Data zpracovává aplikace nazvaná procesní server. Při zpracování se kontroluje, aby byla dodržena integrita všech parametrů tvořících vzorek a pokud možno i vzájemná integrita jednotlivých vzorků.
Systém může pracovat i se vzorky, které byly importovány přímo do databáze bez předchozího zpracování procesním serverem.
Měření - sběr dat je základní způsob, jakým systém získává externě data. Měření provádí aplikace nazvaná skener server. Skener získává prostřednictvím specializovaných driverů data z různých snímacích zařízení a provádí jejich částečnou úpravu. Takto upravené vzorky předává procesnímu serveru. Nejčastěji se předávají vzorky na nejnižší časové úrovni, skener ovšem může dodávat data i na úrovni vyšší, případně na několika různých úrovních. Procesní server přebírá vzorky a může přitom provádět jejich další úpravu. Procesní sever nemůže přebírat vzorky na úrovni, kterou proměnná nemá definovanou a neměl by přebírat ani ty vzorky, které sám vytváří přepočtem.
Další způsob externího generování dat je výpočet. Výpočet provádí programový subsystém integrovaný do procesního serveru, a to na základě jednotlivých programů. Výpočtem zpravidla vznikají vzorky dat proměnné, která není přímo měřena žádným z driverů skeneru. Vzorek se vytváří na základě algoritmu popsaném ve skriptu programu ze vzorků dat jiných proměnných na stejné časové úrovni.
Díky možnostem skriptu může být ovšem výsledný vzorek generován mnoha různými způsoby (např. ze vzorků dat téže proměnné na jiné úrovni - náhrada přepočtu nebo bez využití jiných vzorků vůbec).
V rámci programu se plní všechny parametry vzorku. Se vzorky generovanými programovým subsystémem nakládá procesní server obdobně jako se vzorky předávanými skenerem.
Posledním způsobem generování dat je přepočet ze vzorků nižší úrovně - interní zpracování. Přepočet provádí procesní server. Pro zajištění mechanismu přepočtu využívá procesní server vzorky průběžných dat.
Na úrovních, která má proměnná definovány, pracuje systém nejen s "hotovými" vzorky dat - tzv. posledními vzorky (vzorky posledních dat), ale i se vzorky "rozpracovanými" - tzv. průběžnými vzorky (vzorky průběžných dat). Průběžný vzorek na určité časové úrovni přestavuje obecně jakýsi mezivýsledek - předpověď toho, jak bude asi vypadat nový poslední vzorek téže úrovně, až dojde k jeho vytvoření. Tato jeho vlastnost má význam především na úrovních s dlouhou periodou, kdy je vznik jednotlivých posledních vzorků oddělen poměrně dlouhým časovým intervalem.
Vzorky průběžných hodnot generuje nejčastěji procesní server v rámci přepočtu do vyšší úrovně, mohou však být generovány i skenerem, případně programem. Pokud generuje průběžné vzorky procesní server, neměly by být odjinud přijímány, neboť by tím došlo k narušení mechanismu přepočtu.
Pokud má procesní server vytvářet na nějaké úrovni vzorky přepočtem ze vzorků nižší úrovně, musí sám na této úrovni vytvářet průběžné vzorky. Průběžné vzorky může ale vytvářet pouze tehdy, pokud je proměnná na nižší úrovni definována. Úrovně, na kterých se průběžné vzorky vytvářejí, určuje konfigurační parametr FLOW_MASK. Z předchozího vyplývá že flow_mask musí být podmnožinou level_mask a navíc bit v masce flow_mask může být nasazen, jen pokud je nasazen sousední nižší bit v masce level_mask.
V praxi bývá proměnná nejčastěji definována na všech úrovních, které používá systém. Z vytváření průběžných vzorků je pak vyloučena pouze nejnižší úroveň. U nejnižší úrovně nemají stejně průběžná data význam (mohla by pouze být generována externě).
Úrovně, na kterých se vzorky vytvářejí přepočtem, určuje konfigurační parametr PROC_MASK. Proc_mask musí být podmnožnou flow_mask.
Pokud nějaký bit obsazený v masce flow_mask u proc_mask chybí, znamená to, že procesní server sice na dané úrovni vytváří průběžné vzorky, ty se ale pro generaci vzorků posledních nevyužívají. Poslední vzorky v tom případě mohou být plněny externě.
Vedle zmíněných masek používá procesní server pro zpracování dat řadu dalších konfiguračních parametrů. Některé z nich mají pouze význam pro vlastní přepočet - vytváření průběžného vzorku, jiné se mohou uplatnit i při externím zpracování dat. Parametry určené pouze pro vlastní přepočet nemají význam na úrovních, kde se nevytváří průběžné vzorky (typicky na nejnižší úrovni).
Parametry pro vlastní přepočet jsou:
- typ zpracování - PROC_TYPE
- minimální počet vzorků - MIN_SAMPLES
- priorita
jednotlivých stavů- PRIORITY.
Typ zpracování určuje, jak se ze vzorků nižší úrovně sestavuje průběžný vzorek na dané úrovni. Minimální počet vzorků určuje, z kolika platných vzorků nižší úrovně musí být průběžný vzorek na dané úrovni sestaven, aby mohl být poslední vzorek vzniklý z průběžného považován za věrohodný. Priorita stavů se uplatní jen při zpracování typu prioritní stav, který má smysl jen u binární proměnné
Parametry určené pro úpravu vzorku na vstupu jsou:
- aditivní konstanta přepočtu - ADD_CONST
- multiplikativní konstanta přepočtu - ADD_MUL
- parametry fyzických mezí
- parametry ořezávajících mezí
- parametry mezí mezi jednotlivými stavy
- klasifikace
jednotlivých stavů - RANGE_NUM
Aditivní a multiplikativní konstanty upravují hodnotu vzorku na vstupu lineárním přepočtem. Porovnáním hodnoty vzorku s fyzickými mezemi se určuje jeho platnost. Porovnáním hodnoty vzorku s ořezávajícími mezemi může dojít k posunu této hodnoty. Parametry mezí mezi jednotlivými stavy určují, do kterého stavu vzorek patří. Klasifikace stavů pak určuje klasifikaci vzorku.
Proces interního zpracování - přepočet ze vzorku nižší úrovně probíhá následujícím způsobem:
S příchodem každého nového vzorku na nižší úrovni se upravuje průběžný vzorek na dané úrovni tak, že se s tímto novým vzorkem zkombinuje (aktualizace průběžného vzorku). Pokud nový vzorek na nižší úrovni patří již do novější periody dané úrovně, než jakou reprezentuje aktuální průběžný vzorek, musí se průběžný vzorek před kombinováním napřed resetovat -vynulovat, tak aby došlo k jeho vytváření "nanovo" (reset průběžného vzorku). Pokud by z nějakého důvodu nebyl v takovém případě ještě průběžný vzorek převeden do nového vzorku posledního, musí se tak učinit ještě před resetem průběžného vzorku (mimořádné uzavření průběžného vzorku). Pokud byl nový vzorek na nižší úrovni již posledním vzorkem patřícím do periody dané úrovně reprezentované aktuálním průběžným vzorkem, převede se průběžný vzorek do nového vzorku posledního (řádné uzavření průběžného vzorku).
Pokud se proměnná na dané úrovni nemá zpracovávat, provádí se pouze aktualizace a reset průběžného vzorku, ale jeho uzavření se neprovádí.
Při aktualizaci průběžného vzorku se v případě, že nebyl proveden jeho reset, napřed rozhoduje, zda příchod nového vzorku nižší úrovně nezpůsobí reset mimořádný nebo zda průběžný vzorek nebude novým vzorkem nižší úrovně vůbec ovlivněn. V prvním případě se provede reset průběžného vzorku, v druhém se aktualizace ukončí. Další část aktualizace nastavuje hodnotu, status a počet vzorků průběžného vzorku.
Hodnota vzorku na nižší úrovni se napřed lineárně přepočítá, aby ji bylo možno kombinovat s hodnotou průběžného vzorku. Pokud byl proveden reset, přepíše se do hodnoty průběžného vzorku rovnou přepočtená hodnota z nižší úrovně, jinak se tato hodnota s hodnotou průběžného vzorku kombinuje na základě typu zpracování.