www.pudn.com > Lib870-5Demo.rar > slave101.h


#ifndef _SLAVE_101_ 
#define _SLAVE_101_ 
#include "Data_template.h" 
class AFX_EXT_CLASS CSlave101:public CDataASDU 
{ 
	public: 
		CSlave101(); 
		~CSlave101(); 
		bool Init_SerialComm(char * comm,int baudrate=1200); 
		 
		void Init_LinkAddr_size(int size=1);		// 1 or  2 
		void Init_LinkAddr(WORD addr=1);			// 1 or  2 
		void Init_framesize(int size=246);			//设置帧长 size<=246 
		void Init_CauseOfTransfer_Size(int size=1);// 1 or 2 
		void Init_InfoBodyAddr_Size(int size=2);// 1 2 or 3 
		void Init_ASDU_Common_addr_size(int size=1);// 1 or  2 
		void Init_ASDU_Common_addr(WORD Common_addr=1); 
		void Init_Backgroundperiod(int seconds=300); 
		virtual void On_init_ASDU_process(){}; 
		virtual void On_init_Link_process(){}; 
		virtual void On_init_Serial_process(){}; 
		virtual void On_RecvMsg(_BYTE *msgbuf,_int len ){};//显示接收报文 
		virtual void On_SendMsg(_BYTE *msgbuf,_int len){};//显示发送报文 
 
 
		bool slave_start(); 
		void slave_close();// 
 
	 
		/*//////////////////////////////////////////////////////////////////////////////// 
		*  
		*				单点信息服务 
		* 
		* 
		////////////////////////////////////////////////////////////////////////////*/ 
		 
		void init_SP_create( 
							int data_counts=512,// data_counts <=1024 
							DWORD addr_low=0x0001, 
							DWORD addr_high=0x0200, 
							 
							BYTE timestamp=0//  0: 3bytes timestamp, 1: 7bytes timestamp 
							); 
		void init_SP_setgroup(int index,BYTE group=1); 
		void init_SP_enable(bool enable=1); 
		 
								//255:means invalidate, IV: 0有效/1无效   NT:0当前值/1非当前   SB:0未取代/1被取代  BL:0未被闭锁/1闭锁   OV:1溢出/ 0:不溢出 
		void slave_SP_SetQuality(int index,BYTE IV=255,BYTE NT=255,BYTE SB=255,BYTE BL=255); 
 
		void slave_SP_SetData(int index,//based on 0 
							BYTE value,SYSTEMTIME *timetag=NULL); 
		/*//////////////////////////////////////////////////////////////////////////////// 
		*  
		*				双点信息服务 
		* 
		* 
		////////////////////////////////////////////////////////////////////////////*/ 
		 
		void init_DP_create( 
							int data_counts=512,// data_counts <=1024 
							DWORD addr_low=0x0201, 
							DWORD addr_high=0x0400, 
						 
							BYTE timestamp=0//  0: 3bytes timestamp, 1: 7bytes timestamp 
							); 
		void init_DP_setgroup(int index,BYTE group=2); 
		void init_DP_enable(bool enable=1); 
		 
								//255:means invalidate   IV: 0有效/1无效   NT:0当前值/1非当前   SB:0未取代/1被取代  BL:0未被闭锁/1闭锁   OV:1溢出/ 0:不溢出 
		void slave_DP_SetQuality(int index,BYTE IV=255,BYTE NT=255,BYTE SB=255,BYTE BL=255); 
 
		void slave_DP_SetData(int index,//based on 0 
								BYTE value,SYSTEMTIME *timetag=NULL); 
	 
		/*//////////////////////////////////////////////////////////////////////////////// 
		*  
		*				步位置信息服务 
		* 
		* 
		////////////////////////////////////////////////////////////////////////////*/ 
		 
		void init_ST_create( 
							int data_counts=16,// data_counts <=1024 
							DWORD addr_low=0x6601, 
							DWORD addr_high=0x6700, 
							 
							BYTE timestamp=0//  0: 3bytes timestamp, 1: 7bytes timestamp 
							); 
		void init_ST_setgroup(int index,BYTE group=15); 
		void init_ST_enable(bool enable=1); 
		 
								//255:means invalidate   IV: 0有效/1无效   NT:0当前值/1非当前   SB:0未取代/1被取代  BL:0未被闭锁/1闭锁   OV:1溢出/ 0:不溢出 
		void slave_ST_SetQuality(int index,BYTE IV=255,BYTE NT=255,BYTE SB=255,BYTE BL=255,BYTE OV=255); 
 
		void slave_ST_SetData(int index,//based on 0 
								char value,SYSTEMTIME *timetag=NULL); 
		/*//////////////////////////////////////////////////////////////////////////////// 
		*  
		*				比特串信息服务 
		* 
		* 
		////////////////////////////////////////////////////////////////////////////*/ 
		 
		void init_BO_create( 
							int data_counts=16,// data_counts <=1024 
							DWORD addr_low=0x6701, 
							DWORD addr_high=0x6800, 
							 
							BYTE timestamp=0//  0: 3bytes timestamp, 1: 7bytes timestamp 
							); 
		void init_BO_setgroup(int index,BYTE group=3); 
		void init_BO_enable(bool enable=1); 
		 
								//255:means invalidate   IV: 0有效/1无效   NT:0当前值/1非当前   SB:0未取代/1被取代  BL:0未被闭锁/1闭锁   OV:1溢出/ 0:不溢出 
		void slave_BO_SetQuality(int index,BYTE IV=255,BYTE NT=255,BYTE SB=255,BYTE BL=255,BYTE OV=255); 
 
		void slave_BO_SetData(int index,//based on 0 
								DWORD value,SYSTEMTIME *timetag=NULL); 
		/*//////////////////////////////////////////////////////////////////////////////// 
		*  
		*				状态检出信息服务 
		* 
		* 
		////////////////////////////////////////////////////////////////////////////*/ 
		 
		void init_PS_create( 
							int data_counts=64,// data_counts <=1024 
							DWORD addr_low=0x0401, 
							DWORD addr_high=0x0800 
							); 
		void init_PS_setgroup(int index,BYTE group=4); 
		void init_PS_enable(bool enable=1); 
		 
								//255:means invalidate   IV: 0有效/1无效   NT:0当前值/1非当前   SB:0未取代/1被取代  BL:0未被闭锁/1闭锁   OV:1溢出/ 0:不溢出 
		void slave_PS_SetQuality(int index,BYTE IV=255,BYTE NT=255,BYTE SB=255,BYTE BL=255,BYTE OV=255); 
 
		void slave_PS_SetData(int index,//based on 0 
								WORD value); 
		/*//////////////////////////////////////////////////////////////////////////////// 
		*  
		*				规一化遥测信息服务 
		* 
		* 
		////////////////////////////////////////////////////////////////////////////*/ 
		 
		void init_ME_NA_create( 
							int data_counts=512,// data_counts <=1024 
							DWORD addr_low=0x4001, 
							DWORD addr_high=0x4200, 
							 
							BYTE timestamp=0//  0: 3bytes timestamp, 1: 7bytes timestamp 
							); 
		void init_ME_NA_setgroup(int index, BYTE group=9, BYTE cycle=0,float coef=1.0); 
		void slave_ME_NA_setDeadband(int index,WORD dead); 
		WORD slave_ME_NA_getDeadband(int index); 
 
		void init_ME_NA_enable(bool enable=1); 
		 
								//255:means invalidate   IV: 0有效/1无效   NT:0当前值/1非当前   SB:0未取代/1被取代  BL:0未被闭锁/1闭锁   OV:1溢出/ 0:不溢出 
		void slave_ME_NA_SetQuality(int index,BYTE IV=255,BYTE NT=255,BYTE SB=255,BYTE BL=255,BYTE OV=255); 
 
		void slave_ME_NA_SetData(int index,//based on 0 
								WORD value,SYSTEMTIME *timetag=NULL); 
		/*//////////////////////////////////////////////////////////////////////////////// 
		*  
		*				标度化遥测信息服务 
		* 
		* 
		////////////////////////////////////////////////////////////////////////////*/ 
		 
		void init_ME_NB_create( 
							int data_counts=512,// data_counts <=1024 
							DWORD addr_low=0x4201, 
							DWORD addr_high=0x4400, 
							 
							BYTE timestamp=0//  0: 3bytes timestamp, 1: 7bytes timestamp 
							); 
		void init_ME_NB_setgroup(int index, BYTE group=10, BYTE cycle=0,float coef=1.0); 
		void slave_ME_NB_setDeadband(int index,WORD dead); 
		WORD slave_ME_NB_getDeadband(int index); 
 
		void init_ME_NB_enable(bool enable=1); 
		 
								//255:means invalidate   IV: 0有效/1无效   NT:0当前值/1非当前   SB:0未取代/1被取代  BL:0未被闭锁/1闭锁   OV:1溢出/ 0:不溢出 
		void slave_ME_NB_SetQuality(int index,BYTE IV=255,BYTE NT=255,BYTE SB=255,BYTE BL=255,BYTE OV=255); 
 
		void slave_ME_NB_SetData(int index,//based on 0 
								WORD value,SYSTEMTIME *timetag=NULL); 
		/*//////////////////////////////////////////////////////////////////////////////// 
		*  
		*				短浮点遥测信息服务 
		* 
		* 
		////////////////////////////////////////////////////////////////////////////*/ 
		 
		void init_ME_NC_create( 
							int data_counts=512,// data_counts <=1024 
							DWORD addr_low=0x4401, 
							DWORD addr_high=0x4600, 
							 
							BYTE timestamp=0//  0: 3bytes timestamp, 1: 7bytes timestamp 
							); 
		void init_ME_NC_setgroup(int index, BYTE group=11, BYTE cycle=0,float coef=1.0); 
		void slave_ME_NC_setDeadband(int index,float dead); 
		float slave_ME_NC_getDeadband(int index); 
 
		void init_ME_NC_enable(bool enable=1); 
		 
								//255:means invalidate   IV: 0有效/1无效   NT:0当前值/1非当前   SB:0未取代/1被取代  BL:0未被闭锁/1闭锁   OV:1溢出/ 0:不溢出 
		void slave_ME_NC_SetQuality(int index,BYTE IV=255,BYTE NT=255,BYTE SB=255,BYTE BL=255,BYTE OV=255); 
 
		void slave_ME_NC_SetData(int index,//based on 0 
								float value,SYSTEMTIME *timetag=NULL); 
			 
		/*//////////////////////////////////////////////////////////////////////////////// 
		*  
		*				不带品质描述遥测信息服务 
		* 
		* 
		////////////////////////////////////////////////////////////////////////////*/ 
		 
		void init_ME_ND_create( 
							int data_counts=512,// data_counts <=1024 
							DWORD addr_low=0x4601, 
							DWORD addr_high=0x4800 
							 
							); 
		void init_ME_ND_setgroup(int index, BYTE group=12, BYTE cycle=0,float coef=1.0); 
		void slave_ME_ND_setDeadband(int index,WORD dead); 
		WORD slave_ME_ND_getDeadband(int index); 
 
		void init_ME_ND_enable(bool enable=1); 
 
		void slave_ME_ND_SetData(int index,//based on 0 
								WORD value); 
		 
		/*//////////////////////////////////////////////////////////////////////////////// 
		*  
		*				EP_TA继电保护信息服务 
		* 
		* 
		////////////////////////////////////////////////////////////////////////////*/ 
		 
		void init_EP_TA_create( 
							 
							DWORD addr_low=0x1001, 
							DWORD addr_high=0x1200, 
							 
							BYTE timestamp=0//  0: 3bytes timestamp, 1: 7bytes timestamp 
							); 
		 
								//255:means invalidate, IV: 0有效/1无效   NT:0当前值/1非当前   SB:0未取代/1被取代  BL:0未被闭锁/1闭锁   OV:1溢出/ 0:不溢出 
		void slave_EP_TA_SetData(int index,//based on 0 
							BYTE ES,WORD relaytime,SYSTEMTIME *timetag,BYTE IV=255,BYTE NT=255,BYTE SB=255,BYTE BL=255,BYTE OV=255); 
		/*//////////////////////////////////////////////////////////////////////////////// 
		*  
		*				EP_TB继电保护信息服务 
		* 
		* 
		////////////////////////////////////////////////////////////////////////////*/ 
		 
		void init_EP_TB_create( 
							 
							DWORD addr_low=0x1201, 
							DWORD addr_high=0x1400, 
							 
							BYTE timestamp=0//  0: 3bytes timestamp, 1: 7bytes timestamp 
							); 
		 
