📄 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 + -