KomUniVal
Štruktúra KomUniVal
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:
uvStatus
Môže nadobúdať kombináciu nasledovných hodnôt:
#define SB_Val_Valid 0x0001
#define SB_Pa_Alarm 0x0002
#define SB_Pa_NoAck 0x0004
#define SB_Pa_Blocked 0x0008
#define SB_Val_Weak 0x0010
#define SB_Val_NoAck 0x0020
#define SB_Val_Transient 0x0040
#define SB_Val_Default 0x0080
#define SB_Val_Manual 0x0100
#define SB_Pa_Critical 0x0200Implementácia komunikačného protokolu môže pre objekty typu Meraný bod meniť iba hodnoty:
SB_Val_Valid – označuje platnosť hodnoty meraného bodu
SB_Val_Weak – hodnota meraného bodu je nedôveryhodná (weak)
Ostatné hodnoty sú menené interne komunikačným procesom.
uvLimitStatus
typedef enum {LS_InLimit, LS_VL_Limit, LS_L_Limit, LS_H_Limit, LS_VH_Limit, LS_LimitsProblem} TLimitStatus;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)
uvProcAlarmStatus
Príznaky procesných alarmov. Implementácia protokolu tento parameter nesmie meniť.
uvValType
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
Táto hodnota sa nesmie meniť!
uvFlags
#define VF_A 0x0001
#define VF_B 0x0002
#define VF_C 0x0004
#define VF_D 0x0008
#define VF_E 0x0010
#define VF_F 0x0020
#define VF_G 0x0040
#define VF_H 0x0080
#define VF_I 0x0100
#define VF_J 0x0200
#define VF_K 0x0400
#define VF_L 0x0800
#define VF_M 0x1000
#define VF_N 0x2000
#define VF_O 0x4000
#define VF_P 0x8000Implementá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.
uvValTime
Reálny čas aktuálnej hodnoty.
uvProcAlarmlTime
Reálny čas poslednej zmeny príznaku procesných alarmov. Nemeniť.
uvBoval
Aktuálna hodnota dvojstavového vstupu alebo výstupu Di a Do.
Hodnoty:
D_False - FALSE
D_True - TRUE
D_Oscillate - oscilácia hodnoty – nenastavovať, analyzuje a prípadne nastavuje proces D2000 KOM.
uvIntval
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í.
Poznámka: Hodnota zapisovaná OEM protokolom môže byť typu VT_Ci64/VT_Co64 (vždy) alebo typu VT_Ci/VT_Co (ak sa hodnota zmestí do 32bitov).
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).
Poznámka: Hodnota zapisovaná OEM protokolom môže byť typu VT_Ci64/VT_Co64 (vždy) alebo typu VT_Ci/VT_Co (ak sa hodnota zmestí do 32bitov).
uvRealval
Aktuálna hodnota reálneho vstupu alebo výstupu Ai a Ao.
uvStationval
typedef enum {ST_ON, ST_OFF, ST_COMERR, ST_HARDERR, ST_SIMUL, ST_WAIT} TStVal;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.
uvTmRval
Aktuálna hodnota relatívnych časových typov bodov TiR a ToR.
uvQval
Aktuálna hodnota štvorstavových typov bodov Qi.
typedef enum {Q_Trans, Q_Off, Q_On, Q_Err, Q_Oscillate} TQVal;Možné hodnoty sú Q_Trans, Q_Off, Q_On, Q_Err alebo Q_Oscillate. Hodnotu Q_Oscillate nepoužívať, nastavuje ju proces D2000 KOM v prípade vyhodnocovania oscilácie.
uvTxtval
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.
Súvisiace stránky: