www.pudn.com > src.rar > iec_103appdata.h, change:2013-12-05,size:9589b


//DL/T667-1999(neq IEC60870-5-103:1997)规约应用层头文件  
  
#ifndef _IEC103_APPDATA_H_  
#define _IEC103_APPDATA_H_  
 
#define ASDU6Fmt_LEN 13 
  
// 应用层兼容范围信息元素定义  
// 实际通道(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 unsigned char ACC;  
// 兼容级别(COL)  
enum COL_Code {  
	NoGen_col = 2,  
	Gen_col = 3,  
};  
typedef unsigned char 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 unsigned char DPI;  
typedef unsigned char SPI;  
typedef unsigned short FAN;// 故障序号  
typedef unsigned short 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 unsigned char TOO;  
// 扰动值类型(TOV)  
enum TOV_Code {  
	Inv_tov = 0,	// 未用  
	Inst_tov = 1,  
};  
typedef unsigned char 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 unsigned char 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 unsigned char GRC;	  
  
// 带品质描述词的被测量(MEA)  
struct MEA{  
	union {  
		unsigned short	mval:13,	// 带符号规一化定点数,最高位符合位,数据位占12位  
				res:1,		// 备用位:未用(常为0)  
				er:1,		// 差错位:0-有效,1-无效  
				ov:1;		// 溢出位:0-无溢出,1-溢出  
		unsigned short    wVal;  
	}mea;  
};  
// 故障状态SOF  
struct SOF{  
	unsigned char	res:4,		// 未用  
			otev:1,		// 0-由启动/检出故障触发被记录的扰动数据  
						// 1-由其他事件触发被记录的扰动数据  
			test:1,		// 扰动数据记录模式:0-正常操作记录,1-测试模式记录  
			tm:1,		// 扰动数据传输:0-等待传输,1-正在传输  
			tp:1;		// 故障跳闸:0-未跳,1-跳闸  
};  
typedef unsigned short NFE;		// 第一信息元素序号  
typedef unsigned char NOC;		// 通道数目  
typedef unsigned char NOE;		// 通道中信息元素的数目  
typedef unsigned short NOF;		// 电网故障序号  
typedef unsigned char NOT;		// 带标志的状态变位数目  
typedef unsigned char NDV;		// 关联扰动值得数目  
typedef unsigned short RET;		// 相对时间  
typedef float RFA;		// 参比因子  
typedef float RPV;		// 额定一次值  
typedef float RSV;		// 额定二次值  
typedef unsigned char RII;		// 返回信息标识符  
typedef float SCL;		// 短路位置  
typedef unsigned char SCN;		// 扫描序号  
typedef short SDV;		// 单个扰动值  
typedef unsigned char SIN;		// 附加信息  
// 4字节时间(TIME_4)  
struct TIME_4{  
	//unsigned short	wMillisecond;  
	unsigned char    byLowMs;  
	unsigned char    byHighMs;  
	unsigned char	inv:1,  
			res1:1,  
			Minutes:6;  
	unsigned char	ST:1,	// 夏时制  
			res2:2,  
			Hours:5;	  
};  
// 7字节时间(TIME_7)  
struct TIME_7 {  
	struct TIME_4	time;  
		  
	unsigned char	week:3,  
			bay:5;  
	unsigned char	res3:3,  
			month:5;  
	unsigned char	res4:1,  
			year:7;  
};  
typedef unsigned short TAP;		// 带标志的状态变位的位置  
// 通用分类数据集数目(NGD)  
struct NGD{  
	unsigned char	cont:1,	// 1-跟随相同RII的数据单元,0-未跟随  
			count:1,// 具有相同返回信息标识符RII的计数器位(初始化位1)  
			num:6;	// 通用分类数据集数目  
};  
// 描述元素数目(NDE)  
struct NDE{  
	unsigned char	cont:1,	// 1-跟随相同RII和GIN的数据单元,0-未跟随  
			count:1,// 具有相同返回信息标识符RII的计数器位  
			num:6;	// 通用分类描述数目  
};  
// 通用分类标识序号(GIN)				   
struct GIN{  
	unsigned char	group;  
	unsigned char	entry;  
};  
// 通用分类数据描述(GDD)  
struct GDD {  
	unsigned char	byDataTyp;  
	unsigned char	byDataSize;  
	unsigned char	cont:1,	// 0-未跟随数据元素,1-跟随数据具有相同的RII  
			num:7;  
};    
typedef unsigned char NOG;	// 通用分类标识数目	  
typedef unsigned char* PGID;	// 通用分类标识数据指针  
// ==================================================  
// 应用层专用范围信息元素定义  
// 带品质描述单点信息(SIQ)  
struct SIQ{  
	unsigned char	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{  
	unsigned char	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)  
struct CR {  
	long	lVal;  
	union {  
		unsigned char	IV:1,	// 0-读数有效; 1-无效	  
				CA:1,	// 0-上次读数后,计数器未被调整; 1-被调整  
				CY:1,	// 0-累加期内无溢出; 1-有溢出  
				SQ:5;	// 顺序号<0-31>  
		unsigned char    byVal;  
	}sq;  
};  
// 状态和状态变化检出(SCD)  
struct SCD {		   
	unsigned short	st;	// 当前状态  
	unsigned short	cd;	// 状态变化检出  
};  
// 设定命令限定词(QOS)  
struct QOC{  
	unsigned char	se:1,	// 0-执行; 1-选择  
			ql:7;	// 0-缺省,其他-保留  
};  
typedef short SE;	// 设定值  
// 控制断路器的双命令(DCC)  
struct DCC{  
	unsigned char	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{  
	unsigned char	se:1,	// 0-执行,1-撤销  
			act:1,	// 0-命令有效,1-撤销  
			qu:4,	// 0-被寻址的控制功能属性,  
					// 1-短脉冲持续时间  
					// 2-长脉冲持续时间  
					// 3-持续输出  
			rcc:2;	// 0-不允许,1-降一步,2-升一步,3-急停  
};  
// 控制命令(CCC)  
struct CCC{  
	unsigned char	se:1,	// 0-执行,1-撤销  
			act:1,	// 0-命令有效,1-撤销  
			qu:3,	// 0-无额外定义, 其他-没有定义  
			ccs:3;	// 0-不允许,  
					// 1-同期设备的同期工作方式  
					// 2-同期设备的检无压工作方式  
					// 3-同期设备的不检定同期工作方式  
					// 4-同期设备的合环(母线有电压)工作方式  
};  
// 带瞬变状态指示的值(VTI)  
struct VTI{  
	unsigned char	T:1,	// 0-设备未在瞬变状态,1-在瞬变状态	  
			val:7;  
};  
// 电能脉冲计数召唤命令限定词(QCC)  
struct QCC{  
	unsigned char	frz:2,	// 0-无冻结或复位,  
					// 1-冻结不复位,  
					// 2-冻结且复位  
					// 3-复位  
			rqt:6;	// 0-无电能脉冲计数量被请求,5-电能脉冲总请求  
};  
// 品质描述(QDS)  
struct QDS{  
	unsigned char	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{  
	struct MEA	mr;	// 向量实部  
	struct MEA mi;	// 向量虚部  
};   
// 带品质描述的被测谐波值(MEA_HR)  
struct MEA_HR {  
	unsigned char	hrtm:4, // 谐波次数  
			sq:4;	// 顺序-此谐波值为对应帧内测量值的循序号,0对应第1个  
	struct MEA		mh;  
};  
// 带品质描述的被测谐波值向量(VEC_HR)  
struct VEC_HR {  
	unsigned int	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{  
	unsigned int	iv:1,  
			nt:1,  
			sb:1,  
			bl:1,  
			res:4,  
			bcd:24;  
};  
  
#endif