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

📄 104def.h

📁 详细介绍了arm7-at91r40008,的开发全过程
💻 H
字号:
/*------------------------------------------------------------------*/
/*模块名称:104Def.h              	                            	*/
/*模块功能:IEC870-5-104:2000从站									*/
/*编写日期:2005年6月                                         		*/
/*编写者:  dingding												*/
/*------------------------------------------------------------------*/


#ifndef P101DEF_H
#define P101DEF_H


/*------------------------------------------------------------------*/
/*-------------------------默认参数定义-----------------------------*/
/*------------------------------------------------------------------*/
//应用层特定参数
#undef COTByte
#undef PUBADDRBYTE
#define BROADCASTADDR	0xFFFF
#define INFOADDR3BYTE

//维护软件输入
#define ALLDATATIMER	30		//30分钟一次全数据
#define COUNTERTIMER	60		//60分钟一次电度量
#define CLOCKTIMER		5
#define LIMITTIMER		5

//t2<t1  t3>t1
#define T0              30
#define T1              15		//No Ack CloseTCP
#define T2              5		//Send S
#define T3              30		//Send Test U


/*------------------------------------------------------------------*/
/*-------------------------基本内容定义-----------------------------*/
/*------------------------------------------------------------------*/
#define NEXTFRAME 0x01


#define APDULEN		255
#define ASDULEN		249

#define	K			12
#define W			8


//类型标识
#define	M_SP_NA		1 	//不带时标的单点信息
#define	M_SP_TA		2 	//带时标的单点信息
#define	M_DP_NA		3 	//不带时标的双点信息
#define	M_DP_TA		4 	//带时标的双点信息
#define	M_ST_NA		5 	//步位置信息
#define	M_ST_TA		6 	//带时标的步位置信息
#define	M_BO_NA		7 	//子站远动终端状态
#define	M_ME_NA		9 	//测量值,规一化值
#define	M_ME_TA		10 	//带时标的测量值,规一化值
#define	M_ME_NB		11 	//测量值,标度化值——新标准中,我们目前应使用的类型。替代原来的M_ME_NA
#define	M_ME_TB		12 	//带时标的测量值,标度化值
#define	M_ME_NC		13 	//测量值,短浮点数
#define	M_ME_TC		14 	//带时标测量值,短浮点数
#define	M_IT_NA		15 	//电能脉冲记数量
#define	M_IT_TA		16 	//带时标的电能脉冲记数量
#define	M_EP_TA		17 	//带时标的继电保护或重合闸设备单个事件
#define	M_EP_TB		18 	//带时标的继电保护装置成组启动事件
#define	M_EP_TC		19 	//带时标的继电保护装置成组输出电路信息事件
#define	M_PS_NA		20 	//具有状态变位检出的成组单点信息
#define	M_ME_ND		21 	//不带品质描述的测量值,规一化值
#define M_SP_TB		30  //带长时标的单点信息
#define M_DP_TB		31  //带长时标的双点信息
#define M_ST_TB		32  //带长时标的步位置信息
#define M_BO_TB		33  //带长时标的32位位串
#define M_ME_TD		34  //带长时标的测量值
#define	M_EI_NA		70 	//初始化结束
#define	M_BD_NA		232 //BCD码值

#define C_SC_NA		45	//单点遥控命令
#define	C_DC_NA		46 	//双点遥控命令
#define	C_RC_NA		47 	//升降命令
#define	C_SE_NA		48 	//设定命令
#define	C_BO_NA		51 	//32位的位串

#define	C_IC_NA		100 	//召唤命令
#define	C_CI_NA		101 	//电能脉冲召唤命令
#define	C_RD_NA		102 	//读数据命令
#define	C_CS_NA		103 	//时钟同步命令
#define	C_TS_NA		104 	//测试命令
#define	C_RP_NA		105 	//复位进程命令
#define	C_CD_NA		106 	//延时获得命令

#define	P_ME_NA		110 	//装载参数命令,规一化值
#define	P_ME_NB		111 	//装载参数命令,标度化值
#define	P_ME_NC		112 	//装载参数命令,短浮点数
#define	P_AC_NA		113 	//激活参数

#define	F_FR_NA		120 	//文件已准备好
#define	F_SR_NA		121 	//节已准备好
#define	F_SC_NA		122 	//召唤目录﹑选择文件﹑召唤文件﹑召唤节
#define	F_LS_NA		123 	//最后的节﹑最后的段
#define	F_AF_NA		124 	//确认文件﹑确认节
#define	F_SG_NA		125 	//段
#define	F_DR_NA		126 	//目录
#define F_FY_NA		141   //文件传输

#define M_FA_TB		142   //故障处理结果信息

//传送原因:
#define	PERCYC		1 	//周期/循环
#define	BACK		2 	//背景扫描
#define	SPONT		3 	//突发
#define	INIT_101	4 	//初始化
#define	REQ		    5 	//请求或被请求
#define	ACT		    6 	//激活
#define	ACTCON		7 	//激活确认
#define	DEACT		8 	//停止激活
#define	DEACTCON	9 	//停止激活确认
#define	ACTTERM		10 	//激活结束
#define	RETREM		11 	//远程命令引起的返送信息
#define	RETLOC		12 	//当地命令引起的返送信息
#define	FILE_101	13 	//文件传送
#define	INTROGEN	20 	//响应总召唤
#define	INTRO1		21 	//响应第1组召唤
#define	INTRO2		22 	//响应第2组召唤
#define	INTRO3		23 	//响应第3组召唤
#define	INTRO4		24 	//响应第4组召唤
#define	INTRO5		25 	//响应第5组召唤
#define	INTRO6		26 	//响应第6组召唤
#define	INTRO7		27 	//响应第7组召唤
#define	INTRO8		28 	//响应第8组召唤
#define	INTRO9		29 	//响应第9组召唤
#define	INTRO10		30  //响应第10组召唤
#define	INTRO11		31 	//响应第11组召唤
#define	INTRO12		32 	//响应第12组召唤
#define	INTRO13		33 	//响应第13组召唤
#define	INTRO14		34 	//响应第14组召唤
#define	INTRO15		35 	//响应第15组召唤
#define	INTRO16		36  //响应第16组召唤
#define	REQCOGCN	37  //响应计数量总召唤
#define	REQCO1		38 	//响应第1组计数量召唤
#define	REQCO2		39 	//响应第2组计数量召唤
#define	REQCO3		40 	//响应第3组计数量召唤
#define	REQCO4		41 	//响应第4组计数量召唤
#define UNKNOWNTYPEID   44      //未知的类型标识
#define UNKNOWNCOT      45      //未知的传送原因
#define UNKNOWNPUBADDR	46      //未知的应用服务数据单元公共地址
#define UNKNOWNTINFOADDR	47      //未知的信息对象地址

//信息体地址
#define LBI       0x01
#define HBI       0x1000
#define LAI       0x4001
#define HAI       0x5000
#define LBO       0x6001
#define HBO       0x6200
#define LBCR      0x6401
#define HBCR      0x6600
#define LSPI      0x6601
#define HSPI      0x6700
#define LBCD      0x6701
#define HBCD      0x6800
#define RTUSTATUS 0x6801


//链路层接收状态
enum	DLRXDSTATUS
{
	RXDSTART=0,		//寻找起始标志状态
	RXDHEAD,		//寻找报文头
	RXDCONTINUE 	//接收后续报文
};


/*------------------------------------------------------------------*/
/*-------------------------通讯操作定义-----------------------------*/
/*------------------------------------------------------------------*/
//链路层始发站命令定义
#define	DLRESETRDL		0		//复位远方链路
#define DLRESETUSE		1		//复位用户过程
#define DLTESTDL		2		//测试链路功能
#define DLSENDCON		3		//发送确认命令
#define DLSENDNOCON		4		//发送不确认命令
#define DLREQACD		8		//请求响应确定访问状态
#define DLREQSTATUS		9		//召唤链路状态
#define DLREQDATA1		10		//召唤1级用户数据
#define DLREQDATA2		11		//召唤2级用户数据
#define MAINTSWITCH		12      //切换到维护规约

//链路层从动站命令定义
#define DLCON			0		//确认
#define	DLBUSYCON		1		//确认链路忙未接收报文
#define DLRESDATA		8		//以数据响应请求帧
#define DLNODATA		9		//无所召唤的数据
#define DLSTATUSOK		11		//响应链路状态或回答请求帧
#define DLNOWORK		14		//链路未工作
#define DLNOFIN			15		//链路未完成

//链路层到应用层的命令(WORD)DLCommand内容
#define DL_CALLDATA		1	//I数据针
#define	DL_APPCON		2	//S确认针
#define	DL_WORK			3
#define	DL_NOWORK		4



//应用层到链路层的命令(WORD)AppCommand
#define	APP_APPCON		0	//应用层对收到的数据做应答
#define APP_RESETUSE	1	//复位用户进程
#define APP_TESTDLINK	2	//测试链路
#define	APP_SENDCON		3	//发送03命令
#define	APP_SENDNOCON	4	//发送04命令
#define APP_NODATA		5	//应用层无数据,子站非平衡
#define	APP_SENDDATA	8	//发送08命令
#define APP_REQSTATUS	9	//询问链路状态
#define	APP_CALLDATA1	10	//请求一级数据
#define	APP_CALLDATA2	11	//请求二级数据
#define	APP_ALLDEVNOUSE	12	//应用层所有设备不可用
#define	APP_NOJOB		13	//应用层无任务//主站平衡模式有效
#define	APP_APPDIABALE	14	//应用层无效

#define	APP_HAVEDATA1	0x8000	//该位置1说明应用层有一级数据,否则为0;子站非平衡、平衡模式总召唤、对钟


#define	QRPRESET	1	//进程总复位
#define	QRPSOEIND	2	//复位事件缓冲区等待处理的带时标的信息
#define QRPCOLD		128	//冷复位



/*------------------------------------------------------------------*/
/*-------------------------基本结构定义-----------------------------*/
/*------------------------------------------------------------------*/
__packed struct PASDUHead
{
	INT8U	TypeID;
	INT8U	VSQ;
	
	#ifdef	COTByte
		INT8U	COT;
	#else
		INT16U	COT;
	#endif
	
	#ifdef	PUBADDRBYTE
		INT8U	PubAddr;
	#else
		INT16U	PubAddr;
	#endif
	
	#ifdef	INFOADDR3BYTE
		INT16U	InfoAddr;
		INT8U	InfoAddrHigh;
	#else
		INT16U	InfoAddr;
	#endif
}; 	

//其它结构定义
//控制域
#define P101_FUNCODE	0x0F
#define P101_FCV		0x10
#define P101_DFC		0x10
#define P101_FCB		0x20
#define P101_ACD		0x20
#define P101_PRM		0x40
#define P101_DIR		0x80

//可变结构限定词
#define P101_SQ			0x80
#define P101_VSQ		0x7F

//传送原因
#define P101_REASON		0x3F
#define P101_PN			0x40
#define P101_TEST		0x80

//信息元素
#define P101_BL			0x10	//是否被封锁
#define P101_SB			0x20	//是否被取代
#define P101_NT			0x40	//是否为当前值
#define P101_IV			0x80	//是否有效

#define SPI			0x01	//带品质描述的单点信息
#define DPI			0x03	//带品质描述的双点信息
#define VTI_VALUE	0x7F	//带瞬变状态指示的值
#define VTI_T		0x80
#define P101_OV		0x01	//品质描述
#define BCR_SQ		0x1F	//二进制计数器读数
#define BCR_CY		0x20
#define BCR_CA		0x40
#define BCR_IV		0x80 


//遥控命令限定词
#define DCO_DCS		0x03
#define DCO_QU		0x7C
#define DCO_SE		0x80



__packed struct PASDU
{
	struct PASDUHead Head;
	INT8U	Data[ASDULEN-sizeof(struct PASDUHead)];
};

__packed struct SOECP24Time{	//短时标SOE结构
	INT16U	No;
	INT8U	Status;
	INT16U	Msecond;	
	INT8U	Minute;
};

__packed struct SCDYX{	//SCD遥信结构
	INT16U	ST;
	INT16U	CD;
	INT8U	QDS;
};

struct AppMsg{
	INT16U	Cmd;
	INT16U	ConNum;
	INT8U*	pData;
	INT16U	Len;
};


/*------------------------------------------------------------------*/
/*-------------------------通讯操作定义-----------------------------*/
/*------------------------------------------------------------------*/
















#endif






⌨️ 快捷键说明

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