Štart inštancie eventu na základe zmeny hodnoty (alebo stavu) objektu
Konfigurácia pre štart inštancie eventu pri zmene hodnoty objektu spočíva v:
- definovaní objektu (trigger), ktorého zmeny hodnoty sledujeme,
- definovaní podmienky, ktorá popisuje stav hodnoty ktorá spôsobí štart eventu (platnosť / neplatnosť hodnoty, limitné stavy hodnoty, zmeny hodnoty, prítomnosť procesného alarmu, ...).
Ako trigger pre štart inštancie eventu je možné zadať:
- jednoduchú hodnotu (meno objektu napríklad Sec, položku štruktúry napríklad SV.Record[2]^Item),
- celú štruktúru (SV.Record), riadok štruktúry (SV.Record[2]), stĺpec štruktúry (SV.Record[0]^Item).
Prvá možnosť sleduje jednu hodnotu a v prípade potreby (splnená podmienka pre stav hodnoty) generuje požiadavku na štart eventu.
Druhá možnosť sleduje viacej hodnôt. Pre každú hodnotu (pri jej zmene) vykonáva test splnenia štartovacej podmienky na základe ktorého generuje požiadavky na spustenie inštancie eventu. V určitých situáciách je možné, že v sledovanej oblasti dôjde k viacerým zmenám súčasne. Ak je potrebné tieto zmeny postupne spracovať konfigurácia eventu musí mať zapnutú voľbu Zmenu viacerých hodnôt spracovať postupne. Ak táto voľba nie je zapnutá, zmena aj viacerých hodnôt generuje len jednu požiadavku na štart eventu, čo môže viesť k strate sledovaných zmien.
Vygenerovaná požiadavka obsahuje informácie o:
- predchádzajúcej hodnote sledovanej oblasti - hodnota sa prekopíruje po štarte inštancie eventu do lokálnej premennej _TRIGGER_VALUE_OLD, ktorá musí byť vhodne definovaná,
- novej hodnote sledovanej oblasti - hodnota sa prekopíruje po štarte inštancie eventu do lokálnej premennej _TRIGGER_VALUE, ktorá musí byť vhodne definovaná,
- polohe zmeny [riadok, stĺpec] - v prípade jednoduchých hodnôt (napríklad meno objektu Sec) je to vždy [0,0]. V prípade štruktúrovaných premenných je poloha zmeny relatívna k prvému riadku a prvému stĺpcu (napríklad pri zmene SV.Osoby[2]^Meno to bude [2,1]). Hodnoty sú po štarte inštancie eventu nakopírované do preddefinovaných lokálnych premenných [_TRIGGER_ROW, _TRIGGER_COL].
Ak je vygenerovaná požiadavka na štart inštancie eventu, proces D2000 Event Handler postupuje podľa voľby v konfigurácii eventu Vytvoriť frontu požiadaviek pre štart eventu:
- Ak nie je zvolená a nebeží žiadna inštancia bude požiadavka akceptovaná (štart inštancie eventu).
- Ak nie je zvolená a beží aspoň jedna inštancia eventu záleží na tom, či niektorý z bežiacich inštancií eventov vykonal akciu ENABLE, ktorá povoľuje beh viacerých inštancií daného eventu súčasne. Ak akcia ENABLE nebola použitá požiadavka na štart bude ignorovaná.
- Ak je zvolená a nebeží žiadna inštancia bude požiadavka akceptovaná (štart inštancie eventu).
- Ak je zvolená a beží aspoň jedna inštancia eventu bude požiadavka zaradená do fronty požiadaviek. Požiadavka sa uplatní po skončení aktuálnej inštancie, alebo ak inštancia. vykoná akciu ENABLE. Priamy dôsledok uvedeného spracovania požiadaviek je ten, že ak event nepoužije akciu ENABLE bude vždy bežať len jedna inštancia eventu a budú spracované postupne v poradí vzniku všetky požiadavky na štart eventu. Počet aktuálnych požiadaviek na štart eventu môže inštancia zistiť volaním funkcie %GetTriggerQueueLen.
Nasledujúci obrázok schematicky znázorňuje popísaný postup.
Pridať komentár