求解Um_01的定义
#pragma CODE_SECTION(YC_trace,"UserFuncs")
void YC_trace(void) //调档延迟
{
int i;
float a;
float Um[10]={0};
if(Flagtimer_yc==1)
{
for(i=0;i<10;i++)
{
AD_64();
Calc(5);
if(u01_rms>U_Fault)
return;
Um[i] = u01_rms;
}
bubble_sort(Um,10); //冒泡法由小到大排列
for(i=3;i<8;i++) //取其中5个值的和
{
Um_02 = Um_02+Um[i];
}
a=fabs(Um_02-Um_01);
if(Flag_U0==0)
{
if((a/Um_01)>0.25&&Um_01>150&&Um_02>150&&(timer_trace>=360000)) //每个周波浮动10%,防止电压浮动太频繁,最多一小时跟踪一次。
{
Flag_U0=1;
Flag_U0_timer=timer_trace;
}
else
Flagtimer_yc=0;
Um_01 = Um_02; //不论浮动是否超出阈值,都要更新Um_01
Um_02=0;
}
else
{
if((a/Um_01)>0.25&&Um_01>150&&Um_02>150&&(timer_trace>=(Flag_U0_timer+180000))) //若浮动后30分钟又出现浮动继续等30分钟。
{
Flag_U0=1;
Flag_U0_timer=timer_trace;
}
if((a/Um_01)<0.25&&(timer_trace>=(Flag_U0_timer+180000)))//如果30分钟后不浮动,则跟踪
{
Flag_Trace=1;
Flag_U0=0;
}
Flagtimer_yc=0;
Um_01 = Um_02; //不论浮动是否超出阈值,都要更新Um_01
Um_02=0;
}
}//if(Flagtimer_yc==1)
}