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

📄 data_template.h

📁 104规约从站库源代码
💻 H
📖 第 1 页 / 共 4 页
字号:
#ifndef  _DATA_TEMPLATE_
#define _DATA_TEMPLATE_
//#include "afx.h"
#include "math.h"
#include "typedef.h"
#include "IEC104link.h"

#include <sys/timeb.h>
#include <time.h>
#define YKselectTIMEOUT 20000

struct EPTAdataStru
{
	_BYTE ES;
	_WORD relaytime;
};
struct EPTBdataStru
{
	_BYTE SPE;
	_WORD relaytime;
};
struct EPTCdataStru
{
	_BYTE OCI;
	_WORD relaytime;
};
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

typedef _BYTE	TP_SINGLE_POINT;

typedef _BYTE	TP_DOUBLE_POINT;

typedef _WORD	TP_DWPS_POINT;

typedef _DWORD  TP_BO_NA;

typedef _char   TP_BYST_POINT;

typedef _WORD	TP_ME_NA;

typedef _WORD	TP_ME_NB;

typedef _float	TP_ME_NC;

typedef TP_ME_NA	TP_ME_ND;

typedef _DWORD	TP_IT_NA;

typedef _WORD	TP_P_ME_NA;

typedef struct EPTAdataStru TP_EP_TA;

typedef struct EPTBdataStru TP_EP_TB;

typedef struct EPTCdataStru TP_EP_TC;
//#define SP_NA_TAG 1
//#define ME_NVA_TAG 9



#define FB_CYCLE 0x01
//#define FB_BACK 0x02
//#define FB_SPONT 0x04
//#define FB_REQCALL 0x08




typedef struct Timestru
{
	
	
	_WORD year;
	_WORD month;
	_WORD day;
	_WORD hour;
	_WORD minute;
	_WORD second;
	_WORD millinsecs;
	
} TIME_STRU;

typedef  struct asdu_attri_stru
{
	_DWORD	info_body_addr;	//Maybe infomation Address is not continuous,
							//When Full data is requested , a new frame is produced 
							//if continuousless info_body_addr happened
							//must be sequence
	_WORD	funcbit;//Bit0:period/cycle scan .  Only cycle bit has its function, others are useless.
					// Bit1:backgroud scan  ,Bit2:spont , Bit3: req_call ....

					//Generally,Period scan is about 10 ~20 econds e.g. temprature...
					//if some type variables that has Period scan function bit should NOT have Req_Full_call or background bits.
					//Back ground is about long period ,which prevents req_FULL_data from loss data,increases all data security.

	
	_BYTE   GroupNo;//1...16 group,    GroupNo is same or different
					//The same GroupNo info is encoded the same frame ,
					//different GroupNo will create anew frame.

					//	_BYTE	transfer_reason;
//	_BYTE	Type_tag_mode;//1:YK   2:Event  3:Req-call  4:PA  5:Cycle  6:Background
	
//	_BYTE QualityPosition;//0:Seperate             1: together with DataUnit  SP  DP.       2:no Quality

//	_BYTE TimeStruType;// 0: 3 bytes          1: 7 bytes
	_float coef;
} ASDU_ATTRI;






#define		M_SP_NA_1		1
#define		M_SP_TA_1		2
#define		M_DP_NA_1		3
#define		M_DP_TA_1		4
#define		M_ST_NA_1		5
#define		M_ST_TA_1		6

#define		M_PS_NA_1		20
#define		M_BO_NA_1		7
#define		M_BO_TA_1		8
#define		C_CD_NA_1		106
#define		C_SC_NA_1		45
#define		C_DC_NA_1		46
#define		C_RC_NA_1		47
#define		C_SE_NA_1		48
#define		C_SE_NB_1		49
#define		C_SE_NC_1		50
#define		C_SE_ND_1		136
#define		C_BO_NA_1		51
#define		C_CS_NA_1		103	
#define		C_IC_NA_1		100	
#define		C_CI_NA_1		101 //pulse account

#define		M_ME_NA_1		9
#define		M_ME_TA_1		10

#define		M_ME_NB_1		11
#define		M_ME_TB_1		12

#define		M_ME_NC_1		13
#define		M_ME_TC_1		14
#define		M_IT_NA_1		15
#define		M_IT_TA_1		16
#define		M_EP_TA_1		17
#define		M_EP_TB_1		18
#define		M_EP_TC_1		19

