📄 data_template.h
字号:
#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 + -