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

📄 iec103_xuji.h

📁 许继公司103规约源码
💻 H
📖 第 1 页 / 共 2 页
字号:


//DL/T667-1999(neq IEC60870-5-103:1997)规约头文件

#ifndef _IEC103_XUJI_H_
#define _IEC103_XUJI_H_

#include "..\..\Channel\ChPtl.h"
#include "IEC103AppData_XUJI.h"

namespace IEC103Ptl_XUJI{

// 规约链路层固定格式信息
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数据
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;
};

// 通用分类数据
struct ASDU_10_Item 
{
	GIN			gin;
	BYTE		kod;
	GDD			gdd;
	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;
};

// 总查询启动
struct ASDU_7_Fmt
{
	ASDU_Head	head;
	SCN			scn;
};

// 一般命令
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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -