⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iec103_sf.h

📁 四方公司103规约
💻 H
📖 第 1 页 / 共 2 页
字号:


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