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

📄 104sa.h

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

#ifndef DF104SA_H
#define DF104SA_H



/*------------------------------------------------------------------*/
/*-------------------------基本内容定义-----------------------------*/
/*------------------------------------------------------------------*/
//应用层后续处理标志
#define FNextYK			0x0001
#define FNextALLDATA	0x0002
#define FNextCounter	0x0004

//数据标志
#define	HaveCOS			0x0100
#define CallReadData	0x0200
#define HaveSOE			0x0400
#define HaveFA			0x0800
#define HaveNVA			0x1000

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

/*------------------------------------------------------------------*/
/*-------------------------基本结构定义-----------------------------*/
/*------------------------------------------------------------------*/
struct SendData{
	INT16U	DevID;
	INT8U	Type;
	INT8U	Num;
};

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

__packed struct InfoAddr{
	#ifdef	INFOADDR3BYTE
		INT16U	InfoAddr;
		INT8U	InfoAddrHigh;
	#else
		INT16U	InfoAddr;
	#endif
};

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


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

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

	struct SendData SData[K];
	INT8U	CurSData;
	
	BOOL	Connect;

	INT16U	Data2Count;
	INT16U	AppNextFlag;	//应用层后续处理标志
	INT16U	LinkCmd;
	
	INT16U	ActDevIndex;	//当前设备号
	INT16U	NvaActDev;		//发送变化遥测的当前设备序号
	INT16U	NvaActDevCur;	//当前设备当前已发送序号
	
	//全数据或电度处理
	BOOL	AllDataFlag;	//过程标志
	INT8U	AllDataNum;
	struct PGroupTrn GroupTrn;

	//动态开辟数据存储区
	INT16U	*YCValue;	//遥测值
	INT16U	*YCDVal;	//遥测死区值
	INT32U	*DDValue;	//电度值

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

};


/*------------------------------------------------------------------*/
/*----------------------------函数声明------------------------------*/
/*------------------------------------------------------------------*/

void S104_2000Task(struct SysPort *Info, struct PortAppInfo* PortCfg);
BOOL S104InitApp(INT8U Port, struct PortAppInfo* PortCfg);
void S104InitReset(INT8U Port);
void S104AppOnTimer(INT8U Port);
void S104AppProc(INT8U Port, struct AppMsg* Msg);
void S104AppProcNext(INT8U Port);

void S104ProcAllDataCall(INT8U Port);
void S104ProcCounterCall(INT8U Port);
void S104ProcClock(INT8U Port);
void S104ProcControl(INT8U Port);
void S104ProcDDCall(INT8U Port);
void S104ProcParaSet(INT8U Port);
void S104ProcDB(INT8U Port, INT8U Num);
void S104ProcReadData(INT8U Port);
void S104ProcReset(INT8U Port);
void S104ProcSetNVA(INT8U Port);
void S104ProcTest(INT8U Port);
void S104ProcTimeDelay(INT8U Port);
void S104ProcAppErr(INT8U Port);

void S104EnCodeClock(INT8U Port);
void S104EnCodeControl(INT8U Port, struct DBBOOPInfo* Info);
void S104EnCodeAllData(INT8U Port);
void S104EnCodeCounter(INT8U Port);
void S104EnCodeAllDataConf(INT8U Port);
void S104EnCodeAllDataEnd(INT8U Port, INT8U	Cmd);
void S104EnCodeCOS(INT8U Port);
void S104EnCodeReadData(INT8U Port);
void S104EnCodeSOE(INT8U Port);
void S104EnCodeFA(INT8U Port);
void S104EnCodeNVA(INT8U Port);

BOOL S104CheckNVA(INT8U Port);
INT16U S104CheckDB(INT8U Port, INT8U Type);

BOOL S104GetActDevIndexByAddr(INT8U Port, INT16U Addr);
BOOL S104GetNextActDevIndex(INT8U Port, INT16U ActDev, INT8U Flag);
void S104GetYcDeadValue(INT8U Port, INT16U Num, INT32U DValue);
INT16U S104GetActDevNo(INT8U Port, INT16U DevID, INT16U Flag);
INT16U S104GetAddrByDevIndex(INT8U Port, INT16U DevID);

#endif

⌨️ 快捷键说明

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