								//255:means invalidate, IV: 0有效/1无效   NT:0当前值/1非当前   SB:0未取代/1被取代  BL:0未被闭锁/1闭锁   OV:1溢出/ 0:不溢出 
 
		void slave_EP_TB_SetData(int index,//based on 0 
							BYTE SPE,WORD relaytime,SYSTEMTIME *timetag,BYTE IV=255,BYTE NT=255,BYTE SB=255,BYTE BL=255,BYTE OV=255); 
		/*//////////////////////////////////////////////////////////////////////////////// 
		*  
		*				EP_TC继电保护信息服务 
		* 
		* 
		////////////////////////////////////////////////////////////////////////////*/ 
		 
		void init_EP_TC_create( 
							 
							DWORD addr_low=0x1401, 
							DWORD addr_high=0x1600, 
							 
							BYTE timestamp=0//  0: 3bytes timestamp, 1: 7bytes timestamp 
							); 
		 
								//255:means invalidate, IV: 0有效/1无效   NT:0当前值/1非当前   SB:0未取代/1被取代  BL:0未被闭锁/1闭锁   OV:1溢出/ 0:不溢出 
 
		void slave_EP_TC_SetData(int index,//based on 0 
							BYTE OCI,WORD relaytime,SYSTEMTIME *timetag,BYTE IV=255,BYTE NT=255,BYTE SB=255,BYTE BL=255,BYTE OV=255);			 
		/*//////////////////////////////////////////////////////////////////////////////// 
		*  
		*				电度信息服务 
		* 
		* 
		////////////////////////////////////////////////////////////////////////////*/ 
		 
		void init_IT_NA_create( 
							int data_counts=512,// data_counts <=1024 
							DWORD addr_low=0x6401, 
							DWORD addr_high=0x6600, 
							 
							BYTE timestamp=0//  0: 3bytes timestamp, 1: 7bytes timestamp 
							); 
		void init_IT_NA_setgroup(int index, BYTE group=1); 
		void init_IT_NA_enable(bool enable=1); 
		 
								//255:means invalidate   IV: 0有效/1无效   NT:0当前值/1非当前   SB:0未取代/1被取代  BL:0未被闭锁/1闭锁   OV:1溢出/ 0:不溢出 
		void slave_IT_NA_SetQuality(int index,BYTE IV=255,BYTE CA=255,BYTE CY=255); 
 
		void slave_IT_NA_SetData(int index,//based on 0 
								DWORD value); 
		/////////////////////////////////////////////////////////////////////////////////// 
		/*//////////////////////////////////////////////////////////////////////////////// 
		*  
		*				单点遥控信息服务 
		* 
		* 
		////////////////////////////////////////////////////////////////////////////*/ 
		void init_C_SC_create( 
							DWORD addr_low=0x6001, 
							DWORD addr_high=0x6200 
								); 
		void init_C_SC_enable(bool enable=1); 
 
		virtual BYTE On_C_SC_select(WORD point ,BYTE status){return 0;}; 
		virtual void On_C_SC_operate(WORD point ,BYTE status){}; 
		/*//////////////////////////////////////////////////////////////////////////////// 
		*  
		*				双点遥控信息服务 
		* 
		* 
		////////////////////////////////////////////////////////////////////////////*/ 
		void init_C_DC_create( 
							DWORD addr_low=0x6001, 
							DWORD addr_high=0x6200 
								); 
		void init_C_DC_enable(bool enable=1); 
		virtual BYTE On_C_DC_select(WORD point ,BYTE status){return 0;}; 
		virtual void On_C_DC_operate(WORD point ,BYTE status){}; 
		/*//////////////////////////////////////////////////////////////////////////////// 
		*  
		*				步位置遥控信息服务 
		* 
		* 
		////////////////////////////////////////////////////////////////////////////*/ 
		void init_C_RC_create( 
							DWORD addr_low=0x6001, 
							DWORD addr_high=0x6200 
								); 
		void init_C_RC_enable(bool enable=1); 
		virtual BYTE On_C_RC_select(WORD point ,BYTE status){return 0;}; 
		virtual void On_C_RC_operate(WORD point ,BYTE status){}; 
		/*//////////////////////////////////////////////////////////////////////////////// 
		*  
		*				比特串遥控信息服务 
		* 
		* 
		////////////////////////////////////////////////////////////////////////////*/ 
		void init_C_BO_create( 
							DWORD addr_low=0x6001, 
							DWORD addr_high=0x6200 
							); 
		void init_C_BO_enable(bool enable=1); 
		virtual BYTE On_C_BO_select(WORD point ,DWORD status){return 0;}; 
		virtual void On_C_BO_operate(WORD point ,DWORD status){}; 
		/*//////////////////////////////////////////////////////////////////////////////// 
		*  
		*				设定规一化信息服务 
		* 
		* 
		////////////////////////////////////////////////////////////////////////////*/ 
		void init_C_SE_NA_create( 
							DWORD addr_low=0x6201, 
							DWORD addr_high=0x6400 
							); 
		void init_C_SE_NA_enable(bool enable=1); 
		virtual void On_C_SE_NA_operate(WORD point ,WORD status){};/////////////////////////////////////////////////////////////////////////////////////// 
	 
		/*//////////////////////////////////////////////////////////////////////////////// 
		*  
		*				设定标度化信息服务 
		* 
		* 
		////////////////////////////////////////////////////////////////////////////*/ 
		void init_C_SE_NB_create( 
							DWORD addr_low=0x6201, 
							DWORD addr_high=0x6400 
							); 
		void init_C_SE_NB_enable(bool enable=1); 
		virtual void On_C_SE_NB_operate(WORD point ,WORD value){};/////////////////////////////////////////////////////////////////////////////////////// 
		/*//////////////////////////////////////////////////////////////////////////////// 
		*  
		*				设定段浮点信息服务 
		* 
		* 
		////////////////////////////////////////////////////////////////////////////*/ 
		void init_C_SE_NC_create( 
							DWORD addr_low=0x6201, 
							DWORD addr_high=0x6400 
							); 
		void init_C_SE_NC_enable(bool enable=1); 
		virtual void On_C_SE_NC_operate(WORD point ,float value){};/////////////////////////////////////////////////////////////////////////////////////// 
		/*//////////////////////////////////////////////////////////////////////////////// 
		*  
		*				设定多点信息服务 
		* 
		* 
		////////////////////////////////////////////////////////////////////////////*/ 
		void init_C_SE_ND_create( 
							DWORD addr_low=0x6201, 
							DWORD addr_high=0x6400 
							); 
		void init_C_SE_ND_enable(bool enable=1); 
		virtual void On_C_SE_ND_operate(WORD point ,WORD value){};/////////////////////////////////////////////////////////////////////////////////////// 
		/*//////////////////////////////////////////////////////////////////////////////// 
		*  
		*				参数归一化信息服务 
		* 
		* 
		////////////////////////////////////////////////////////////////////////////*/ 
		void init_P_ME_NA_create(int data_counts=512,// data_counts <=1024 
							DWORD addr_low=0x5001, 
							DWORD addr_high=0x6200 
							); 
		void init_P_ME_NA_setgroup(int index, BYTE group=14); 
		void init_P_ME_NA_enable(bool enable=1); 
		/////////////////////////////////////////////////////////////////////////////////////// 
	 
		/*//////////////////////////////////////////////////////////////////////////////// 
		*  
		*				设定标度化信息服务 
		* 
		* 
		////////////////////////////////////////////////////////////////////////////*/ 
		void init_P_ME_NB_create(int data_counts=512,// data_counts <=1024 
							DWORD addr_low=0x5001, 
							DWORD addr_high=0x6200 
							); 
		void init_P_ME_NB_setgroup(int index, BYTE group=14); 
		void init_P_ME_NB_enable(bool enable=1); 
		/////////////////////////////////////////////////////////////////////////////////////// 
		/*//////////////////////////////////////////////////////////////////////////////// 
		*  
		*				设定段浮点信息服务 
		* 
		* 
		////////////////////////////////////////////////////////////////////////////*/ 
		void init_P_ME_NC_create(int data_counts=512,// data_counts <=1024 
							DWORD addr_low=0x5001, 
							DWORD addr_high=0x6200 
							); 
		void init_P_ME_NC_setgroup(int index, BYTE group=14); 
		void init_P_ME_NC_enable(bool enable=1); 
	//////////////////////////////////////////////////////////////////////////////////////////////////////	 
	//////////////////////////////////////////////////////////////////////////////// 
 
}; 
#endif