#define		M_ME_ND_1		21
#define		M_SP_TB_1		30
#define		M_DP_TB_1		31
#define		M_ST_TB_1		32
#define		M_BO_TB_1		33
#define		M_ME_TD_1		34
#define		M_ME_TE_1		35
#define		M_ME_TF_1		36


#define		M_IT_TB_1		37
#define		M_EP_TD_1		38
#define		M_EP_TE_1		39
#define		M_EP_TF_1		40
#define		M_EI_NA_1		70
#define		P_ME_NA_1		110
#define		P_ME_NB_1		111
#define		P_ME_NC_1		112

#define		C_TS_NA_1		104		
#define		C_RP_NA_1		105
#define		C_RD_NA_1		102


//12-10
#define		PRI_EndSubInit		1//top
#define		PRI_Confirm_Control	2//45-69

#define		PRI_SpecialPS		3
#define		PRI_SpontPS			4
#define		PRI_Confirm_CS		5
#define		PRI_Confirm_CD		6
#define		PRI_Confirm_RD		7
#define		PRI_Confirm_TS		8
#define		PRI_Confirm_RP		9

#define		PRI_Confirm_P		10
#define		PRI_Confirm_IC		11
#define		PRI_Confirm_CI		12
#define		PRI_Confirm_res		13
#define		PRI_YKterm			14
#define		PRI_Special			15
#define		PRI_Event			16
#define		PRI_ReqCall				17
#define		PRI_ReqPulseAccount		18
#define		PRI_Cycle				19
#define		PRI_Back				20//lowest

#define		COT_Spont			3
#define		COT_act				6
#define		COT_confirm			7
#define		COT_deact			8
#define		COT_deactconfirm	9
#define		COT_unknown_type	44
#define		COT_unknownCause	45
#define		COT_unknownCommonAddr	46
#define		COT_unknownObjAddr	47
#define		COT_Reqdata		5
#define		COT_term        10
#define		COT_Cycle		1
#define		COT_Back	2


#define TIME_CYCLE_SEC   20
//#define TIME_BACK_SEC    5*60
#define WDGCOUNTS 5
#define MAXRXBUF 256
#define MAXTXBUF 256

#define MAXASDU_SERVNUM 20

#define Data_SP_NA_COUNTS_MAX 1024
#define Data_SP_TA_COUNTS  1024

#define Data_ST_NA_COUNTS_MAX 1024
#define Data_ST_TA_COUNTS  100

#define Data_DP_NA_COUNTS_MAX  1024
#define Data_DP_TA_COUNTS  100

#define Data_PS_NA_COUNTS_MAX  1024
#define Data_BO_NA_COUNTS_MAX  1024
#define Data_BO_TA_COUNTS 100

#define Data_ME_ND_COUNTS_MAX  1024

#define Data_ME_NA_COUNTS_MAX  1024
#define Data_ME_TA_COUNTS  100

#define Data_ME_NB_COUNTS_MAX 1024
#define Data_ME_TB_COUNTS  100

#define Data_ME_NC_COUNTS_MAX 1024

#define Data_ME_TC_COUNTS 100

#define Data_EP_TA_COUNTS 100
#define Data_EP_TB_COUNTS 100
#define Data_EP_TC_COUNTS 100

#define Data_IT_NA_COUNTS_MAX  1024

#define Data_P_ME_NA_COUNTS_MAX  1024

#define Data_P_ME_NB_COUNTS_MAX  1024

#define Data_P_ME_NC_COUNTS_MAX  1024

#define MAX_TPLIST 32

#define Data_SP_TA_dispCOUNTS 50
#define Data_DP_TA_dispCOUNTS 50
#define Data_ST_TA_dispCOUNTS 50
#define Data_ME_TA_dispCOUNTS 50
#define Data_BO_TA_dispCOUNTS 50
#define Data_ME_TB_dispCOUNTS 50
#define Data_ME_TC_dispCOUNTS 50
#define Data_EP_TA_dispCOUNTS 50
#define Data_EP_TB_dispCOUNTS 50
#define Data_EP_TC_dispCOUNTS 50
#define MAX_TYPENO 256

