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

📄 protecttpo_reclosing.c

📁 电力系统中的保护装置全部代码
💻 C
📖 第 1 页 / 共 2 页
字号:
    pValue->value_calculate_style =    CHL_FOURIER1_;
    pValue->pvalue_dimension      =    "V";
    pValue->value_calculate_coefficient = CHL_FOURIER_CURRENT;
//    pValue->value_measure       =    Ia_Value;
    pValue->value_index_number    =    pReport->pro_report_data_number;
    pValue++; 
    pReport->pro_report_data_number++; 
    //------------------------------------------------//
    pValue->pvalue_name = (CHAR *)strcpy(pValue->value_name,"线路电压");
    pValue->pvalue_alias          =    "Ux";
    pValue->value_calculate_style =    CHL_FOURIER1_;
    pValue->pvalue_dimension      =    "V";
    pValue->value_calculate_coefficient = CHL_FOURIER_CURRENT;
//    pValue->value_measure       =    Ib_Value;
    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;   
}

///////////////////////////////////////////
/////////////// 保护执行函数 ////////////////
///////////////////////////////////////////
UNSIGNED        Charge_Time;
UNSIGNED CHZ_Delay_Time;
VOID    Once_Reclose_Routine(PROTECT *ptr)
{
PROTECT         *pProtect; 
SETTING         *pSets; 
SOE             *pSoe; 
VALUE           *pValue;
JUMPER          *pJumper; 
TIME            *pTime;
INT             SetZoneNum;
 
float           Time_Set,Voltage_Set,Angle_Set,Mode_Set;
float           Ua,Ub,Uc,Ia_Value,Ib_Value,Ic_Value,Um;
float           Ux,Angle_Value;
UNSIGNED        Syn_Type,i; 
extern  float   Uab,Ubc,Uca;

static	UNSIGNED        Syn_Time;
static	UNSIGNED        Twb = 0,Hwb = 0,Change_Flag = 0;

UNSIGNED        *ACC_Flag,*Reclose_Flag,*Charge_Flag,*ACC_Time;
extern  unsigned        Reclosing_Charge_Flag;
extern  PROTECT protect_PT;
extern  CHECK   ControlTest_Check;
// ----------------------------------------------------- // 

    pProtect = ptr;

//指针赋值
    ACC_Flag      =    &pProtect->pro_reserve1;//加速标
    Reclose_Flag  =    &pProtect->pro_reserve2;//重合闸标
    Charge_Flag   =    &pProtect->pro_reserve3;//充电标
    ACC_Time      =    &pProtect->pro_reserve4;//加速时间	
//充电状态
    Reclosing_Charge_Flag = *Charge_Flag;
//////取定值
// ----------------------------------------------------- //
//定值区号
    SetZoneNum    =    iLONC_SetZoneNum;
    pSets          	= pProtect->pro_setting; 
//时间                 
    Time_Set      =    pSets->set_value_zone[SetZoneNum];
    pSets++;
//无压值        
    Voltage_Set   =    pSets->set_value_zone[SetZoneNum];
    pSets++;
//重合方式        
    Mode_Set      =    pSets->set_value_zone[SetZoneNum];
    pSets++;                
//重合Ux相别
    Syn_Type	  =    pSets->set_value_zone[SetZoneNum];
    pSets++;
    
//////实时数据
// ----------------------------------------------------- // 
//数据通道
    Ia_Value    =    AIChn[PIa_Chn].chl_value1;
    Ib_Value    =    AIChn[PIb_Chn].chl_value1;
    Ic_Value    =    AIChn[PIc_Chn].chl_value1;
    Ua    =    AIChn[Ua_Chn].chl_value1;
    Ub    =    AIChn[Ub_Chn].chl_value1;
    Uc    =    AIChn[Uc_Chn].chl_value1;
    Ux    =    AIChn[Ux_Chn].chl_value1;
   //------------------------------------------------//
//数据传递
    pValue      =    pProtect->pro_run_data; 
   //------------------------------------------------// 

// A相电流  
    pValue->value_measure    =    Ia_Value;
    pValue++;        
// B相电流  
    pValue->value_measure    =    Ib_Value;
    pValue++;           
// C相电流  
    pValue->value_measure    =    Ic_Value;
    pValue++; 
// A相电压 
    pValue->value_measure    =    Ua;
    pValue++;        
// B相电压  
    pValue->value_measure    =    Ub;
    pValue++;           
// C相电压  
    pValue->value_measure    =    Uc;
    pValue++;
// 线路电压  
    pValue->value_measure    =    Ux;
    pValue++;
//母线电压
    switch(Syn_Type)
    {
        case 0:Um = Ua;break;
        case 1:Um = Ub;break;
        case 2:Um = Uc;break;
        case 3:Um = Uab;break;
        case 4:Um = Ubc;break;
        case 5:Um = Uca;break;	
    }	            

//////保护逻辑
// ----------------------------------------------------- // 

//压板指针
    pProtect->pro_jumper = Reclose_jumper;
    pJumper = pProtect->pro_jumper;
    
//清加速标志
    if(TMD_System_Clock - *ACC_Time > 3000) 
        *ACC_Flag = 0;       
      

//保护标志

    if(DIChn[HW].state)				//重合闸用
    {
        Hwb = 1;        
        Change_Flag = 0;
    }
    else if(Hwb == 1)		//合位变跳位
    {	
        Hwb = 0;
    }
		
    if(DIChn[TW].state)				//加速保护投3秒用
    {
        if(!Twb)
        {
            Change_Flag = 1; 
            pProtect->pro_reserve5 = CHZ_Delay_Time;
        }
        Twb = 1; 
    }
    else if(Twb == 1)		//跳位变合位
    {	
        Twb = 0;
        *ACC_Flag = 1;//加速标
        *ACC_Time = TMD_System_Clock;//加速时间 
        Charge_Time = TMD_System_Clock; 
    }		

//保护退
    if(!(DOChn[BSJ].state))return;

    if(!pJumper->jum_status)
    {		
        *Reclose_Flag = 0;//重合闸标	
        *Charge_Flag = 0;//充电标
        Charge_Time = TMD_System_Clock;	
	    return;
    }
	
    i = DIChn[THWXN].state || DIChn[SDTZ].state ||DIChn[BSCHZ].state || protect_PT.pro_reserve1 ||ControlTest_Check.pickup_flag; 

    if(i)               //放电条件
    {
        *Charge_Flag = 0;//充电标
        Charge_Time = TMD_System_Clock;
        return; 
    }
     
    if(!*Charge_Flag && DIChn[HW].state) 	//未充电且合位
    {	        
        if(TMD_System_Clock - Charge_Time <= CHRG_TIME)
            return;	            
        *Charge_Flag = 1;//充电标
        *Reclose_Flag = 0;
    }        

    Charge_Time = TMD_System_Clock;

//无跳变
    if(!Change_Flag)    
        return;       
    
//未充电
    if(!*Charge_Flag)
    {
        Change_Flag = 0;    //清变位标
        return;
    }
//有电流
    if(Ia_Value > 0.09 || Ib_Value > 0.09 || Ic_Value > 0.09)
    {
        if(TMD_System_Clock - pProtect->pro_reserve5 > 20)
        {
            CHZ_Delay_Time = TMD_System_Clock - 20;
        }
    	if(TMD_System_Clock - pProtect->pro_reserve5 > 10000)
    	{
    	    *Charge_Flag = 0;  
    	    Change_Flag = 0;
    	}   
        return; 
    }           

//启动重合
    i = (UNSIGNED)(Mode_Set + 0.1);
    switch(i)
    {
        case 0:
                if(!ptr->pro_startup_flag)
                {
                    ptr->pro_startup_flag = 1;
                    Start_up();
                    return;
                }

                if(TMD_System_Clock - CHZ_Delay_Time <= Time_Set*1000)//延时未到
                    return;
		
                if(DOChn[HZJ].state)
                    return;
			
                StartClose(ptr,&Change_Flag,Um,Ux);

                break;
		
	case 1:
                if(Ux >= Voltage_Set)
		        {				
    	            CHZ_Delay_Time = TMD_System_Clock;
    	            if(TMD_System_Clock - pProtect->pro_reserve5 > 10000)
    	            {
    	                *Charge_Flag = 0;
                        Change_Flag = 0;    //清变位标
                        ptr->pro_startup_flag = 0;
                    }    
                    return;
                }
		
                if(!ptr->pro_startup_flag)
                {
                    ptr->pro_startup_flag = 1;
                    Start_up();
                    return;
                }
              
                if(TMD_System_Clock - CHZ_Delay_Time <= Time_Set * 1000)//延时未到
                    return;
			
                if(DOChn[HZJ].state)
                    return;			
		
                StartClose(ptr,&Change_Flag,Um,Ux);
                    break;
    }
}

⌨️ 快捷键说明

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