Alarmy systému StoneBase

Alarmy

Definice alarmu

Alarm je zvláštním druhem informace, který SCADA systém využívá při prezentaci dat. Nejdůležitější jsou standardní alarmy, které jsou vždy spojeny se změnou stavu dat nějaké proměnné systému. Jiné alarmy (např. záznam o vydání povelu, výpis chyby, apod.) mají obecnější charakter, ale zatím nejsou využívány, a proto bude pod pojmem alarm míněn dále pouze alarm standardní.

Standardní alarm vzniká při vytvoření nového vzorku dat, pokud se tento vzorek podstatně liší od vzorku předchozího. Vzájemný vztah obou zmíněných vzorků je určující pro typ alarmu.

Vznik alarmu vždy naznačuje nějakou významnou událost, a proto je důležitá forma jeho prezentace uživatelům. Nezbytná je dále možnost, aby vybraný uživatel potvrzením alarmu zaznamenal, že vzal jeho vznik na vědomí.

Standardní alarm má následující parametry:

  • Klíčový čas
  • Typ alarmu
  • Identifikátor proměnné
  • Datová úroveň
  • Čas vzorku
  • Hodnota
  • Status
  • Počet vzorků
  • Identifikátor potvrzujícího uživatele
  • Čas potvrzení

Klíčový čas zajišťuje jednoznačnou identifikaci každého alarmu. Klíčový čas má přesnost na 1 milisekundu a určuje v zásadě okamžik, kdy byl alarm vygenerován. Princip generování zaručuje, že je každý alarm označen jiným klíčem i v případě, kdy dojde k vytvoření mnoha alarmů najednou.

Typ alarmu přestavuje klasifikaci alarmu na základě změny v datech, která jeho vznik vyvolala. U většiny typů alarmů se jedná o změnu, kdy se liší stav nového vzorku od stavu vzorku předchozího. Pokud se oba vzorky nacházejí v provozním stavu, ale liší se vzájemně stavem hodnoty, nastane podmínka pro vznik některého ze speciálních typů alarmů. Mezi těmito typy jsou 3 uživatelské. 

Uživatelský typ alarmu má definovány konkrétní stavy hodnot nového a předchozího vzorku. Tato definice je individuální pro jednotlivé proměnné, přičemž každá proměnná může mít definovány jen některé z uživatelských typů. Při zjišťování podmínky pro vznik speciálního typu alarmu má vždy přednost některý z definovaných uživatelských typů před obecným typem, pro něhož je postačující podmínka změny mezi libovolnými stavy hodnot obou vzorků.

Identifikátor proměnné označuje proměnnou svázanou s alarmem a spolu s datovou úrovní a časem vzorku určuje vzorek, při jehož vytvoření alarm vznikl. Hodnota, status a počet vzorků jsou vlastní parametry tohoto vzorku. Každý alarm obsahuje kopii parametru s ním svázaného vzorku.

Identifikátor potvrzujícího uživatele odkazuje na uživatele, který alarm potvrdil. Zvláštní hodnota identifikátoru označuje situaci, kdy alarm ještě potvrzen není, a jiná stav, kdy byl alarm automaticky potvrzen systémem již při svém vzniku. Pokud je alarm potvrzen, označuje čas potvrzení okamžik, kdy systém toto potvrzení obdržel.

Generování alarmů

Alarmy generuje procesní server při každém vytvoření nového vzorku dat a přiděluje jim jednoznačný klíčový čas. Vygenerované alarmy jsou ukládány do kruhové databázové tabulky, odkud pak mohou být čteny jinými aplikacemi za účelem jednak aktuálního vyhodnocení, případně potvrzení, jednak následného prohlížení a dalšího zpracování.

Ke generaci dojde ovšem jen v tom případě, pokud je zjištěný typ alarmu u dané proměnné nastaven. U každé proměnné je definováno, na kterých datových úrovních je generace alarmů povolena. Pro každou úroveň zvlášť se pak nastavuje, které všechny typy alarmů se na ní mohou generovat. Pokud je povolena generace některého z uživatelských typů, musí být pro tento typ nastaveny stavy hodnot obou porovnávaných vzorků. U proměnné se rovněž definuje, které typy alarmů má systém automaticky potvrdit při jejich generaci.

Vyhodnocení alarmů

