Š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   0x0200

Implementá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 0x8000

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.

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:

0 komentárov

Nie ste prihlásený. Akékoľvek zmeny, ktoré vykonáte, sa označia ako anonymné. Ak už máte svoj účet, pravdepodobne sa budete chcieť prihlásiť .