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

📄 protectoc3_current.c

📁 电力系统中的保护装置全部代码
💻 C
📖 第 1 页 / 共 2 页
字号:
/********************************************************************************/
/*                                                                              */
/* 程序名:							                */
/*                                                                              */
/*      OC_III_Direction.C                               		                */
/*                                                                              */
/* 功能:	                  		                           		*/
/*                                                                              */
/*                                                                              */
/********************************************************************************/

#include        "BaseVariable.h" 
#include	"ProOC_III_Direction.h"

//--------------------------------------//

#define ON			1
#define OFF			0   

#define SIGNALTRIP		ON		// ON=跳闸 OFF=告警//

#define KUIXIAN			OFF
#define XIANLU			ON 
//--------------------------------------//
// 功能类型
#define CTYPE			XIANLU 

// 保护单元件退出 
#define	SWITCH_DRECTION		OFF
#define SWITCH_VOLTAGE		OFF
//--------------------------------------//

///////////////////////////////////////////
////////////////保护初始化函数///////////////
///////////////////////////////////////////

void    OC_III_Direction_Initialize(PROTECT *ptr)
{
PROTECT         *pProtect;
SETTING         *pSets;
SOE             *pSoe;
VALUE           *pValue;
JUMPER          *pJumper; 
REPORT          *pReport;
int i;

// ----------------------------------------------------- // 
//保护结构体指针赋值
    pProtect = ptr;            
//保护缓冲区指针赋值
    pProtect->pro_jumper      =    OC_III_jumper;
    pProtect->pro_setting     =    OC_III_setting;		
    pProtect->pro_run_data    =    OC_III_rundata;
//保护ID号
    pProtect->pro_id = PRO_Total_Protect;
//保护装置名
    pProtect->ppro_device_name = "WXH-821";     
//保护名
    pProtect->ppro_name = "过流Ⅲ段保护";
//跳闸位
    pProtect->pro_trip = 0x1;

//////模拟通道  
// ----------------------------------------------------- //
//相电流                       	
    pProtect->pro_analog_channel[0]    =    PIa_Chn;
    pProtect->pro_analog_channel[1]    =    PIb_Chn;
    pProtect->pro_analog_channel[2]    =    PIc_Chn;
        
#if	CTYPE
//电压         
    pProtect->pro_analog_channel[3]    =    Ua_Chn;
    pProtect->pro_analog_channel[4]    =    Ub_Chn;
    pProtect->pro_analog_channel[5]    =    Uc_Chn;         
#endif

//////压板
// ----------------------------------------------------- //
//压板个数
    pProtect->pro_jumper_number    =    0;
//指针赋值            
    pJumper = pProtect->pro_jumper;  
//ID号
    pJumper->pro_id     =    pProtect->pro_id;	
//序号
    pJumper->jum_id     =    pProtect->pro_jumper_number;                                         
//INF
    pJumper->jum_inf    =    186;
//CONTROLINF
    pJumper->jum_ctrl   =    50;                                             
//压板名称
    pJumper->pjum_name     =    "过流Ⅲ段投退";
    pJumper->pjum_alias    =    "GL3";     
//压板状态
    pJumper->jum_status    =    1; 
//赋值增量 
    pJumper++;  
    pProtect->pro_jumper_number++; 

//////定值 
// ----------------------------------------------------- //
//定值个数                        
    pProtect->pro_setting_number    =    0;
//指针赋值 
    pSets = pProtect->pro_setting;
//电流      
    pSets->pro_id    =    pProtect->pro_id;       
    pSets->set_id    =    ++(pProtect->pro_setting_number);
    pSets->pset_name =    (CHAR*)strcpy(pSets->set_name,"Ⅲ段电流值");
    pSets->pset_alias    =    "I3zd";	                                                                               
    pSets->pset_dimension     =    "A";
    pSets->set_lower_limit    =    0.5;
    pSets->set_high_limit     =    100.0;
    pSets->set_calculate_style    =    CHL_FOURIER1_;
    pSets->set_calculate_coefficient    =    CHL_CONSTANT_1; 
    for(i=0;i<SET_ZONE;i++)
    pSets->set_value_zone[i]      =    400.0*CHL_CONSTANT_1; 
    pSets++;
   //------------------------------------------------// 
//时限      
    pSets->pro_id    =    pProtect->pro_id;       
    pSets->set_id    =    ++(pProtect->pro_setting_number);                                                  
    pSets->pset_name     =    (CHAR*)strcpy(pSets->set_name,"Ⅲ段时间值");                                                 
    pSets->pset_alias    =    "T3";	                                                                           
    pSets->pset_dimension     =    "S";
    pSets->set_lower_limit    =    0.00;
    pSets->set_high_limit     =    100;
    pSets->set_calculate_style    =    CHL_MUL_;
    pSets->set_calculate_coefficient    =    CHL_CONSTANT_1; 
    for(i=0;i<SET_ZONE;i++)
    pSets->set_value_zone[i]      =    0.0*CHL_CONSTANT_1;
    pSets++;                                                      
   //------------------------------------------------// 
#if	CTYPE
//电压         
    pSets->pro_id    =    pProtect->pro_id;       
    pSets->set_id    =    ++(pProtect->pro_setting_number); 
    pSets->pset_name     =    (CHAR*)strcpy(pSets->set_name,"Ⅲ段电压值"); 
    pSets->pset_alias    =    "U3zd";                                                                                
    pSets->pset_dimension     =    "V";
    pSets->set_lower_limit    =    2;
    pSets->set_high_limit     =    100;
    pSets->set_calculate_style    =    CHL_FOURIER1_;
    pSets->set_calculate_coefficient    =    CHL_CONSTANT_1; 
    for(i=0;i<SET_ZONE;i++)
    pSets->set_value_zone[i]      =    1.0*CHL_CONSTANT_1; 
    pSets++;         
   //------------------------------------------------// 
//方向角       
    pSets->pro_id    =    pProtect->pro_id;       
    pSets->set_id    =    ++(pProtect->pro_setting_number);
    pSets->pset_name     =    (CHAR*)strcpy(pSets->set_name,"灵敏角模式");
    pSets->pset_alias    =    "Agl";                                                
    pSets->pset_dimension     = " ";
    pSets->set_lower_limit    = 0.00;
    pSets->set_high_limit     = 1.00;
    pSets->set_calculate_style    =    MODE_;
    pSets->set_calculate_coefficient    =    CHL_CONSTANT_1;
    for(i=0;i<SET_ZONE;i++)
    pSets->set_value_zone[i]      =    1.0*CHL_CONSTANT_1; 
    pSets++;
   //------------------------------------------------// 
//////保护投退控制字
// ----------------------------------------------------- //	
//电压元件       
    pSets->pro_id    =    pProtect->pro_id;       
    pSets->set_id    =    ++(pProtect->pro_setting_number);
    pSets->pset_name     =    (CHAR*)strcpy(pSets->set_name,"电压元件");
    pSets->pset_alias    =    "UBL3";                                                
    pSets->pset_dimension     = " ";
    pSets->set_lower_limit    = 0.00;
    pSets->set_high_limit     = 1.00;
    pSets->set_calculate_style    =    MODE_;
    pSets->set_calculate_coefficient    =    CHL_CONSTANT_1;
    for(i=0;i<SET_ZONE;i++)
    pSets->set_value_zone[i]      =    1.0*CHL_CONSTANT_1; 
    pSets++;
   //------------------------------------------------//                             
//方向元件       
    pSets->pro_id    =    pProtect->pro_id;       
    pSets->set_id    =    ++(pProtect->pro_setting_number); 
    pSets->pset_name     =    (CHAR*)strcpy(pSets->set_name,"方向元件");
    pSets->pset_alias    =    "FBL3";                                               
    pSets->pset_dimension     =    " ";
    pSets->set_lower_limit    =    0.00;
    pSets->set_high_limit     =    1.00;
    pSets->set_calculate_style    =    MODE_;
    pSets->set_calculate_coefficient    =    CHL_CONSTANT_1;
    for(i=0;i<SET_ZONE;i++)
    pSets->set_value_zone[i]      =    1.0*CHL_CONSTANT_1; 
    pSets++;
   //------------------------------------------------//                   
#endif 

//////实时参数 
// ----------------------------------------------------- // 
    pProtect->pro_run_data_number    =    0;
    pValue    =    pProtect->pro_run_data;
   //------------------------------------------------//  
    pValue->value_index_number	=    ++(pProtect->pro_run_data_number); 
    pValue->pvalue_name =(CHAR *)strcpy(pValue -> value_name,"A相电流");
    pValue->pvalue_alias        =    "Ia";	
    pValue->value_calculate_style =    CHL_FOURIER1_;  
    pValue->pvalue_dimension  	=    "A";  
    pValue->value_calculate_coefficient = 1; 
    pValue->value_measure 	=    0.0; 
    pValue++;
   //------------------------------------------------//  
    pValue->value_index_number	=    ++(pProtect->pro_run_data_number); 
    pValue->pvalue_name =(CHAR *)strcpy(pValue -> value_name,"B相电流");
    pValue->pvalue_alias        = "Ib";	
    pValue->value_calculate_style =   	CHL_FOURIER1_;  
    pValue->pvalue_dimension  	=    "A";  
    pValue->value_calculate_coefficient = 1; 
    pValue->value_measure 	=	0.0;
    pValue++;
   //------------------------------------------------//  
    pValue->value_index_number	=    ++(pProtect->pro_run_data_number);
    pValue->pvalue_name =(CHAR *)strcpy(pValue -> value_name,"C相电流");
    pValue->pvalue_alias        =    "Ic";	
    pValue->value_calculate_style =    CHL_FOURIER1_;  
    pValue->pvalue_dimension  	=    "A";  
    pValue->value_calculate_coefficient = 1; 
    pValue->value_measure 	=    0.0;
    pValue++;
   //------------------------------------------------//  
#if	CTYPE
    pValue->value_index_number	=    ++(pProtect->pro_run_data_number); 
    pValue->pvalue_name =(CHAR *)strcpy(pValue -> value_name,"AB线电压");
    pValue->pvalue_alias        =    "Uab";
    pValue->value_calculate_style =    CHL_FOURIER1_;  
    pValue->pvalue_dimension  	=    "V";  
    pValue->value_calculate_coefficient = 1; 
    pValue->value_measure 	=    0.0;
    pValue++;                                             
   //------------------------------------------------//    
    pValue->value_index_number	=    ++(pProtect->pro_run_data_number); 
    pValue->pvalue_name =(CHAR *)strcpy(pValue -> value_name,"BC线电压");
    pValue->pvalue_alias        =    "Ubc";
    pValue->value_calculate_style =    CHL_FOURIER1_;  
    pValue->pvalue_dimension  	=    "V";  
    pValue->value_calculate_coefficient = 1; 
    pValue->value_measure 	=    0.0;
    pValue++;                                              
   //------------------------------------------------//   
    pValue->value_index_number	=    ++(pProtect->pro_run_data_number); 
    pValue->pvalue_name =(CHAR *)strcpy(pValue -> value_name,"CA线电压");
    pValue->pvalue_alias        =    "Uca";
    pValue->value_calculate_style =   	CHL_FOURIER1_;  
    pValue->pvalue_dimension  	=    "V";  
    pValue->value_calculate_coefficient = 1; 
    pValue->value_measure 	=    0.0;
    pValue++;                                               
   //------------------------------------------------// 
#endif
//////报告
// ----------------------------------------------------- // 
    pReport = &OC3_Report;
    pReport->pro_report_flag = 2;
//SOE				    	
    pSoe = &pReport->pro_report_soe;
   //------------------------------------------------//            	  	
    pSoe->pSOE_name = "过流Ⅲ段动作";
    strcpy(pSoe->SOE_name,pSoe->pSOE_name);  
    pSoe->SOE_Inf = 94;
    pSoe->DPI = 2;  	
//动作值
    pReport->pro_report_data_number = 0;
    pReport->pro_report_data = OC_III_reportdata;
    pValue = pReport->pro_report_data;
   //------------------------------------------------//
    pValue->pvalue_name =(CHAR *)strcpy(pValue -> value_name,"A相动作电流");
    pValue->pvalue_alias	 	= "Ia";
    pValue->value_calculate_style = CHL_FOURIER1_;
    pValue->pvalue_dimension  =       "A";
    pValue->value_calculate_coefficient = CHL_FOURIER_CURRENT;
    pValue->value_index_number = pReport->pro_report_data_number;
    pValue++; 
    pReport->pro_report_data_number++; 
   //------------------------------------------------//
    pValue->pvalue_name =(CHAR *)strcpy(pValue -> value_name,"B相动作电流");
    pValue->pvalue_alias	 	= "Ib";   
    pValue->value_calculate_style = CHL_FOURIER1_;
    pValue->pvalue_dimension  =       "A";
    pValue->value_calculate_coefficient = CHL_FOURIER_CURRENT;
    pValue->value_index_number = pReport->pro_report_data_number;
    pValue++;
    pReport->pro_report_data_number++;   
   //------------------------------------------------// 
    pValue->pvalue_name =(CHAR *)strcpy(pValue -> value_name,"C相动作电流");
    pValue->pvalue_alias	 	= "Ic"; 
    pValue->value_calculate_style = CHL_FOURIER1_;
    pValue->pvalue_dimension  =       "A";
    pValue->value_calculate_coefficient = CHL_FOURIER_CURRENT;
    pValue->value_index_number = pReport->pro_report_data_number;
    pValue++; 
    pReport->pro_report_data_number++;
   //------------------------------------------------//
//报告通道
    //pReport->pro_channel_number = 1;
   //------------------------------------------------// 
   
//////保护私用变量    
// ----------------------------------------------------- // 
    pProtect->pro_startup_flag = 0;
    pProtect->pro_pickup_flag  = 0;	
    pProtect->pro_reserve1 = 0; 
    pProtect->pro_reserve4 = TMD_System_Clock;     
}

///////////////////////////////////////////
/////////////// 保护执行函数 ////////////////
///////////////////////////////////////////

VOID    OC_III_Direction_Routine(PROTECT *ptr)
{
PROTECT         *pProtect; 
SETTING         *pSets; 
SOE             *pSoe; 
VALUE           *pValue;
REPORT          *pReport;
JUMPER          *pJumper; 
TIME            *pTime;
INT             SetZoneNum;

float           Ia_Value,Ib_Value,Ic_Value;
float           Current_Set;
float           Time_Set;

#if	CTYPE
float           Voltage_Set;
float           Voltage_Word;
float           Direct_Word;
UNSIGNED        i,j;
extern	float	Uab,Ubc,Uca;

float   Ua_real,Ua_imaginary,Ub_real,Ub_imaginary,Uc_real,Uc_imaginary;

⌨️ 快捷键说明

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