...
Blok kódu | ||||
---|---|---|---|---|
| ||||
struct KomUniVal {
unsigned short uvStatus;
TLimitStatus uvLimitStatus;
unsigned int uvProcAlarmStatus;
TValueType uvValType;
unsigned short uvFlags;
D2Time uvValTime;
D2Time uvProcAlarmTime;
TBVal uvBoval;
int uvIntval;
double uvRealval;
TStVal uvStationval;
D2Time uvTmAval;
double uvTmRval;
TQVal uvQval;
int64_t uvIntval64;
char *uvTxtval;
}; |
Štruktúra KomUniVal prenáša hodnotu a stav objektu systému D2000 (meraný bod, stanica, linka). Jej jednotlivé položky majú nasledovný význam:
...
Parameter označuje limitný stav hodnoty meraného bodu. Implementácia protokolu nastavuje tento parameter iba v prípade hodnoty ST_SOURCE_LIMITS parametra Stat call-back funkcie PointNewValue.
Možné hodnoty sú:
- LS_InLimit - hodnota je v definovaných medziach
- LS_VL_Limit - hodnota klesla pod najnižšiu medzu (len pre body typu Ai, Ao, Ci, Co)
- LS_L_Limit - hodnota klesla pod dolnú medzu (len pre body typu Ai, Ao, Ci, Co)
- LS_H_Limit - hodnota prekročila hornú medzu (len pre body typu Ai, Ao, Ci, Co)
- LS_VH_Limit - hodnota prekročila najvyššiu medzu (len pre body typu Ai, Ao, Ci, Co)
- LS_LimitsProblem - problém s hodnotami medzí meraného bodu (prekríženie hodnôt alebo neplatnosť hodnoty dynamickej medze)
...
Blok kódu | ||||
---|---|---|---|---|
| ||||
typedef enum {VT_NAN, VT_Bo, VT_Int, VT_Re, VT_Di, VT_Do, VT_De, VT_Ai, VT_Ao, VT_Ae, VT_Ci, VT_Co, VT_Ce, VT_St, VT_Li, VT_Al, VT_Pr, VT_TmA, VT_TmR, VT_TiA, VT_ToA, VT_TiR, VT_ToR, VT_Txt, VT_Arr, VT_Qi, VT_Unused1, VT_TxtI, VT_TxtO, VT_Rec, VT_Ci64, VT_Co64} TValueType; |
Typ hodnoty objektu. Význam pre komunikáciu majú iba nasledovné typy, ktoré:
- VT_Ai - reálny vstup
- VT_Ao - reálny výstup
- VT_Ci - celočíselný vstup (ak sa hodnota zmestí do 32-bitového integeru)
- VT_Co - celočíselný výstup (ak sa hodnota zmestí do 32-bitového integeru)
- VT_Ci64 - celočíselný vstup (ak sa hodnota nezmestí do 32-bitového integeru)
- VT_Co64 - celočíselný výstup (ak sa hodnota nezmestí do 32-bitového integeru)
- VT_Di - dvojstavový vstup
- VT_Do - dvojstavový výstup
- VT_TiA - absolútny čas vstup
- VT_ToA - absolútny čas výstup
- VT_TiR - relatívny čas vstup
- VT_ToR - relatívny čas výstup
- VT_Qi - štvorstavový vstup
- VT_TxtI - textový vstup
- VT_TxtO - textový výstup
...
Implementácia môže ľubovoľne nastavovať kombinácie 16 užívateľských flagov ABCDEFGHIJKLMNOP hodnoty meraného bodu. Hodnoty flagov sú VF_A až VF_P.
...
Aktuálna hodnota celočíselného vstupu alebo výstupu Ci a Co. Hodnota je nastavená, ak uvValType je VT_Ci alebo VT_Co, tj. ak sa celočíselný vstup/výstup zmestí do 32-bitového integeru.
Poznámka: uvIntval bol použitý pre hodnoty celočíselného vstupu alebo výstupu Ci a Co v minulosti, keď boli tieto typy definované ako 32-bitový Integer. Po prechode na 64-bitový integer proces D2000 KOM z dôvodu kompatibility nastavuje uvValType na VT_Ci alebo VT_Co, ak sa hodnota zmestí do 32bitov, a ako VT_Ci64 alebo VT_Co64, keď sa nezmestí.
uvIntval64
Aktuálna hodnota celočíselného vstupu alebo výstupu Ci a Co. Hodnota je nastavená vždy pre merané body typu Ci a Co (bez ohľadu na to, či je uvValType je VT_Ci/VT_Co alebo VT_Ci64/VT_Co64).
Poznámka: toto správanie uľahčuje prácu s protokolmi podporujúcimi zápis 64-bitových integerov - zapisovaná hodnota je vždy v uvIntval64 (a ak sa zmestí do 32 bitov, je aj v uvIntval).
uvRealval
Aktuálna hodnota reálneho vstupu alebo výstupu Ai a Ao.
...
Stav stanice. Nikdy nemeňte hodnotu stavu stanice priamo, použite call-back procedúru SetStationStatus.
uvTmAval
Aktuálna hodnota absolútnych časových typov bodov TiA a ToA.
...
Pointer na string aktuálnej hodnoty textových typov bodov TxtI a TxtO.
Poznámka: Komunikačný proces si alokuje vlastné kópie hodnôt textových premenných po volaní call-back procedúry PointNewValue.
...