?? iec103_sf.h
字號:
//DL/T667-1999(neq IEC60870-5-103:1997)規約頭文件
#ifndef _IEC103_SF_H_
#define _IEC103_SF_H_
#include "..\..\Channel\ChPtl.h"
#include "IEC103AppData_SF.h"
namespace IEC103Ptl_SF
{
// 規約鏈路層固定格式信息
const BYTE BROADCAST_ADD = 0xFF;
const BYTE INVALID_ADD = BROADCAST_ADD;
const int GENER_GROUPENTRY= 256; // 通用分類服務組和條目號最大值
//const int PTL_WATCH_LEN = 1800000; // 30s = 30*60*1000
//const int MAX_INIT_NUM = 25; // 單元通訊異常最大初始化次數
//const int LINK_SERIAL_ERROR = 2000;
// 鏈路層控制幀
struct LinkCtrl
{
union
{
BYTE lnkCtrl;
struct
{
BYTE res:1,
prm:1, // 0-監視方向、1-控制方向
fcbAcd:1, //
fcvDfc:1, //
funcode:4; // 功能碼
};
};
};
// 鏈路幀格式
struct LPDU_Fix_Fmt
{
BYTE head;
LinkCtrl ctrl;
BYTE addr;
BYTE sum;
BYTE tail;
};
struct LPDU_Vol_Head
{
BYTE head1;
BYTE len1;
BYTE len2;
BYTE head2;
LinkCtrl ctrl;
BYTE addr;
};
// 功能類型+信息序號
struct FunInf
{
BYTE fun;
BYTE inf;
};
// 可變結構限定詞
struct VSQ
{
union
{
BYTE vsq;
struct
{
BYTE sq:1,
num:7;
};
};
};
// 應用層數據幀
struct ASDU_Head
{
BYTE type;
VSQ vsq;
BYTE cot;
BYTE addr;
union
{
FunInf funInf;
struct
{
BYTE fun;
BYTE inf;
};
};
};
// ASDU_1_Fmt
struct ASDU_1_Fmt
{
ASDU_Head head;
DPI dpi;
TIME_4 tm;
SIN sin;
};
// ASDU_2_Fmt
struct ASDU_2_Fmt
{
ASDU_Head head;
DPI dpi;
DBYTES ret;
DBYTES fan;
TIME_4 tm;
SIN sin;
};
//GC數據
const BYTE ASDU21FMTLEN = 11;
struct ASDU_21_Fmt
{
ASDU_Head head;
BYTE rii;
NOG nog;
BYTE group;
BYTE entry;
KOD kod;
};
//GD數據幀
struct ASDU_10_Head
{
ASDU_Head head;
BYTE rii; //返回信息標識符
NGD ngd; //通用分類數據集數目
};
// 通用分類數據
const BYTE ASDU10ITEMLEN = 7;//
struct ASDU_10_Item
{
GIN gin; //通用分類標志序號 2字節
BYTE kod; //描述類別
GDD gdd; //通用分類數據描述 3字節
BYTE byVal; //數據內容
};
//GI數據幀
struct ASDU_11_Head
{
ASDU_Head head;
BYTE rii;
BYTE group;
BYTE entry;
NDE nde;
};
// 校時命令
const BYTE ASDU6Fmt_LEN (13);
struct ASDU_6_Fmt
{
ASDU_Head head;
TIME_7 dataTime;
};
// 總查詢啟動ASDU7
struct ASDU_7_Fmt
{
ASDU_Head head;
SCN scn;
};
//通用分類服務總查詢啟動ASDU21
struct ASDU_21_Qury
{
ASDU_Head head;
RII rii;
NOG nog;
};
// 一般命令
struct ASDU_20_Fmt
{
ASDU_Head head;
BYTE dco;
BYTE rii;
};
// 遙控命令
struct ASDU_64_Fmt
{
ASDU_Head head;
DCC dcc;
BYTE rii;
};
// 升降命令
struct ASDU_65_Fmt
{
ASDU_Head head;
RCC rcc;
BYTE rii;
};
// 同期遙控命令
struct ASDU_67_Fmt
{
ASDU_Head head;
CCC ccc;
BYTE rii;
};
// 電能脈沖計數量的召喚命令
struct ASDU_88_Fmt
{
ASDU_Head head;
QCC qcc;
BYTE rii;
};
// 通用分類命令響應幀數據頭
struct TaskRespHead
{
WORD bufLen;
WORD fmtNum;
};
// 通用分類組幀
struct ModifyProtSettingHead
{
WORD bufLen;
WORD fmtNum;
};
// 鏈路層幀控制域之功能碼
enum LinkCtrlCode
{
// 主->子
ResCU_code = 0,
SendCon_code = 3,
NoReply_code = 4,
ResFcb_code = 7,
QueryLink_code = 9,
CallClass1_code = 10,
CallClass2_code = 11,
// 子->主
AfmCon_code = 0,
BusyCon_code = 1,
RespData_code = 8,
RespNone_code = 9,
RespLink_code = 11,
SrvNoWrk_code = 14,
SrvNoFin_code = 15,
};
// 鏈路服務級別
enum LinkSvrCls
{
UndefSvrCls = 0, // 無效數據
SendNoreply = 1,
SendConfirm = 2,
RequestRespond = 3,
};
// 服務原語
struct CommPrim
{
BYTE byCode; // 功能碼
BYTE lnkAddr; // 鏈路層地址域
BYTE *pbyApp; // APDU數據指針
BYTE byLen; // APDU數據長度
};
// 應用層數據域類型標識
enum TypIdent
{
InvalidIdent = 0,
// 兼容范圍內的類型標識:監視方向
M_TM_TA_3 = 1,
M_TMR_TA_3 = 2,
M_MEI_NA_3 = 3,
M_TME_TA_3 = 4,
M_IRC_NA_3 = 5,
M_SYN_TA_3 = 6,
M_TGI_NA_3 = 8,
M_MEII_NA_3 = 9,
M_GD_NTA_3 = 10,
M_GI_NTA_3 = 11,
M_LRT_TA_3 = 23,
M_RTD_TA_3 = 26,
M_RTC_NA_3 = 27,
M_RTT_NA_3 = 28,
M_TDT_TA_3 = 29,
M_TDN_NA_3 = 30,
M_EOT_NA_3 = 31,
// 專用范圍內的類型標識:監視方向
M_MEIII_TA_3 = 32,
M_MEIV_TA_3 = 33,
M_MEV_TA_3 = 34,
M_MEVI_TA_3 = 35,
M_MEVII_NA_3 = 50,
M_IT_NA_3 = 36,
M_IT_TA_3 = 37,
M_ST_NA_3 = 38,
M_ST_TA_3 = 39,
M_SP_NA_3 = 40,
M_SP_TA_3 = 41,
M_DP_NA_3 = 42,
M_DP_TA_3 = 43,
M_SS_NA_3 = 44,
M_SS_TA_3 = 45,
M_DS_NA_3 = 46,
M_DS_TA_3 = 47,
M_WL_TA_3 = 48,
M_DC_NA_3 = 64,
M_RC_NA_3 = 65,
M_SE_NA_3 = 66,
M_CC_NA_3 = 67,
M_ASDU_70 = 70,
M_CI_NA_3 = 88,
// 兼容范圍內的類型標識:控制方向
C_SYN_TA_3 = 6,
C_IGI_NA_3 = 7,
C_GD_NA_3 = 10,
C_GRC_NA_3 = 20,
C_GC_NA_3 = 21,
C_ODT_NA_3 = 24,
C_ADT_NA_3 = 25,
//專用范圍內的類型標識:控制方向
C_DC_NA_3 = 64,
C_RC_NA_3 = 65,
C_SE_NA_3 = 66,
C_CC_NA_3 = 67,
C_CI_NA_3 = 88,
}; // end TypIdent
// 應用數據傳輸原因
enum COT_Code
{
// 監測方向
M_AUTO = 1,
M_CYCLE = 2,
M_RET_FCB = 3,
M_RET_CU = 4,
M_INIT = 5,
M_PWR = 6,
M_TEST_MODAL = 7,
M_SYN_TIM = 8,
M_CALL = 9,
M_CALL_END = 10,
M_LOCAL_OP = 11,
M_FAR_OP = 12,
M_AFM_ORD = 20,
M_NEG_ORD = 21,
M_TRN_FAU = 31,
M_AFM_GENWR = 40,
M_NEG_GENWR = 41,
M_AFM_GENRD = 42,
M_NEG_GENRD = 43,
M_AFM_GEN = 44,
// 控制方向
C_SYN_TIM = 8,
C_QUERY_STAR = 9,
C_NML_CMD = 20,
C_FAULT_TRN = 31,
C_GEN_WRITE = 40,
C_GEN_READ = 42,
C_FAR_OP = 12,
C_CYCLE = 2,
}; // COT_Code
typedef BYTE COT;
// 功能類型
enum FunType
{
// 兼容范圍
DisPrt_fun = 128,
CurPrt_fun = 160,
TraPrt_fun = 176,
LinPrt_fun = 192,
Gen_fun = 254,
Glb_fun = 255,
// 專用范圍
BU1_fun = 1,
BU2_fun = 2,
BU3_fun = 3,
BU4_fun = 4,
BU5_fun = 5,
BU6_fun = 6,
DisPrt1_fun = 130,
CurPrt1_fun = 133,
CurPrt2_fun = 136,
CurPrt3_fun = 139,
CurPrt4_fun = 142,
Traprt1_fun = 146,
LinPrt1_fun = 152,
LP1_fun = 178,
AP1_fun = 184,
TP1_fun = 194,
TP2_fun = 198,
BS1_fun = 210,
GR1_fun = 226,
GR2_fun = 230,
LP2_fun = 242,
AP2_fun = 248,
}; // end FunCode
// 通用分類服務 (功能碼+信息序號)
enum GenerFunInf
{
GEN_FUN = 254, // 通用分類服務功能碼
ReadTitle = 240, // 所有標題
ReadGroupAttrVal = 241, // 組屬性或值
ReadEntryDir = 243, // 條目目錄
ReadEntryAttrVal = 244, // 條目屬性或值
GenericQuery = 245, // 通用分類數據總查詢
WriteEntry = 248, // 寫條目
WriteEntryAfm = 249, // 寫條目確認
WriteEntryExec = 250, // 寫條目執行
WriteEntryCancel = 251, // 寫條目停止
};
//通用分類組號--類型
enum eGinGroupType//真正的組號并不一定等于枚舉類型值,組號可以通過維護軟件設置
{
eEmpty,
eIEDInf, //裝置描述
eIEDPara, //裝置參數
eDZGroup, //定值區號
eDZValue, //定值
eActElement,//動作元件
eIEDCheck, //裝置自檢
eRunWarning,//運行告警
eSoftYB, //軟壓板
eSolidYB, //硬壓板
eYX, //yx
eBHYC, //保護測量值
eYC, //遙測
eDD, //遙脈
eYK, //yk
eYT, //遙調
eDangWei, //檔位
eFaultInf, //故障信息
eDisorderData,//擾動數據
eOperInf, //操作信息
eFacInf, //制造商專用信息
eLineInf, //接地選線信息
eTryJump, //接地試跳
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -