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

📄 protectlflsh_protect.c

📁 电力系统中的保护装置全部代码
💻 C
📖 第 1 页 / 共 2 页
字号:
//频率
    pValue->pvalue_name = (CHAR *)strcpy(pValue -> value_name,"动作频率");
    pValue->pvalue_alias     =    "f";	
    pValue->value_calculate_coefficient = 1.0;	
    pValue->value_calculate_style =    CHL_MUL_;
    pValue->pvalue_dimension      =    "Hz";
//    pValue->value_measure       =    Frenq_Value;
    pValue->value_index_number    =    pReport->pro_report_data_number;     
    pReport->pro_report_data_number++; 
    pValue++;
   //------------------------------------------------// 
//报告通道
    //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    LFLSH_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           Frenq_Set,Time_Set,Voltage_Set,DeltaF_Set,DeltaF_Plunge;
extern	float	Uab,Ubc,Uca;
extern	float	*CalculatePtr;
extern UNSIGNED	SampleInterval;

static	float	Frenq_Value = 50.0,Start_Frenq;
static	UNSIGNED         Start_Flag,Start_Ptr,DF_Time,DFLock_Num,DFLock_Flag;

UNSIGNED        i;
UNSIGNED        Delta_Time; 
float           Delta_Frenq;

extern	PROTECT	protect_Reclose;
UNSIGNED        *Charge_Flag;

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

    pProtect = ptr;
 
//指针赋值
    Charge_Flag = &protect_Reclose.pro_reserve3;//充电标
 
//////取定值
// -----------------------------------------------------//
//定值区号
    SetZoneNum    =    iLONC_SetZoneNum;
    pSets         =    pProtect->pro_setting; 
//动作频率定值 
    Frenq_Set     =    pSets->set_value_zone[SetZoneNum];
    pSets++;
//低频减载动作时限
    Time_Set      =    pSets->set_value_zone[SetZoneNum];
    pSets++;
//低频减载电压闭锁定值       
    Voltage_Set   =    pSets->set_value_zone[SetZoneNum];
    pSets++;
//滑差闭锁定值
    DeltaF_Set    =    pSets->set_value_zone[SetZoneNum];
    pSets++; 
//滑差闭锁控制字
    DeltaF_Plunge =    pSets->set_value_zone[SetZoneNum];
    pSets++;
        
//////实时数据
// ----------------------------------------------------- //
//数据通道
    Frenq_Value	= samp_f;
    Ia_Value 	= AIChn[PIa_Chn].chl_value1;
    Ib_Value 	= AIChn[PIb_Chn].chl_value1;
    Ic_Value 	= AIChn[PIc_Chn].chl_value1;
   //------------------------------------------------//
//数据传递
    pValue   	=  pProtect->pro_run_data;
   //------------------------------------------------// 
// 频率  
    pValue->value_measure   =	Frenq_Value;
    pValue++;  
// A相电流  
    pValue->value_measure   =	Ia_Value;
    pValue++;        
// B相电流  
    pValue->value_measure 	=	Ib_Value;
    pValue++;           
// C相电流  
    pValue->value_measure 	=	Ic_Value;
    pValue++;
    
    pValue->value_measure 	=	Uab;
    pValue++;
    pValue->value_measure 	=	Ubc;
    pValue++;
    pValue->value_measure 	=	Uca;
    pValue++;
    
    
//////保护逻辑
// ----------------------------------------------------- // 

//压板指针    
    pProtect->pro_jumper = LF_jumper;
    pJumper = pProtect->pro_jumper;  
//保护退
    if(!pJumper->jum_status)				
    {
        ClearFlag(ptr);
        DFLock_Num  = 0;
        DFLock_Flag = 0;
        Start_Flag = 0;
        return; 
    }       

//保护投
    if(samp_f > 45.00 && samp_f < 50.5)
        Frenq_Value	= samp_f;
    else
        return;
    if(Frenq_Value < START_FRENQ)
    {    
        if(Start_Flag == 0)                         //滑差计时起点,取频率
        {
            DF_Time = 0;
            Start_Ptr = (UNSIGNED)CalculatePtr;
            Start_Frenq = Frenq_Value;
            Start_Flag = 1;
            DFLock_Num  = 0;
            DFLock_Flag = 0;
            
        }
    }
    else
    {
        Start_Flag = 0;
        DFLock_Num  = 0;
        DFLock_Flag = 0;
        NoStartup(ptr); 
        pProtect->pro_reserve4 = TMD_System_Clock;
        pProtect->pro_reserve5 = TMD_System_Clock;
        return;        
    }   
    
//滑差闭锁元件

    if(DeltaF_Plunge)                           
    {   
    	if(DFLock_Flag)return;//永久闭锁
        i = (UNSIGNED)CalculatePtr - Start_Ptr;
        Start_Ptr = (UNSIGNED)CalculatePtr;
        if(i >= AD_OneDataSize - 1) i += AD_OneDataSize - 1;
        DF_Time += i;
        if(DF_Time > 2 * Sample_Point)
        {    
            Delta_Frenq    =    Start_Frenq - Frenq_Value;
            Delta_Time     =    DF_Time * SampleInterval;
            Delta_Frenq    =    Delta_Frenq * 10000000.0 / Delta_Time;
        }
        else
            return; 
        if(Delta_Frenq >= DeltaF_Set)
        {                 
            DFLock_Num++;
            if(DFLock_Num > 2)
            {
                DFLock_Num = 0;
                DFLock_Flag = 1;            
            }       
            return; 
        }                       		
    }
   	else
   	    DFLock_Flag = 0;

//频率元件
    if(Frenq_Value > Frenq_Set || Uab < Voltage_Set)	
    {
        NoStartup(ptr); 
        pProtect->pro_reserve4 = TMD_System_Clock;
        pProtect->pro_reserve5 = TMD_System_Clock;
        return;        
    }      

//去干扰
    if(EraseBurr(pProtect))
        return;
	

//电流闭锁元件                   
    if(Ia_Value < NO_CURRENT && Ib_Value < NO_CURRENT && Ic_Value < NO_CURRENT)	
        return;
        
//启动
    if(StartPro(pProtect))
        return;

//时间元件
    if(TimeWait(pProtect,Time_Set)) 
        return;

//动作元件
    pProtect->pro_pickup_flag = 1;
    Qdj();			//跳闸子程序
    Tzj();
    pProtect->pro_reserve5 = TMD_System_Clock - pProtect->pro_reserve5;
    *Charge_Flag = 0; 
    Start_Flag = 0;
    DFLock_Num  = 0;
    DFLock_Flag = 0;    
		    
//报告
    pReport = &LF_Report;
//SOE				    	
    pSoe = &pReport->pro_report_soe;            	  	
   //------------------------------------------------//  
    pSoe->Relative_Time = pProtect->pro_reserve5;
    READ_DEC_TIME(&pSoe->Year);
//    pSoe->Fault_Number = SOENumber++;
//动作值
    pValue = pReport->pro_report_data;
    //------------------------------------------------// 
    pValue -> value_measure     =       Frenq_Value;
    pValue++;
   //------------------------------------------------// 
    pReport->mmi_flag = MMIDISPLAY + MMIPICKUP;
    Fill_Report(pReport);
 
}        

⌨️ 快捷键说明

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