Porovnávané verzie
Kľúč
- Tento riadok sa pridal
- Riadok je odstránený.
- Formátovanie sa zmenilo.
Akcia CALCARCHEXPR
Blok kódu | ||||
---|---|---|---|---|
| ||||
CALCARCHEXPR archExprIdent_Txt, btIdent_TimA, etIdent_TimA, stepIdent_Int, _ignoreInvalid_Bool, _locVarColValueIdent_Rec, statusIdent_Int[, archivInstance_Int] |
archExprIdent_Txt | in | Identifikátor hodnoty typu text, ktorý obsahuje výraz. |
btIdent_TimA | in | Identifikátor typu AbsTime - začiatok intervalu. |
etIdent_TimA | in | Identifikátor typu AbsTime - koniec intervalu. |
stepIdent_Int | in | Identifikátor typu Int - časový krok [s]. |
_ignoreInvalid_Bool | in | Identifikátor typu Bool - Neplatné hodnoty vo výraze budú nahradené 0. |
_locVarColValueIdent_Rec | out | odkaz na stĺpec lokálnej premennej typu RECORD - výsledné hodnoty. |
statusIdent_Int | out | Identifikátor typu Int - úspešnosť výpočtu. |
Akcia vykoná výpočet daného archívneho výrazu nad zaarchivovanými hodnotami, ktoré sú vyjadrené prostredníctvom mien archívnych objektov vo výraze.
Výpočet sa riadi rovnakými pravidlami ako výpočet, ktorý je popísaný pri definícii vypočítaného archívneho objektu.
V prípade použitia štruktúrovaného archívu vo výraze nesmie byť použité nulové [0] číslo riadku.
Výpočet prebieha nad zadaným časovým intervalom <btIdent_TimA, etIdent_TimA>.
Ak parameter stepIdent_Int je
- rovný 0 - ide o výpočet na zmenu => každá zmena niektorého zo zdrojových (zaarchivovaných) údajov spôsobí prepočet zadaného výrazu a tým aj prítomnosť príslušnej hodnoty vo výsledku.
- rôzny od 0 - ide o periodický výpočet => zadaný výraz sa vyhodnocuje v časových okamihoch btIdent_TimA, btIdent_TimA+1*stepIdent_Int, btIdent_TimA+2*stepIdent_Int ....
Výsledné pole hodnôt bude zapísané do zadaného stĺpca lokálnej štruktúrovanej premennej _locVarColValueIdent_Rec (táto bude v prípade potreby redimenzovaná).
1. Výraz musí obsahovať meno aspoň jednej archivovanej hodnoty.
2. Ak je vo výraze viacero archivovaných hodnôt, všetky musia mať rovnakého rodiča v zmysle DODM.
Blok kódu | ||||
---|---|---|---|---|
| ||||
TIME _bt, _et INT _step INT _retCode TEXT _expr TEXT _err BOOL _bIgnoreInvalid RECORD NOALIAS (SD.Data) _data _bt := %StrToTime("00:00:00 01-01-2008") _et := %StrToTime("00:00:00 02-01-2008") _step := 1 _bIgnoreInvalid := @TRUE _expr := "H.a + H.GetArchRowCol_Ref[2]^I2 + H.GetArchRowCol_Ref_Col_I1[2]" CALCARCHEXPR _expr, _bt, _et, _step, _bIgnoreInvalid, _data^Value, _retCode IF _retCode = _ERR_NO_ERROR THEN ; spracovanie vysledku ELSE _err := _ERR_MSG ; rozsireny popis chyby ENDIF |
Vzhľadom na to, že parsovanie výrazu prebieha počas behu systému (nie počas konfigurácie), ak dôjde k chybe, je možné získať jej rozšírený popis ako hodnotu preddefinovanej lokálnej premennej typu Text _ERR_MSG.
Info | ||
---|---|---|
| ||