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

📄 protecttpo_reclosing.c

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

//加速标         pProtect->pro_reserve1
//重合闸标       pProtect->pro_reserve2
//充电标         pProtect->pro_reserve3
//加速时间       pProtect->pro_reserve4


#include        "BaseVariable.h" 
#include	"ProReclose.h"


///////////////////////////////////////////
/////////////// 重合出口函数 ////////////////
///////////////////////////////////////////

void StartClose(PROTECT* ptr,UNSIGNED *Change_Flag,float Um,float Ux)
{
PROTECT         *pProtect; 
SOE             *pSoe; 
VALUE           *pValue;
REPORT          *pReport;
UNSIGNED        *Reclose_Flag,*Charge_Flag;
// ----------------------------------------------------- // 
//保护结构体指针赋值
    pProtect = ptr; 
//指针赋值
    Reclose_Flag = &pProtect->pro_reserve2;//重合闸标
    Charge_Flag	= &pProtect->pro_reserve3;//充电标
//动作元件	
    Qdj();
    Hzj();
    pProtect->pro_reserve5 = TMD_System_Clock - pProtect->pro_reserve5;

    *Change_Flag = 0;    //清变位标
    *Charge_Flag = 0;
    *Reclose_Flag = 1;
    ptr->pro_startup_flag = 0;
		    
//////报告
// ----------------------------------------------------- // 
    pReport = &REC_Report;
    pReport->pro_report_flag = 2;
//SOE				    	
    pSoe = &pReport->pro_report_soe;            	  	
   //------------------------------------------------//
    pSoe->Relative_Time = pProtect->pro_reserve5;
    READ_DEC_TIME(&pSoe->Year);
//    pSoe->Fault_Number = SOENumber++;

//动作值
    pReport->pro_report_data = Reclose_reportdata;
    pValue = pReport->pro_report_data;
   //------------------------------------------------//
//母线电压 
    pValue->value_measure    =    Um;
    pValue++;        
// 线路电压 
    pValue->value_measure    =    Ux;
    pValue++;       

   //------------------------------------------------//
    pReport->mmi_flag = MMIDISPLAY + MMIPICKUP;
    Fill_Report(pReport);
	 
}
 
///////////////////////////////////////////
////////////////保护初始化函数///////////////
///////////////////////////////////////////

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

// ----------------------------------------------------- // 
//保护结构体指针赋值
    pProtect = ptr;        
//保护缓冲区指针赋值
    pProtect->pro_jumper 	= Reclose_jumper;
    pProtect->pro_setting 	= Reclose_setting;		
    pProtect->pro_run_data 	= Reclose_rundata;
//保护ID号
    pProtect->pro_id = PRO_Total_Protect;
//保护装置名
    pProtect->ppro_device_name = "WXH-821";     
//保护名
    pProtect->ppro_name = "重合闸保护";
    
//////模拟通道  
// ----------------------------------------------------- // 
//电压         
    pProtect->pro_analog_channel[0]    =    Ua_Chn;
    pProtect->pro_analog_channel[1]    =    Ub_Chn;
    pProtect->pro_analog_channel[2]    =    Uc_Chn;         
    pProtect->pro_analog_channel[3]    =    Ux_Chn; 
    
//////压板
// ----------------------------------------------------- // 
//压板个数
    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    =    238;   
//CONTROLINF
    pJumper->jum_ctrl   =    16;                                             
//压板名称
    pJumper->pjum_name     =    "重合闸投退";
    pJumper->pjum_alias    =    "CHZ";    
//压板状态
    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          =    "Tch";	                                                                           
    pSets->pset_dimension      =    "S";
    pSets->set_lower_limit     =    0.30;
    pSets->set_high_limit      =    9.99;
    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]   =    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          =    "Uch";	                                                                           
    pSets->pset_dimension      =    "V";
    pSets->set_lower_limit     =    2.00;
    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 	       =    "Mch";                                                          
    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]   =    0.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 	       =    "TUx";                                                          
    pSets->pset_dimension      =    " ";
    pSets->set_lower_limit     =    0.00;
    pSets->set_high_limit      =    5.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]   =    0.0*CHL_CONSTANT_1; 
    pSets++;    

//////实时参数
// ----------------------------------------------------- // 
    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++;
//------------------------------------------------//  
    pValue->value_index_number    =    ++(pProtect->pro_run_data_number);
    pValue->pvalue_name = (CHAR*)strcpy(pValue->value_name,"A相电压");        	                                  
    pValue->pvalue_alias    =    "Ua";	
    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,"B相电压");        	                                  
    pValue->pvalue_alias    =    "Ub";	
    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,"C相电压");        	                                  
    pValue->pvalue_alias    =    "Uc";	
    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,"线路电压");        	                                  
    pValue->pvalue_alias    =    "Ul";	
    pValue->value_calculate_style =    CHL_FOURIER1_;  
    pValue->pvalue_dimension      =    "V";  
    pValue->value_calculate_coefficient = 1; 
    pValue->value_measure   =    0.0;
    pValue++;
 
//////报告
// ----------------------------------------------------- // 
    pReport = &REC_Report;
//SOE				    	
    pSoe = &pReport->pro_report_soe;            	  	
    pSoe->pSOE_name = "重合闸动作"; 
    strcpy(pSoe->SOE_name,pSoe->pSOE_name); 
    pSoe->SOE_Inf = 128;
    pSoe->DPI = 2;  	
//动作值
    pReport->pro_report_data_number = 0;
    pReport->pro_report_data = Reclose_reportdata;
    pValue = pReport->pro_report_data;
   //------------------------------------------------// 
    pValue->pvalue_name = (CHAR *)strcpy(pValue->value_name,"母线电压");
    pValue->pvalue_alias          =    "Um";

⌨️ 快捷键说明

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