class AFX_EXT_CLASS CDataASDU:public CIEC104ASDU
{
public:
	void InitInstance();
	bool has_been_registered;
	WORD limit_rtunum;
	WORD limit_days;
	char m_hardno[128];
	bool ReadRegisterKey();

	bool End_subinit_flag;
	_char textMessageRemark[256*4];
	_char textAsduUpRemark[256*4];
	_char textAsduDnRemark[256*4];
	void printErrAsduDnRemark(_BYTE Tag,_BYTE which,_BYTE COT=0,_WORD asduaddr=0,_DWORD infobodyaddr=0);
	void printAsduDnRemark(_BYTE Tag,_char *others=0,_BYTE COT=0,_WORD asduaddr=0,_DWORD infobodyaddr=0);
	void printAsduUpRemark(_BYTE Tag,_char *others=0,_BYTE COT=0,_WORD asduaddr=0,_BYTE infobodynum=0,_BYTE group=0);
	virtual void On_init_ASDU_process(){};
	virtual void OnAsduUpRemark(){};
	virtual void OnAsduDnRemark(){};
	virtual void OnMessageRemark(){};
	/////////////////////////////////////////////////
	virtual BYTE On_C_SC_select(WORD point ,BYTE status){return 0;};
	virtual void On_C_SC_operate(WORD point ,BYTE status){};
	virtual BYTE On_C_DC_select(WORD point ,BYTE status){return 0;};
	virtual void On_C_DC_operate(WORD point ,BYTE status){};
	virtual BYTE On_C_RC_select(WORD point ,BYTE status){return 0;};
	virtual void On_C_RC_operate(WORD point ,BYTE status){};
	virtual BYTE On_C_BO_select(WORD point ,DWORD status){return 0;};
	virtual void On_C_BO_operate(WORD point ,DWORD status){};
	virtual void On_C_SE_NA_operate(WORD point ,WORD status){};///////////////////////////////////////////////////////////////////////////////////////
	virtual void On_C_SE_NB_operate(WORD point ,WORD value){};///////////////////////////////////////////////////////////////////////////////////////
	virtual void On_C_SE_NC_operate(WORD point ,float value){};///////////////////////////////////////////////////////////////////////////////////////
	virtual void On_C_SE_ND_operate(WORD point ,WORD value){};///////////////////////////////////////////////////////////////////////////////////////
	
	HANDLE YK_thread;
	bool YK_threadflag;
	void YK_startthread(bool start );
	static void YK_threadfunc(void *PP);
	void	YK_func();
	void	SC_exfunc();
	void	DC_exfunc();
	void	RC_exfunc();
	void	BO_exfunc();
	void	SE_NA_exfunc();
	void	SE_NB_exfunc();
	void	SE_NC_exfunc();
	void	SE_ND_exfunc();

	/////////////////////////////////////////////////
	/////////////////////////////////////////////////
	_int TIME_BACK_SEC;
	_BYTE TimeBytetype[MAX_TYPENO];
	_WORD Data_SP_NA_COUNTS; //1024
	_WORD Data_ST_NA_COUNTS; //1024

	_WORD Data_DP_NA_COUNTS;
	_WORD Data_PS_NA_COUNTS;
	_WORD Data_BO_NA_COUNTS;


	_WORD Data_ME_NA_COUNTS;//  256
	_WORD Data_ME_NB_COUNTS;//  256
	_WORD Data_ME_NC_COUNTS;//  256
	_WORD Data_ME_ND_COUNTS;//  256


	_WORD Data_IT_NA_COUNTS; // 200
	_WORD Data_P_ME_NA_COUNTS;//  256
	_WORD Data_P_ME_NB_COUNTS;//  256
	_WORD Data_P_ME_NC_COUNTS;//  256


	 _WORD ADDR_YXLOW ;//1
	 _WORD ADDR_YXHIGH; //0x1000

	_WORD ADDR_STYXLOW ;//1
	 _WORD ADDR_STYXHIGH; //0x1000

	_WORD ADDR_BOYXLOW ;//1
	_WORD ADDR_BOYXHIGH; //0x1000

	_WORD ADDR_PSYXLOW ;//1
	_WORD ADDR_PSYXHIGH; //0x1000

	_WORD ADDR_DPYXLOW ;//1
	_WORD ADDR_DPYXHIGH; //0x1000

	 _WORD ADDR_YCLOW ;//0x4001
	 _WORD ADDR_YCHIGH; //0x4400

	 _WORD ADDR_NBYCLOW ;//0x4401
	 _WORD ADDR_NBYCHIGH; //0x4800

	 _WORD ADDR_NCYCLOW ;//0x4401
	 _WORD ADDR_NCYCHIGH; //0x4800

	 _WORD ADDR_NDYCLOW ;//0x4401
	 _WORD ADDR_NDYCHIGH; //0x4800

	 _WORD ADDR_PARALOW;// 0x5001
	 _WORD ADDR_PARAHIGH;// 0x6000

	 _WORD ADDR_PARANBLOW;// 0x5001
	 _WORD ADDR_PARANBHIGH;// 0x6000

	 _WORD ADDR_PARANCLOW;// 0x5001
	 _WORD ADDR_PARANCHIGH;// 0x6000


	 _WORD ADDR_YKLOW ;//0x6001
	 _WORD ADDR_YKHIGH;// 0x6200

	 _WORD ADDR_YKDCLOW ;//0x6001
	 _WORD ADDR_YKDCHIGH;// 0x6200

	 _WORD ADDR_YKRCLOW ;//0x6001
	 _WORD ADDR_YKRCHIGH;// 0x6200

	 _WORD ADDR_SENALOW ;//0x6001
	 _WORD ADDR_SENAHIGH;// 0x6200

	 _WORD ADDR_SENBLOW ;//0x6001
	 _WORD ADDR_SENBHIGH;// 0x6200

	 _WORD ADDR_SENCLOW ;//0x6001
	 _WORD ADDR_SENCHIGH;// 0x6200

	 _WORD ADDR_BONALOW ;//0x6001
	 _WORD ADDR_BONAHIGH;// 0x6200



	 _WORD ADDR_PULSELOW; //0x6401
	 _WORD ADDR_PULSEHIGH ;//0x6600
	 _WORD ADDR_EP_TALOW;
	 _WORD ADDR_EP_TAHIGH;
	 _WORD ADDR_EP_TBLOW;
	 _WORD ADDR_EP_TBHIGH;
	 _WORD ADDR_EP_TCLOW;
	 _WORD ADDR_EP_TCHIGH;

	///////////////////////////////////////////
		_BYTE Default_Group_SP_NA;
		_BYTE Default_Group_DP_NA;
		_BYTE Default_Group_ST_NA;
		_BYTE Default_Group_BO_NA;
		_BYTE Default_Group_PS_NA;
		_BYTE Default_Group_ME_NA;
		_BYTE Default_Group_ME_NB;
		_BYTE Default_Group_ME_NC;
		_BYTE Default_Group_ME_ND;
		_BYTE Default_Group_IT_NA;
		_BYTE Default_Group_P_ME_NA;
		_BYTE Default_Group_P_ME_NB;
		_BYTE Default_Group_P_ME_NC;
	 /////////////////////////////////////////
	CDataASDU();
	~CDataASDU();
	void ConstDef();
	void readDataTypedef();
	void readDefaultGroup();
	void readDataAddrdef();
	void readASDUconfig();
	void readASDUlistconfig();
	void readRTdataconfig(_BYTE Tag);
	void ClearAll();
	_int TransferCause_Size;// 1 or 2
	_int InfoBodyAddr_Size;// 1 2 or 3
	_int ASDU_Common_addr_size;// 1 or  2
	_WORD ASDU_Common_addr;
	
	_int Fill_TransferCause(_BYTE *buf,_BYTE cause,_BYTE source_addr=0);
	_int Fill_InfoBodyAddr(_BYTE *buf,_DWORD infoaddr);
	_int Fill_ASDU_Common_addr(_BYTE *buf,_WORD commonaddr);

	_int Get_TransferCause(_BYTE *buf,_BYTE *cause,_BYTE *source_addr);
	_int Get_InfoBodyAddr(_BYTE *buf,_DWORD *infoaddr);
	_int Get_ASDU_Common_addr(_BYTE *buf,_WORD *commonaddr);
	

	void Setlinkerbuffsize(_int length);
	void Set_Tran_Info_Common_size(_int TransferCauseSize,_int InfoBodyAddrSize,_int ASDU_Common_addrsize);

⌨️ 快捷键说明

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