📄 voltage.c
字号:
{
return ;
}
BYTE SetVstatus(BYTE byIndex)
{
if (ram_Data.Utemp[byIndex] < ram_Data.Udown2[byIndex] - ram_Data.U_Error[byIndex]/2)
{
// Print("1111");
ram_Data.Exceed_FLAG[byIndex] = EXCEED_DOWN_STATIC;
}
else if( ram_Data.Utemp[byIndex] >= ram_Data.Udown2[byIndex] - ram_Data.U_Error[byIndex]/2
&& ram_Data.Utemp[byIndex] < ram_Data.Udown2[byIndex] + ram_Data.U_Error[byIndex]/2)
{
// Print("2222");
if (ram_Data.Exceed_FLAG[byIndex] != EXCEED_DOWN_STATIC)
ram_Data.Exceed_FLAG[byIndex] = EXCEED_DOWN_LIMIT;
}
else if (ram_Data.Utemp[byIndex] >= ram_Data.Udown2[byIndex]+ram_Data.U_Error[byIndex]/2
&& ram_Data.Utemp[byIndex] < ram_Data.Udown[byIndex] - ram_Data.U_Error[byIndex]/2)
{
// Print("3333");
ram_Data.Exceed_FLAG[byIndex] = EXCEED_DOWN_LIMIT;
}
else if (ram_Data.Utemp[byIndex] >= (ram_Data.Udown[byIndex] - ram_Data.U_Error[byIndex]/2)
&& ram_Data.Utemp[byIndex] < ram_Data.Udown[byIndex] + ram_Data.U_Error[byIndex]/2)
{
// Print("4444");
if (ram_Data.Exceed_FLAG[byIndex] != EXCEED_DOWN_LIMIT)
ram_Data.Exceed_FLAG[byIndex] = VOLTAGE_REGULAR;
}
else if (ram_Data.Utemp[byIndex] >= (ram_Data.Udown[byIndex] + ram_Data.U_Error[byIndex]/2)
&& ram_Data.Utemp[byIndex] < ram_Data.Uup[byIndex] - ram_Data.U_Error[byIndex]/2)
{
// Print("55555");
ram_Data.Exceed_FLAG[byIndex] = VOLTAGE_REGULAR;
}
else if (ram_Data.Utemp[byIndex] >= (ram_Data.Uup[byIndex] - ram_Data.U_Error[byIndex]/2)
&& ram_Data.Utemp[byIndex] < ram_Data.Uup[byIndex] + ram_Data.U_Error[byIndex]/2)
{
// Print("66666");
if (ram_Data.Exceed_FLAG[byIndex] != VOLTAGE_REGULAR)
ram_Data.Exceed_FLAG[byIndex] = EXCEED_UP_LIMIT;
}
else if (ram_Data.Utemp[byIndex] >= (ram_Data.Uup[byIndex] + ram_Data.U_Error[byIndex]/2)
&& ram_Data.Utemp[byIndex] < ram_Data.Uup2[byIndex] - ram_Data.U_Error[byIndex]/2)
{
// Print("7777");
ram_Data.Exceed_FLAG[byIndex] = EXCEED_UP_LIMIT;
}
else if (ram_Data.Utemp[byIndex] >= ram_Data.Uup2[byIndex] - ram_Data.U_Error[byIndex]/2
&&ram_Data.Utemp[byIndex] < ram_Data.Uup2[byIndex] + ram_Data.U_Error[byIndex]/2)
{
// Print("8888");
if (ram_Data.Exceed_FLAG[byIndex] != EXCEED_UP_LIMIT)
ram_Data.Exceed_FLAG[byIndex] = EXCEED_UP_STATIC;
}
else if (ram_Data.Utemp[byIndex] >= ram_Data.Uup2[byIndex]+ram_Data.U_Error[byIndex]/2)
{
// Print("9999");
ram_Data.Exceed_FLAG[byIndex] = EXCEED_UP_STATIC;
}
return ram_Data.Exceed_FLAG[byIndex];
}
/*判断当前的电压是过压还是失压*/
/*BYTE SetOverLose(BYTE byIndex)
{
if(ram_Data.Utemp[byIndex] < ram_Data.Udown2[byIndex])
{
// Print("55555");
ram_Data.OverLose_Flag[byIndex] = EXCEED_DOWN_STATIC;
}
else if ( ram_Data.Utemp[byIndex] < ram_Data.ULose[byIndex] -ram_Data.U_Error[byIndex]/2)
{ //Print("66666");
ram_Data.OverLose_Flag[byIndex] = LOSE_VOLTAGE; //欠压
}
else if( ram_Data.Utemp[byIndex] >= ram_Data.ULose[byIndex] - ram_Data.U_Error[byIndex]/2
&& ram_Data.Utemp[byIndex] < ram_Data.ULose[byIndex] + ram_Data.U_Error[byIndex]/2
)
{
///Print("77777777");
if(ram_Data.OverLose_Flag[byIndex] != LOSE_VOLTAGE)
ram_Data.OverLose_Flag[byIndex] = VOLTAGE_REGULAR;
}
else if( ram_Data.Utemp[byIndex] >=ram_Data.ULose[byIndex] + ram_Data.U_Error[byIndex]/2
&& ram_Data.Utemp[byIndex] < ram_Data.UOver[byIndex] - ram_Data.U_Error[byIndex]/2
)
{
// Print("000000000000");
ram_Data.OverLose_Flag[byIndex] = VOLTAGE_REGULAR;//正常OVER_VOLTAGE;
}
else if( ram_Data.Utemp[byIndex] >= (ram_Data.UOver[byIndex] - ram_Data.U_Error[byIndex] /2)
&& ram_Data.Utemp[byIndex] < (ram_Data.UOver[byIndex] + ram_Data.U_Error[byIndex] /2)
)
{
// Print("2222");
if(ram_Data.OverLose_Flag[byIndex] != OVER_VOLTAGE)
ram_Data.OverLose_Flag[byIndex] = VOLTAGE_REGULAR;
}
else if( ram_Data.Utemp[byIndex] >=ram_Data.UOver[byIndex] + ram_Data.U_Error[byIndex] /2
)
{ // Print("3333333");
ram_Data.OverLose_Flag[byIndex] = OVER_VOLTAGE; //过压
}
return ram_Data.OverLose_Flag[byIndex];
}
*/
BOOL GetVALUE(DWORD*value, DWORD*Un)
{
BYTE i;
//static int j =0;
if (0 == g_bAdcUpdate_VoltageFlag) return FALSE;
g_bAdcUpdate_VoltageFlag = FALSE;
/*在工程化的处理中,要把额定值Un考虑进去*/
value[0] = (DWORD)( g_sRealVal.wUa/(float)wVOLTAGE_STANDARD[0]/10.0 * Un[0] );
value[1] = (DWORD)( g_sRealVal.wUb/(float)wVOLTAGE_STANDARD[1]/10.0 * Un[1] );
value[2] = (DWORD)( g_sRealVal.wUc/(float)wVOLTAGE_STANDARD[2]/10.0 * Un[2] );
return TRUE;
}
//**************采集/统计/保存数据*****************
void interuptserver(SRestrict *psRestrict)
{
DWORD dwTemp;
INT16 i;
DWORD temp[MAX_LU_NUM], temp1;
SDateTime sTime;
DWORD sec, sec1;
BYTE byTemp;
BYTE diff_sec = 0;
BYTE bySaveFlag = 0;
INT32 iDcTemp;
BYTE w;
GetTime(&sTime);
if (sTime.bySecond == ram_Data.lastSecond)
{
// OSTimeDly(10);
return;
}
if (!GetVALUE(&temp[0], &ram_Data.Un[0]))
{
// TestAdcNoCom();//初始化AD
return;
}
for (i=0; i<MAX_SHOW_LU_NUM; i++)
{
if (ram_Data.Utemp[i] == temp[i]
||temp[i] < 20
||temp[i] > 6000)
{
byErrFlay[i] ++;
if ( (byErrFlay[i]+1) % 180 == 0 )
{
MUST_INITIAL_5460 = TRUE;
}
}
else byErrFlay[i] = 0;
}
byTemp = 0;
for (i=0; i<MAX_SHOW_LU_NUM; i++)
{
if (byErrFlay[i] > 210)
byTemp ++;
}
if (byTemp >= MAX_SHOW_LU_NUM)
{
// FeedDog(0, 1);
OSTimeDly(10);
}
TransformerState(psRestrict, &sTime); //进行配变的统计 一秒钟一次
//将得到的瞬时RMS值赋值给内存变量,并修改相应状态
//判断最大值最小值等是否修改
for (i=0; i<MAX_SHOW_LU_NUM; i++)
{
ram_Data.stat_time[i].dwStateValue_d +=temp[i];
ram_Data.stat_time[i].dwStateNum_d ++;
ram_Data.stat_time[i].dwStateValue_m +=temp[i];
ram_Data.stat_time[i].dwStateNum_m ++;
}
ram_Data.dwDcValue_d += g_sRealVal.iDCValue;
ram_Data.dwDcValue_m += g_sRealVal.iDCValue;
ram_Data.lastSecond = sTime.bySecond; //为下次循环做准备
//***********天统计***************
sec = GetSecondSinceEpoch(&sTime);
bySaveFlag = 0;
for (i=0; i<MAX_SHOW_LU_NUM; i++)
{
sec1 = GetSecondSinceEpoch(&ram_Data.sLastSamTime);
if ((sec >= sec1+60 || sec < sec1) && (i==0))// && sec1 > 946080000)
{
bySaveFlag = 1;
}
if(bySaveFlag == 1)
{
if(i == 0 )
{
iDcTemp = ram_Data.dwDcValue_d / ram_Data.stat_time[0].dwStateNum_d;
ram_Data.dwDcValue_d = 0;
}
ram_Data.Utemp[i] = ram_Data.stat_time[i].dwStateValue_d / ram_Data.stat_time[i].dwStateNum_d;
if(ram_Data.stat_time[i].dwStateNum_d ==0)
ram_Data.Utemp[i] =0;
ram_Data.stat_time[i].dwStateValue_d = 0;
ram_Data.stat_time[i].dwStateNum_d = 0;
byTemp = SetVstatus(i);
if(byTemp == EXCEED_DOWN_STATIC)//欠压
{
g_sVoltStat.dwLoseT[i] ++;
}
else if(byTemp == EXCEED_UP_STATIC)//过压
{
g_sVoltStat.dwOverT[i] ++;
}
else if (byTemp == EXCEED_UP_LIMIT)
{
g_sVoltStat.dwUperT[i] ++;
}
else if (byTemp == EXCEED_DOWN_LIMIT)
{
g_sVoltStat.dwLower[i] ++;
}
else if (byTemp == VOLTAGE_REGULAR)
{
g_sVoltStat.dwGoodT[i] ++;
}
if (byTemp == EXCEED_UP_LIMIT || byTemp == VOLTAGE_REGULAR || byTemp==EXCEED_DOWN_LIMIT)
{
if (ram_Data.sLastSamTime.byMonth == sTime.byMonth &&
ram_Data.sLastSamTime.wYear == sTime.wYear &&
ram_Data.sLastSamTime.byDay == sTime.byDay
)
{ //××××天统计
if (ram_Data.Utemp[i] > g_sVoltStat.dwMaxU[i] || g_sVoltStat.dwMaxU[i]== 0)
{
g_sVoltStat.dwMaxU[i] = ram_Data.Utemp[i];
g_sVoltStat.dwMaxT[i] = sTime.byDay;
g_sVoltStat.dwMaxT[i] <<= 8;
g_sVoltStat.dwMaxT[i] |= sTime.byHour;
g_sVoltStat.dwMaxT[i] <<= 8;
g_sVoltStat.dwMaxT[i] |= sTime.byMinute;
g_sTransFormerState.dwMaxU[i] = ram_Data.Utemp[i];
g_sTransFormerState.dwMaxUT[i] = g_sVoltStat.dwMaxT[i];
}
if (ram_Data.Utemp[i]< g_sVoltStat.dwMinU[i] || g_sVoltStat.dwMinU[i] == 0)
{
g_sVoltStat.dwMinU[i] = ram_Data.Utemp[i];
g_sVoltStat.dwMinT[i] = sTime.byDay;
g_sVoltStat.dwMinT[i] <<= 8;
g_sVoltStat.dwMinT[i] |= sTime.byHour;
g_sVoltStat.dwMinT[i] <<= 8;
g_sVoltStat.dwMinT[i] |= sTime.byMinute;
g_sTransFormerState.dwMinU[i] = g_sVoltStat.dwMinU[i];
g_sTransFormerState.dwMinUT[i] = g_sVoltStat.dwMinT[i];
}
}
}
//配变统计的
g_sTransFormerState.dwOverUT[i] = g_sVoltStat.dwOverT[i];
g_sTransFormerState.dwLoseUT[i] = g_sVoltStat.dwLoseT[i];
if (ram_Data.Utemp[i] > ram_Data.Udown2[i] && ram_Data.Utemp[i] < ram_Data.Uup2[i])
{ // ××天
g_sVoltageCompute.dwTimeCnt[i] ++;
g_sVoltageCompute.dwU[i] += ram_Data.Utemp[i];
g_sVoltStat.dwAvgU[i] = g_sVoltageCompute.dwU[i] / g_sVoltageCompute.dwTimeCnt[i];
}
//*********对直流量的统计***********
if(i == 0)
{
if(iDcTemp < psRestrict->wAnalogDCMin)
{
g_sVoltStat.dwDCLowerT ++;
}
else if(iDcTemp > psRestrict->wAnalogDCMin)
{
g_sVoltStat.dwDCUperT ++;
}
if(iDcTemp > g_sVoltStat.dwDCMax || g_sVoltStat.dwDCMax==0)
{
g_sVoltStat.dwDCMaxT = iDcTemp;
g_sVoltStat.dwDCMaxT = sTime.byDay;
g_sVoltStat.dwDCMaxT <<= 8;
g_sVoltStat.dwDCMaxT |= sTime.byHour;
g_sVoltStat.dwDCMaxT <<= 8;
g_sVoltStat.dwDCMaxT |= sTime.byMinute;
}
if(iDcTemp <g_sVoltStat.dwDCMin || g_sVoltStat.dwDCMin==0)
{
g_sVoltStat.dwDCMinT = iDcTemp;
g_sVoltStat.dwDCMinT = sTime.byDay;
g_sVoltStat.dwDCMinT <<= 8;
g_sVoltStat.dwDCMinT |= sTime.byHour;
g_sVoltStat.dwDCMinT <<= 8;
g_sVoltStat.dwDCMinT |= sTime.byMinute;
}
}
// 计算合格率
g_sVoltRate.dwUperRate[i] = g_sVoltStat.dwUperT[i] *10000 / g_sVoltageCompute.dwTimeCnt[i];
g_sVoltRate.dwLowRate[i] = g_sVoltStat.dwLower[i] *10000 / g_sVoltageCompute.dwTimeCnt[i];
g_sVoltRate.dwGoodRate[i] = g_sVoltStat.dwGoodT[i] *10000 / g_sVoltageCompute.dwTimeCnt[i];
}
if(bySaveFlag ==1 && i==0)
{
//判断是否到保存 天 数据的时间
if ( sTime.byDay != ram_Data.sLastSamTime.byDay
|| sTime.wYear != ram_Data.sLastSamTime.wYear
|| sTime.byMonth != ram_Data.sLastSamTime.byMonth
)
{
SaveDayData(&g_sVoltStat, &ram_Data.sLastSamTime,&sTime);//保存天电压合格数据
SaveTransData(&ram_Data.sLastSamTime,&sTime);//保存配变统计的数据
g_sVoltageCompute.dwTimeCnt[0] = 0 ;
g_sVoltageCompute.dwTimeCnt[1] = 0 ;
g_sVoltageCompute.dwTimeCnt[2] = 0 ;
g_sVoltageCompute.dwU[0] = 0 ;
g_sVoltageCompute.dwU[1] = 0 ;
g_sVoltageCompute.dwU[2] = 0 ;
}
memcpy(&ram_Data.sLastSamTime, &sTime, sizeof(SDateTime));
g_sVoltageCompute.sLastSamTime.dwYear = sTime.wYear;
g_sVoltageCompute.sLastSamTime.dwMonth = sTime.byMonth;
g_sVoltageCompute.sLastSamTime.dwDay = sTime.byDay;
g_sVoltageCompute.sLastSamTime.dwHour = sTime.byHour;
g_sVoltageCompute.sLastSamTime.dwMinute = sTime.byMinute;
g_sVoltageCompute.sLastSamTime.dwSecond = sTime.bySecond;
}
}
//***********月统计***************
sec = GetSecondSinceEpoch(&sTime);
bySaveFlag = 0;
for (i=0; i<MAX_SHOW_LU_NUM; i++)
{
sec1 = GetSecondSinceEpoch(&ram_Data.sMonthLastTime);
if ((sec >= sec1+60 || sec < sec1) && (i==0))// && sec1 > 946080000)
{
bySaveFlag = 1;
}
if(bySaveFlag == 1)
{
if(i == 0)
{
iDcTemp = ram_Data.dwDcValue_m / ram_Data.stat_time[0].dwStateNum_m;
ram_Data.dwDcValue_m = 0;
}
ram_Data.Utemp[i] = ram_Data.stat_time[i].dwStateValue_m / ram_Data.stat_time[i].dwStateNum_m;
if(ram_Data.stat_time[i].dwStateNum_m ==0)
ram_Data.Utemp[i] =0;
ram_Data.stat_time[i].dwStateValue_m = 0;
ram_Data.stat_time[i].dwStateNum_m = 0;
byTemp = SetVstatus(i);
if(byTemp == EXCEED_DOWN_STATIC)//欠压
{
g_sVoltStat_m.dwLoseT[i] ++;
}
else if(byTemp == EXCEED_UP_STATIC)//过压
{
g_sVoltStat_m.dwOverT[i] ++;
}
else if (byTemp == EXCEED_UP_LIMIT)
{
g_sVoltStat_m.dwUperT[i] ++;
}
else if (byTemp == EXCEED_DOWN_LIMIT)
{
g_sVoltStat_m.dwLower[i] ++;
}
else if (byTemp == VOLTAGE_REGULAR)
{
g_sVoltStat_m.dwGoodT[i] ++;
}
if (byTemp == EXCEED_UP_LIMIT || byTemp == VOLTAGE_REGULAR || byTemp==EXCEED_DOWN_LIMIT)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -