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

📄 101secapp.h

📁 详细介绍了arm7-at91r40008,的开发全过程
💻 H
字号:
/*------------------------------------------------------------------*/
/*模块名称:101-97secapp.h											*/
/*模块功能:DL/T 634-1997 101从站方规约								*/
/*编写日期:2005年3月                                         		*/
/*编写者:  dingding												*/
/*------------------------------------------------------------------*/


#ifndef DF101SECAPP_H
#define DF101SECAPP_H



/*------------------------------------------------------------------*/
/*----------------------------常量定义------------------------------*/
/*------------------------------------------------------------------*/
//一级数据标志
#define	HaveCOS			0x0001
#define CallReadData	0x0002

//二级数据
#define HaveSOE			0x0001
#define HaveFA			0x0002
#define HaveNVA			0x0004


//应用层后续处理标志
#define FNextYK			0x0001
#define FNextALLDATA	0x0002
#define FNextCounter	0x0004

//设备管理
#define ACTDEVINDEX		0x01
#define	NVAACTDEV		0x02


/*------------------------------------------------------------------*/
/*----------------------------结构定义------------------------------*/
/*------------------------------------------------------------------*/
struct PGroupTrn{		//组处理结构
	INT16U	DevID;
  	INT8U 	TypeID;
  	INT8U 	COT;
  	INT8U 	GroupNo;
  	INT16U	InfoAddr;
};

__packed struct MENA{	//遥测结构
	INT16U	InfoAddr;
	INT16U	Value;
	INT8U	QDS;
};


__packed struct Counter{		//电度数据信息体结构
	INT16U	InfoAddr;
	INT32U	Value;
	INT8U	SQ;
};
	

struct AppInfo{		//应用层数据结构

	INT8U	Tmpbuf[512];	//临时使用缓冲区
 	
 	struct PASDU	*RxMsg;	//应用层接收数据指针 	
 	struct PASDU	TxMsg;	//应用层输出数据区
 	INT16U	TxLen;			//应用层发送长度
	
 	INT16U	AppCommand;		//应用层命令

 	INT16U	Data1Flag;		//一级数据标志
 	INT16U	Data2Flag;		//二级数据标志

 	INT16U	AppNextFlag;	//应用层后续处理标志
 	
 	INT16U	ActDevIndex;	//当前设备号
 	INT16U	NvaActDev;		//发送变化遥测的当前设备序号
 	INT16U	NvaActDevCur;	//当前设备当前已发送序号
 	INT16U	LastDevIndex;	//记录最近一次发送变位YX,SOE,FA,的设备序号
 	INT16U	LastDevType;
 	INT16U	LastDevNum;
 	
 	//全数据或电度处理
 	BOOL	AllDataFlag;	//过程标志
 	INT8U	AllDataNum;
 	struct PGroupTrn GroupTrn;
 	
 	//动态开辟数据存储区
	INT16U	*YCValue;	//遥测值
	INT16U	*YCDVal;	//遥测死区值
	INT32U	*DDValue;	//电度值

	//定时器
	INT16U	Data2Count; 	

	//参数输入
	INT16U	BaseControl;
	INT16U	Control;
	INT16U	ScanData2;		//二级数据扫描间隔(100ms)
	INT16U	MaxYCNum;		//MaxALLen
	INT8U	YXTypeID;
	INT8U	YCTypeID;
	INT16U	PubAddrBase;

};

/*------------------------------------------------------------------*/
/*----------------------------函数声明------------------------------*/
/*------------------------------------------------------------------*/
void P101_97SecTask(struct SysPort *Info, struct PortAppInfo* PortCfg);
BOOL InitSecApp(INT8U Port, struct PortAppInfo* PortCfg);
void InitReset(INT8U Port);
void SecAppProc(INT8U Port, INT16U DLCmd, INT8U* pBuf, INT16U Len);
void SecAppProcNext(INT8U Port);
void AppOnTimer(INT8U Port);

void ProcAllDataCall(INT8U Port);
void ProcCounterCall(INT8U Port);
void ProcClock(INT8U Port, BOOL Conf);
void ProcControl(INT8U Port);
void ProcData1(INT8U Port);
void ProcData2(INT8U Port);
void ProcDDCall(INT8U Port);
void ProcParaSet(INT8U Port);
void ProcReadData(INT8U Port);
void ProcReset(INT8U Port);
void ProcSetNVA(INT8U Port);
void ProcTest(INT8U Port);
void ProcTimeDelay(INT8U Port);
void ProcAppErr(INT8U Port);

void EnCodeClock(INT8U Port);
void EnCodeControl(INT8U Port, struct DBBOOPInfo* Info);
void EnCodeAllData(INT8U Port);
void EnCodeCounter(INT8U Port);
void EnCodeAllDataConf(INT8U Port);
void EnCodeAllDataEnd(INT8U Port, INT8U	Cmd);
void EnCodeCOS(INT8U Port);
void EnCodeReadData(INT8U Port);
void EnCodeSOE(INT8U Port);
void EnCodeFA(INT8U Port);
void EnCodeNVA(INT8U Port);

BOOL CheckNVA(INT8U Port);

BOOL GetActDevIndexByAddr(INT8U Port, INT16U Addr);
BOOL GetNextActDevIndex(INT8U Port, INT16U ActDev, INT8U Flag);
void GetYcDeadValue(INT8U Port, INT16U Num, INT32U DValue);
INT16U GetActDevNo(INT8U Port, INT16U DevID, INT16U Flag);
INT16U GetAddrByDevIndex(INT8U Port, INT16U DevID);






#endif



⌨️ 快捷键说明

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