Vyhodnocení alarmů provádí grafický prohlížeč, a to způsobem, který je závislý na aktuálně přihlášeném uživateli. V pravidelné periodě (standardně po 1 s) se z databázové tabulky čtou nové alarmy určené k vyhodnocení a podle jejich parametrů se generují definované vizuální i akustické akce. Pokud se takových alarmů v tabulce nalezne větší počet, vyhodnocují se až do maximálního počtu (standardně 100) najednou. Forma některých akcí (především akustických) se pak musí určit komplexně.

Vizuální akce mohou být následující:

  • Výpis alarmu do informačního řádku
  • Výpis alarmu v kruhovém seznamu posledních alarmů
  • Výpis alarmu v seznamu alarmů k potvrzení
  • Indikace nepotvrzených alarmů ve stavovém řádku
  • Automatické vyvolání alarmové konzole do popředí

Akustické akce mohou být následující:

  • Krátké upozornění různými druhy zvuků
  • Trvalá signalizace (siréna)
  • Opakované připomínání nepotvrzených kritických alarmů

Které z alarmů se budou vyhodnocovat a jaké akce budou vyvolány je dáno kombinací nastavení:

  • Parametrů přihlášeného uživatele
  • Parametrů uživatelského profilu, který je přihlášenému uživateli přiřazen
  • Parametrů proměnné svázané s alarmem
  • Parametrů alarmového profilu, který se u alarmu uplatní

Alarmový profil sdružuje nejdůležitější informace, na základě kterých grafický prohlížeč na alarm reaguje. Každý profil obsahuje pro jednotlivé typy alarmů následující parametry:

  • Třída alarmu
  • Nezpracovávat alarm
  • Potlačit výpis alarmu do informačního řádku
  • Identifikátor zvuku pro standardní třídu
  • Považovat alarm za kritický
  • Vyvolat alarmovou konzoli do popředí

Uplatňování alarmového profilu:

  • Nejvyšší prioritu má alarmový profil definovaný pro proměnnou svázanou s alarmem v uživatelském profilu uživatele - uživatelský alarmový profil
  • Pokud není uživatelský alarmový profil definován, použije se alarmový profil definovaný přímo u této proměnné - vlastní alarmový profil
  • Pokud není vlastní alarmový profil definován, použije se profil s pevně danými parametry - interní alarmový profil

Při vyhodnocování alarmu je důležité zjistit jakou má třídu a zda je kritický. Oba parametry jsou vzájemně nezávislé, ale závisí na aktuálně přihlášeném uživateli.

Třída alarmu

Pravidla určující, jakou má vyhodnocený alarm pro přihlášeného uživatele třídu:

  • Třída alarmu je dána nastavením v uplatňovaném alarmovém profilu
  • Pokud je zjištěná třída vyšší než maximum nastavené globálně pro uživatele, nahradí se tímto maximem

Vyhodnocuje-li se více alarmů najednou, určí se výsledná třída jako maximum ze všech zjištěných tříd. Vhodným nastavením maximální třídy alarmu lze pro uživatele jednoduše potlačit nežádoucí reakce na alarmy vysokých tříd. Jedinou reakcí, která se v současné verzi systému odvozuje od třídy alarmu, je zvukové upozornění.

Kritický alarm

Pravidla určující, zda se vyhodnocený alarm považuje pro přihlášeného uživatele za kritický:

  • Daný alarmový typ musí být v uplatňovaném alarmovém profilu označen jako kritický
  • Pokud se uplatní vlastní alarmový profil proměnné, tak hodnocení, zda je alarm kritický, nesmí být globálně potlačeno

Vyhodnocuje-li se více alarmů najednou, bude se výsledek považovat za kritický, pokud byl jako kritický vyhodnocen alespoň jeden z alarmů. Pokud seznam alarmů k potvrzení obsahuje nepotvrzený kritický alarm, dochází k periodickému zvukovému připomenutí, případně k automatickému vyvolání alarmové konzole do popředí.

Pravidla určující, zda se alarm bude vyhodnocovat:

  • Uživatel musí mít proměnnou svázanou s alarmem zařazenu v uživatelském profilu
  • Vyhodnocení nesmí být pro daný alarmový typ potlačeno v uplatňovaném alarmovém profilu
  • Pokud se uplatní vlastní alarmový profil proměnné, tak vyhodnocení nesmí být globálně potlačeno

Alarmy, které ke zpracování určeny nejsou, může uživatel prohlížet pouze prostřednictvím okna historie alarmů.

Informační řádek je umístěn v dolní části grafického prohlížeče těsně nad stavovým řádkem (v případě zobrazení aplikace přes celou obrazovku je zcela vpravo dole vedle stavového řádku). Na řádku se zobrazí parametry posledního vyhodnoceného alarmu. Výpis alarmu bude buď přepsán dalším alarmem (případně jiný výpisem) nebo se automaticky po nastavitelné době smaže. Pokud se najednou vyhodnotí větší počet alarmů, které se mají vypisovat do informačního řádku, vypíše se pouze poslední z nich.

Pravidla určující, zda se vyhodnocený alarm vypíše do informačního řádku:

  • Výpis nesmí být pro daný alarmový typ potlačen v uplatňovaném alarmovém profilu
  • Pokud se uplatní vlastní alarmový profil proměnné, tak výpis nesmí být globálně potlačen

Kruhový seznam posledních alarmů se nachází v dolní části okna alarmové konzole (pokud uživatel nemá globální právo potvrzovat alarmy, zaujímá seznam posledních alarmů vždy celou plochu konzole, pokud uživatel alarmy potvrzovat může, lze naopak seznam posledních alarmů z konzole skrýt). Alarmy jsou v seznamu zobrazovány na jednotlivých řádcích v pořadí v jakém byly vygenerovány. Standardně je řazení vzestupné s posledním alarmem na posledním řádku (dole), při volitelném inverzním zobrazení je řazení sestupné s posledním alarmem na prvním řádku (nahoře).

Každý vyhodnocený alarm se automaticky zapisuje do seznamu posledních alarmů bez dalšího nastavování. Nový alarm se vloží na konec seznamu (při inverzním zobrazení je konec nahoře). Pokud již seznam dosáhl maximální nastavené délky (standardně 100), vyřadí se nejstarší alarm na začátku.

Po startu aplikace (resp. přihlášení do systému) se seznam naplní posledními alarmy, které se pro přihlášeného uživatele měly vyhodnocovat (bez ohledu na to, zda se skutečně vyhodnotily při předchozím běhu aplikace nebo zda vyhodnocení neproběhlo). Plnění seznamu je omezeno jednak maximálním počtem (standardně 100), jednak maximálním stářím alarmů (standardně 7 dnů).

Jelikož výpis alarmů v seznamu obsahuje mimo jiné informaci o jejich potvrzení, celý seznam se periodicky aktualizuje (standardně po 10 s).

Seznam alarmů k potvrzení se nachází v horní části okna alarmové konzole (pokud uživatel nemá globální právo potvrzovat alarmy, konzole seznam obsahovat nebude, pokud uživatel alarmy potvrzovat může, lze z konzole skrýt seznam posledních alarmů a seznam alarmů k potvrzení se tak zvětší přes celou plochu). Alarmy jsou v seznamu zobrazovány na jednotlivých řádcích v pořadí v jakém byly vygenerovány podobně jako v seznamu posledních alarmů.

Pravidla určující, zda se vyhodnocený alarm vypíše do seznamu alarmů k potvrzení:

  • Uživatel musí mít globální právo potvrzovat alarmy
  • Uživatel musí mít v uživatelském profilu u proměnné svázané s alarmem nastaveno právo potvrzovat alarm
  • Alarm nesmí být již potvrzen (systémem nebo jiným uživatelem)

Nový alarm určený k potvrzení se vloží na konec seznamu (při inverzním zobrazení je konec nahoře). Seznam alarmů k potvrzení není kruhový a alarmy se odstraňují jen na pokyn uživatele.

Po startu aplikace (resp. přihlášení do systému) se seznam naplní posledními nepotvrzenými alarmy, které přihlášený uživatel může potvrdit. Plnění seznamu je omezeno jednak maximálním počtem (standardně 1000), jednak maximálním stářím alarmů (standardně 3 dny).

Jelikož výpis alarmů v seznamu obsahuje mimo jiné informaci o jejich potvrzení, celý seznam se periodicky aktualizuje (standardně po 10 s). Alarmy, které mezitím byly potvrzeny ze seznamu automaticky nevypadnou, ale jsou pouze barevně odlišeny.

Hlavním účelem seznamu alarmů k potvrzení je možnost alarmy potvrzovat. Nejprve je třeba zvolený alarm, případně alarmy v seznamu vybrat a vybrané potom pomocí příslušného tlačítka potvrdit. Vybírat lze buď manuálně (standardním postupem výběru položek v seznamu pomocí myši a klávesnice) nebo jedním z dvou automatických způsobů. První vybere ze seznamu všechny nepotvrzené alarmy, druhý jen ty z nich, které jsou neaktuální. Při automatickém výběru se kritické alarmy ignorují. Nejednou lze potvrdit jen omezené množství alarmů (standardně 1000). Manuálně lze vybírat rovněž alarmy již potvrzené, ale ty se k potvrzení znovu neposílají.

Výpis alarmů rozlišuje mezi alarmy:

  • dosud nepotvrzenými kritickými
  • dosud nepotvrzenými
  • právě potvrzovanými
  • již potvrzenými jiným uživatelem
  • již potvrzenými

Indikace nepotvrzených alarmů ve stavovém řádku

Situaci, kdy grafický prohlížeč vyhodnotil nějaké alarmy, které uživatel může potvrdit, ale ještě je nepotvrdil, indikuje ve třetí sekci stavového řádku aplikace animovaný symbol nepotvrzeného alarmu (zvonek) doplněný počtem nepotvrzených alarmů. Dvojím kliknutím na tuto sekci stavového řádku se otevře alarmová konzole.

Automatické vyvolání alarmové konzole do popředí

Alarmová konzole se normálně otevírá, resp. aktivuje buď z hlavního menu nebo dvojitým klikem na indikátor nepotvrzených alarmů. K aktivaci může docházet rovněž automaticky, a to jednak v souvislosti s vyhodnocením určitého alarmu, jednak z důvodu připomenutí nepotvrzených kritických alarmů.

Pokud alespoň jeden z vyhodnocovaných alarmů splní následující podmínky, dojde k automatickému vyvolání konzole do popředí:

  • Automatické vyvolání konzole musí být pro daný alarmový typ v uplatňovaném alarmovém profilu povoleno
  • Pokud se uplatní vlastní alarmový profil proměnné, tak automatické vyvolání konzole nesmí být globálně potlačeno

Nezávislou podmínkou automatického vyvolání alarmové konzole do popředí je vyhodnocení trvalé zvukové signalizace.

Pokud se při periodickém připomínání nepotvrzených kritických alarmů zjistí, že alarmová konzole není na popředí, dojde rovněž k její automatické aktivaci.

Vyhodnocení zvukové signalizace příchodu alarmu

Ze všech najednou vyhodnocených alarmů se určí výsledná třída (viz třída alarmu) a podle ní zvuk, který grafický prohlížeč přehraje.

Každé třídě je přiřazen jiný standardní zvuk z tabulky zvuků. Charakter standardních zvuků by měl respektovat význam alarmové třídy, který roste s jejím identifikačním číslem. Zvuk pro nejvyšší alarmovou třídu ("maximální") se přehrává trvale a uživatel jej musí manuálně zrušit pomocí tlačítka v okně alarmové konzole. Při vyhodnocení trvalé zvukové signalizace se alarmová konzole automaticky vyvolá do popředí. Zvuky pro nižší alarmové třídy se přehrají jen jednou. Zvuk pro nejnižší alarmovou třídu ("standardní") může být pro různé proměnné a typy alarmu předefinován v alarmovém profilu. Pokud je výsledná třída standardní a mezi vyhodnocenými alarmy byly alespoň dva s jinak předefinovaným zvukem, předefinování se ignoruje a použije se standardní zvuk.

Nastavení speciálního zvuku pro alarm:

  • Speciální zvuk může být definován v uplatňovaném alarmovém profilu, ale pouze pro standardní alarmovou třídu

Opakované připomínání nepotvrzených kritických alarmů

Jestliže seznam alarmů k potvrzení obsahuje alespoň jeden kritický alarm, dochází periodicky (standardně po 60 s) k akustickému připomenutí, dokud nejsou všechny kritické alarmy potvrzeny.

Definiční datová úroveň - princip dědění parametrů

Jelikož má proměnná často pro více datových úrovní zcela shodné parametry, definice se zbytečně neopakuje, ale využije se dědění z předchozí úrovně. Dědění funguje tak, že pokud nemá proměnná pro požadovanou úroveň definovány parametry přímo, vezmou se parametry z nejbližší nižší úrovně, kde parametry přímo definovány jsou. Tato úroveň představuje pro požadovanou úroveň tzv. definiční úroveň. Nejnižší úroveň (s číslem 0) nemá odkud dědit, a je tudíž definiční sama sobě.

Princip generování klíčového času pro alarmy

Klíčový čas generuje procesní server na základě svého interního času. Interní čas je synchronizován s časem databáze (systémovým časem PC, na kterém databázový server běží). Pokud je v okamžiku generování nového alarmu interní čas větší než aktuální klíčový, který byl přidělen předchozímu alarmu (normální situace), použije se jako nový klíčový čas přímo interní. Pokud jsou oba časy stejné (je generováno více alarmů těsně za sebou) nebo je dokonce interní čas menší než aktuální klíčový (interní čas byl pravděpodobně posunut dozadu), použije se aktuální klíčový čas zvětšený o 1 milisekundu. Při startu procesního serveru se klíčový čas posledního alarmu načte z tabulky alarmů.

Postup při generaci alarmu

  • Alarm se generuje při příchodu nového vzorku na některé datové úrovni, pokud je na této úrovni generace alarmů povolena a nový vzorek nebyl z nějakého důvodu ze zpracování vyloučen.
  • Porovnáním stavu nového vzorku se stavem vzorku předchozího se zjistí výsledný alarmový typ (viz tabulka č. 3).
  • Pokud je zjištěný typ "přechod mezi provozními stavy" a stavy hodnot obou vzorků se vzájemně liší, hledá se ještě některý z uživatelských typů. Stavy hodnot obou vzorků se postupně porovnávají s definicí u jednotlivých uživatelských typů, a pokud je porovnání úspěšné, změní se výsledný typ na porovnávaný uživatelský.
  • Alarm se vygeneruje, pokud je výsledný typ platný (neplatný typ dávají kombinace stavů vzorků, které nepředstavují žádnou významnou změnu) a pokud je generace tohoto typu alarmu pro danou proměnnou a datovou úroveň povolena.
  • Generace alarmu je ve statusu nového vzorku zaznamenána nasazením speciálního bitu.
  • Vygeneruje se klíčový čas.
  • Zjistí se, zda má být daný alarm potvrzen automaticky systémem.
  • Všechny parametry alarmu včetně případného příznaku automatického potvrzení se uloží do alarmového bufferu příslušejícímu svázané proměnné.

Postup při ukládání alarmů do databáze

  • Archivní subsystém procesního serveru perediodicky (standardně po 3 s) kontroluje alarmové buffery u všech proměnných.
  • Pokud není buffer prázdný, uloží se parametry jednotlivých alarmů do streamu a alarmový buffer se vyprázdní.
  • Naplněný stream se předá do databáze k uložení. Pokud má být alarm potvrzen systémem, nastaví se před uložením identifikátoru potvrzujícího uživatele na 0 a do času potvrzení se přepíše klíčový čas (bez milisekund). Jinak zůstanou obě položky nedefinované.

Princip kruhové tabulky alarmů a permanentní archivace starých alarmů

Alarmová tabulka je kruhová. Každý nově vygenerovaný alarm se vždy uloží na její konec (má nejnovější klíčový čas), zatímco nejstarší alarmy ze začátku tabulky postupně vypadávají. Alarmová tabulka tak v každém okamžiku obsahuje potřebné množství posledních alarmů pro vyhodnocování i následné prohlížení v grafickém prohlížeči. Aby se zaznamenané alarmy z databáze neztrácely, přepisují se před vymazáním z kruhové tabulky do tabulek archivních. Jedna archivní tabulka alarmů je určena pro všechny alarmy vygenerované v jednom měsíci.

Po každém uložení alarmů do kruhové tabulky se testuje, zda není potřeba staré alarmy archivovat následujícím způsobem:

  • Zjistí se aktuální počet alarmových záznamů v kruhové tabulce a pokud je vyšší než její nastavená maximální délka + minimální počet najednou archivovaných alarmů, bude se archivovat.
  • Rozdíl
  • Zjistí se klíčový čas nejstaršího alarmu v tabulce, podle kterého se určí název archivní tabulky, kam se budou alarmy archivovat (název obsahuje rok a měsíc).
  • Vezmou se

Pokud počet alarmových záznamů v tabulce překročí maximální počet, přesunou se nejstarší přebytečné alarmy do sekundárního alarmového archivu.

Postup při určování neaktuálních alarmů v seznamu alarmů k potvrzení

  • Pokud se k nějakému alarmu v seznamu najde další alarm se stejnou svázanou proměnnou a stejnou datovou úrovní, ale s vyšším klíčovým časem, považuje se ten starší za neaktuální.
  • Nejnovější z těchto alarmů bude považován za neaktuální tehdy, pokud je poslední vzorek svázané proměnné na dané datové úrovni novější než ten, který alarm vyvolal, a navíc se oba vzorky liší svým stavem.