?? iec103appdata_xuji.h
字號:
//DL/T667-1999(neq IEC60870-5-103:1997)規約應用層頭文件
#ifndef _IEC103_APPDATA_XUJI_H_
#define _IEC103_APPDATA_XUJI_H_
namespace IEC103Ptl_XUJI{
// 應用層兼容范圍信息元素定義
// 實際通道(ACC)
enum ACC_Code
{
Global_acc = 0,
IL1_acc,
IL2_acc,
IL3_acc,
IN_acc,
UL1E_acc,
UL2E_acc,
UL3E_acc,
UEN_acc,
Num_acc,
};
typedef BYTE ACC;
// 兼容級別(COL)
enum COL_Code {
NoGen_col = 2,
Gen_col = 3,
};
typedef BYTE COL;
// 雙命令(DCO)
enum DCO {
Inv_dco0 = 0,
Off_dco,
On_dco,
Inv_dco1,
};
// 雙點信息(DPI)
enum DPI_Code {
Inv_dpi0 = 0,
Off_dpi,
On_dpi,
Inv_dpi1,
};
// 單點信息
enum SPI_Code {
Off_spi = 0,
On_spi,
};
typedef BYTE DPI;
typedef BYTE SPI;
typedef WORD FAN;// 故障序號
typedef WORD InfoNT; // 信息元素間隔
// 命令類型編碼(TOO_Code)
enum TOO_Code {
// 1-31: ASDU_24幀擾動數據傳輸命令
SelFault_too = 1,
ReqData_too = 2,
HangData_too = 3,
ReqAcc_too = 8,
HangAcc_too = 9,
ReqYxbw_too = 16,
HangYxbw_too = 17,
ReqTable_too = 24,
// 32-63: ASDU_31擾動數據傳輸結束
NmlEnd_too = 32,
MainEnd_too= 33,
SubEnd_too = 34,
NmlAcc_too = 35,
MainAcc_too = 36,
SubAcc_too = 37,
NmlYxbw_too = 38,
MainYxbw_too = 39,
SubYxbw_too = 40,
// 64-95: ASDU_25擾動數據傳輸認可
AfmTrn_too = 64,
NegTrn_too = 65,
AfmAcc_too = 66,
NegAcc_too = 67,
AfmYxbw_too = 68,
NegYxbw_too = 69,
};
typedef BYTE TOO;
// 擾動值類型(TOV)
enum TOV_Code {
Inv_tov = 0, // 未用
Inst_tov = 1,
};
typedef BYTE TOV;
// 通用分類數據描述(GDD)
enum GDD_Code {
none_gdd = 0, // 無數據
OS8_gdd, // ASCII8位碼
BS_gdd, // 成組8位串
UINT_gdd, // 無符合整數
INT_gdd, //
UFLOAT_gdd, // 無符合浮點數
FLOAT_gdd, //
R32_gdd, // 短實數
R64_gdd, // 長實數
DPI_gdd, // 雙點信息
SPI_gdd, // 單點信息
DPI_ERR_gdd, // 帶瞬變和差錯
MEA_gdd, // 品質描述被測量
res0_gdd,
TIME7_gdd, // 7位字節時間
GIN_gdd, // 通用分類標識序號
RET_gdd, // 相對時間
FUNINF_gdd, // 功能類型和信息序號
DPI48_gdd, // 帶時標的報文
DPI80_gdd, // 帶相對時間、時標
MEA96_gdd, // 帶相對時間、時標
UIi_gdd, // 外部文本序號
GRC_gdd, // 通用分類回答碼
STRUCT_gdd, // 數據結構{(GDD,GID)}
INDEX_gdd, // 索引
num_gdd, //
};
// 描述類別(KOD)
enum Kod_Code {
NoSpec_kod = 0, // 無指定描述類別
ActVal_kod, // 實際值
DefaultVal_kod, // 缺省值
RangeVal_kod, // 量程
res0_kod, //
Precision_kod, // 精度
Factor_kod, // 因子
Referenct_kod, // 參比
Enum_kod, // 列表
Dimension_kod, // 量綱
Desc_kod, // 描述
res1_kod, //
PassWord_kod, // 口令
RdOnly_kod, // 只讀
WrOnly_kod, // 只寫
res2_kod, //
res3_kod, //
res4_kod, //
res5_kod, //
FunInf_kod = 19,// 功能類型和信息序號
Event_kod, // 事件
TxtArr_kod, // 文本陣列
ValArr_kod, // 值陣列
RelEty_kod, // 相關聯的條目
num_kod, //
};
typedef BYTE KOD; // 描述類別
// 通用分類回答碼(GRC)
enum GRC_Code {
Afm_grc = 0, // 認可
InvGin_grc, // 無效通用分類標識序號GIN
NoData_grc, // 不存在所請求的數據
ReSend_grc, // 數據不能用,過后再來一次
ErrChg_grc, // 改變設定時確認出錯
InvChg_grc, // 改變設定時超出量程
RagOvr_grc, // 條目范圍太大
MoreOP_grc, // 太多的命令
RdOnly_grc, // 條目是只讀
Password_grc, // 設定受口令保護
Local_grc, // 當地設置在進行中
Err_grc, // 帶有上面所描述的錯誤
Num_grc,
};
typedef BYTE GRC;
// 帶品質描述詞的被測量(MEA)
struct MEA{
union {
WORD mval:13, // 帶符號規一化定點數,最高位符合位,數據位占12位
res:1, // 備用位:未用(常為0)
er:1, // 差錯位:0-有效,1-無效
ov:1; // 溢出位:0-無溢出,1-溢出
WORD wVal;
}mea;
};
// 故障狀態SOF
struct SOF{
BYTE res:4, // 未用
otev:1, // 0-由啟動/檢出故障觸發被記錄的擾動數據
// 1-由其他事件觸發被記錄的擾動數據
test:1, // 擾動數據記錄模式:0-正常操作記錄,1-測試模式記錄
tm:1, // 擾動數據傳輸:0-等待傳輸,1-正在傳輸
tp:1; // 故障跳閘:0-未跳,1-跳閘
};
typedef WORD NFE; // 第一信息元素序號
typedef BYTE NOC; // 通道數目
typedef BYTE NOE; // 通道中信息元素的數目
typedef WORD NOF; // 電網故障序號
typedef BYTE NOT; // 帶標志的狀態變位數目
typedef BYTE NDV; // 關聯擾動值得數目
typedef WORD RET; // 相對時間
typedef float RFA; // 參比因子
typedef float RPV; // 額定一次值
typedef float RSV; // 額定二次值
typedef BYTE RII; // 返回信息標識符
typedef float SCL; // 短路位置
typedef BYTE SCN; // 掃描序號
typedef short SDV; // 單個擾動值
typedef BYTE SIN; // 附加信息
// 4字節時間(TIME_4)
const BYTE TIME4_LEN (4);
struct TIME_4{
//WORD wMillisecond;
BYTE byLowMs;
BYTE byHighMs;
BYTE inv:1,
res1:1,
Minutes:6;
BYTE ST:1, // 夏時制
res2:2,
Hours:5;
};
// 7字節時間(TIME_7)
struct TIME_7 {
TIME_4 time;
BYTE week:3,
bay:5;
BYTE res3:3,
month:5;
BYTE res4:1,
year:7;
};
typedef WORD TAP; // 帶標志的狀態變位的位置
// 通用分類數據集數目(NGD)
struct NGD{
BYTE cont:1, // 1-跟隨相同RII的數據單元,0-未跟隨
count:1,// 具有相同返回信息標識符RII的計數器位(初始化位1)
num:6; // 通用分類數據集數目
};
// 描述元素數目(NDE)
struct NDE{
BYTE cont:1, // 1-跟隨相同RII和GIN的數據單元,0-未跟隨
count:1,// 具有相同返回信息標識符RII的計數器位
num:6; // 通用分類描述數目
};
// 通用分類標識序號(GIN)
struct GIN{
BYTE group;
BYTE entry;
};
// 通用分類數據描述(GDD)
struct GDD {
BYTE byDataTyp;
BYTE byDataSize;
BYTE cont:1, // 0-未跟隨數據元素,1-跟隨數據具有相同的RII
num:7;
};
typedef BYTE NOG; // 通用分類標識數目
typedef BYTE* PGID; // 通用分類標識數據指針
// ==================================================
// 應用層專用范圍信息元素定義
// 帶品質描述單點信息(SIQ)
struct SIQ{
BYTE iv:1, // 0-有效, 1-無效
nt:1, // 0-非當前值, 1-當前值
sb:1, // 0-未取代, 1-取代
bl:1, // 0-未閉鎖, 1-閉鎖
res:3,
spi:1; // 0-OFF, 1-ON
};
// 帶品質描述的雙點信息(DIQ)
struct DIQ{
BYTE iv:1, // 0-有效, 1-無效
nt:1, // 0-非當前值, 1-當前值
sb:1, // 0-未取代, 1-取代
bl:1, // 0-未閉鎖, 1-閉鎖
res:2,
dpi:2; // 0-不確定,1-OFF, 2-ON, 3-不確定
};
// 二進制計數器讀數(CR)
const BYTE CR_LEN (5);
struct CR {
long lVal;
union {
BYTE IV:1, // 0-讀數有效; 1-無效
CA:1, // 0-上次讀數后,計數器未被調整; 1-被調整
CY:1, // 0-累加期內無溢出; 1-有溢出
SQ:5; // 順序號<0-31>
BYTE byVal;
}sq;
};
// 狀態和狀態變化檢出(SCD)
struct SCD {
WORD st; // 當前狀態
WORD cd; // 狀態變化檢出
};
// 設定命令限定詞(QOS)
struct QOC{
BYTE se:1, // 0-執行; 1-選擇
ql:7; // 0-缺省,其他-保留
};
typedef short SE; // 設定值
// 控制斷路器的雙命令(DCC)
struct DCC{
BYTE se:1, // 0-執行,1-撤銷
act:1, // 0-命令有效,1-撤銷
qu:4, // 0-被尋址的控制功能屬性,
// 1-短脈沖持續時間
// 2-長脈沖持續時間
// 3-持續輸出
// 4-不閉鎖重合閘的跳閘命令
// 其他-保留
dcs:2; // 0-Inv, 1-Off, 2-On, 3-Inv
};
// 升降命令(RCC)
struct RCC{
BYTE se:1, // 0-執行,1-撤銷
act:1, // 0-命令有效,1-撤銷
qu:4, // 0-被尋址的控制功能屬性,
// 1-短脈沖持續時間
// 2-長脈沖持續時間
// 3-持續輸出
rcc:2; // 0-不允許,1-降一步,2-升一步,3-急停
};
// 控制命令(CCC)
struct CCC{
BYTE se:1, // 0-執行,1-撤銷
act:1, // 0-命令有效,1-撤銷
qu:3, // 0-無額外定義, 其他-沒有定義
ccs:3; // 0-不允許,
// 1-同期設備的同期工作方式
// 2-同期設備的檢無壓工作方式
// 3-同期設備的不檢定同期工作方式
// 4-同期設備的合環(母線有電壓)工作方式
};
// 帶瞬變狀態指示的值(VTI)
struct VTI{
BYTE T:1, // 0-設備未在瞬變狀態,1-在瞬變狀態
val:7;
};
// 電能脈沖計數召喚命令限定詞(QCC)
struct QCC{
BYTE frz:2, // 0-無凍結或復位,
// 1-凍結不復位,
// 2-凍結且復位
// 3-復位
rqt:6; // 0-無電能脈沖計數量被請求,5-電能脈沖總請求
};
// 品質描述(QDS)
struct QDS{
BYTE iv:1, // 0-有效; 1-無效
nt:1, // 0-當前值; 1-非當前值
sb:1, // 0-未取代; 1-取代
bl:1, // 0-未閉鎖; 1-閉鎖
res:3,
ov:1; // 0-無溢出; 1-溢出
};
// 品質描述的被測值向量(VEC)
struct VEC{
MEA mr; // 向量實部
MEA mi; // 向量虛部
};
// 帶品質描述的被測諧波值(MEA_HR)
struct MEA_HR {
BYTE hrtm:4, // 諧波次數
sq:4; // 順序-此諧波值為對應幀內測量值的循序號,0對應第1個
MEA mh;
};
// 帶品質描述的被測諧波值向量(VEC_HR)
struct VEC_HR {
DWORD ovi:1,
mvali:11,// 諧波虛數值
ovr:1, // 0-mvalr無溢出,1-mvalr溢出
mvalr:11,// 諧波實數值
er:1, // 0-諧波有效,1-諧波無效
hrtm:4, // 諧波次數
sq:3; // 順序-此諧波值為對應幀內測量值的循序號,0對應第1個
};
// BCD
struct BCD{
DWORD iv:1,
nt:1,
sb:1,
bl:1,
res:4,
bcd:24;
};
// 精確定時時鐘
class CTickCnt
{
public:
// 構造、析構函數
CTickCnt()
{
m_dwTickCnt = 0;
m_dwWaitSpan = 1000; // 默認間隔1S
}
virtual ~CTickCnt() {}
// 操作
// 設置計時間隔
void SetWaitSpan(DWORD dwSpan) {m_dwWaitSpan = dwSpan;}
void Start(INT nCnt) // 計時開始
{
m_dwTickCnt = nCnt * 1000;
}
BOOL IsOverTime(INT nCnt) // 計時結束返回TRUE,否則返回FALSE
{
DWORD dwCurTickCnt = nCnt * 1000;
DWORD dwSpan = 0;
if (m_dwTickCnt <= dwCurTickCnt)
dwSpan = dwCurTickCnt - m_dwTickCnt;
else // 記時溢出
dwSpan = 0xffffffff - m_dwTickCnt + dwCurTickCnt;
return (dwSpan >= m_dwWaitSpan);
}
private:
DWORD m_dwTickCnt;
DWORD m_dwWaitSpan;
};
}//end namespace
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -