936 lines
36 KiB
C
Raw Normal View History

2025-06-26 15:28:05 +08:00
#include "..\h\predefine.h"
#ifdef _tyck_c_
#undef _tyck_c_
/*SYS relational*/
#include <math.h>
#include "stdio.h"
#include "..\h\lib.h"
#include "..\h\variable.h"
#include "..\h\tyck.h"
#include "..\h\predefine.h"
#include "..\h\com_lib.h"
#include ".\inc\analog_tyck.h"
#include ".\inc\parameter_tyck.h"
extern void Reset_Init(void);
extern void PowerInitData(void);
void timer_interrupt(void);
void tyck_main(void);
void TimerManage(void);
void JiSuanUI(void); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ
void ComputeTemperature(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void JiSuanMeasureValue(void); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
void CWWDProtectUnit(NoDirectProtectItemType *CWWDYJ); //<2F>¶ȸ澯
void CheckQDKC();
void SaveLoadWave_tyck(void);
unsigned int TestCount = 0; //
extern void digit_Polling(void);//luoyang add
void TestShow(void); //
extern void gse_handle();
extern void SendGetTimeCommand();
extern void block_CheckYaoXin();
extern void CopyYaoXinBianWei();
extern void digit_mainTask();
extern void CWWDProtectUnit(NoDirectProtectItemType *CWWDYJ);
extern void CheckIOYaoXinEx(unsigned char IOType,unsigned char Index,unsigned int yxStart);
/**************************************************
* void timer_interrupt(void)
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><EFBFBD>20ms/24=5ms/6
* <EFBFBD><EFBFBD>ʷ<EFBFBD><EFBFBD>
*************************************************/
void timer_interrupt(void)
{
static volatile int intFlag = 0;
ClockTick(&SysTime);
ModiClock();
if(0 != intFlag)
{
printf("ms int is not return\n");
return;
}
intFlag = 1;
#ifdef CCES_ADI
execute_as_subscriber();
#endif
if(Init_IP == TEST_START) //<2F><><EFBFBD>β<EFBFBD><CEB2><EFBFBD><EFBFBD>жϷ<D0B6><CFB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
//TimerManage(); //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//checkYaoXinObject(); //
digit_Polling(); // luoyang add
//changeFourierVarType();//
CheckAnalogZcp(&ZcpSet);
SaveWave(); //<2F><><EFBFBD><EFBFBD>4<EFBFBD>ܲ<EFBFBD>ʵʱ<CAB5><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SaveLoadWave_tyck(); //<2F><><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>
CheckChuanDongTest(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//JiSuanUI(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ
#ifdef DEVICE_TYPE_CONVENTIONAL
ComputeTemperature(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#endif
if(LS_TR == TYCK_LS)
{
block_CheckYaoXin();
}
if(!(CheckValue & SET_ERROR_BIT))
{
CheckRmote();
#ifdef TYCK_HK_FUNC
CheckQDKC();
#endif
CWWDProtectUnit(&TYCK_CWWD1YJ); //<2F><EFBFBD>1<EFBFBD>澯Ԫ<E6BEAF><D4AA>
CWWDProtectUnit(&TYCK_CWWD2YJ); //<2F><EFBFBD>2<EFBFBD>澯Ԫ<E6BEAF><D4AA>
CWWDProtectUnit(&TYCK_CWWD3YJ); //<2F><EFBFBD>3<EFBFBD>澯Ԫ<E6BEAF><D4AA>
CWWDProtectUnit(&TYCK_CWWD4YJ); //<2F><EFBFBD>4<EFBFBD>澯Ԫ<E6BEAF><D4AA>
}
TimerManage(); //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD>ֵ<EFBFBD>ŵ<EFBFBD><C5B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>У<EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD>ķ<EFBFBD><C4B7><EFBFBD><EFBFBD>ʽ<EEB7BD><CABD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>־<EFBFBD><D6BE>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
} //end of if(Init_IP==TEST_START)
//gse_handle();
intFlag = 0;
}
void SaveLoadWave_tyck(void)
{
//<2F><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD><CAB5>
unsigned int i, j;
unsigned int SampleIP,digitalData;
unsigned char Ch;
int readIP;
switch(LuBoValue.LB_IP)
{
case LB_LOAD_WAVE_START: //<2F><><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>ʼ
if(DigitalWaveChannelSet.Number > 0)
{
digitalData = GetDigitalWaveData();
//printf("pDigitalWave->Buffer[Key] = %d",pDigitalWave->Buffer[Key].Number);
}
if(LuBoValue.Count < LuBoValue.Length)
{
//<2F><><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>δ<EFBFBD><EFBFBD><EAA3AC><EFBFBD><EFBFBD><E6B2A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SampleIP = LuBoValue.Count;
//for(i = 0; i < 4; i++)
for(i = 0; i < LoadWave.LengthOfNewData; i++)
{
readIP = (LoadWave.IP_last + i) % (REALWAVE_LEN);
for(j = 0; j < MemPtrSet.pWave->ChannelNum; j++)
{
MemPtrSet.pWave->ChannelData[j].Data[SampleIP] = LoadWave.Buffer[j][readIP]; //<2F><><EFBFBD><EFBFBD><E6B2A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(AD_MODE_I ==TYCK_ADType)
{
if((j==TYCK_I7_WAVE)||(j==TYCK_I8_WAVE)||(j==TYCK_I9_WAVE)||(j==TYCK_I10_WAVE))
{
MemPtrSet.pWave->ChannelData[j].Data[SampleIP]=0;
}
}
else
{
if((j==TYCK_U1_WAVE)||(j==TYCK_U2_WAVE))
{
MemPtrSet.pWave->ChannelData[j].Data[SampleIP]=0;
}
}
MemPtrSet.pWave->ChannelData[j].Length = SampleIP + 1;
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>
if(DigitalWaveChannelSet.Number > 0)
{
//pDigitalWave->Data[SampleIP] = digitalData;
MemPtrSet.pWave->DigitalData.Data[SampleIP] = digitalData;
}
SampleIP++;
LuBoValue.Count = SampleIP;
if(SampleIP >= LuBoValue.Length) //¼<><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(0 == MemPtrSet.pWave->ChannelNum && DigitalWaveChannelSet.Number > 0)
{
MemPtrSet.pWave->ChannelData[0].Length = LuBoValue.Length; //<2F><><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
LuBoValue.LB_IP = LB_LOAD_WAVE_END; //<2F><><EFBFBD>ø<EFBFBD><C3B8><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
return;
}
} //end for(i=0;i<4;i++)
} //end if(.....
else
{
//<2F><><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF>ͨ<EFBFBD><CDA8>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>
for(j = 0; j < MemPtrSet.pWave->ChannelNum; j++) MemPtrSet.pWave->ChannelData[j].Length = LuBoValue.Length; //<2F><><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(0 == MemPtrSet.pWave->ChannelNum && DigitalWaveChannelSet.Number > 0)
{
MemPtrSet.pWave->ChannelData[0].Length = LuBoValue.Length; //<2F><><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
LuBoValue.LB_IP = LB_LOAD_WAVE_END; //<2F><><EFBFBD>ø<EFBFBD><C3B8><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
}
break;
case LB_LOAD_WAVE_END: //<2F><><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//<2F>ȴ<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7>ͣ<EFBFBD><CDA3><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>ݷ<EFBFBD><DDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɺ󣬽<C9BA><F3A3ACBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD>־LuBoValue.LB_IP<49><50>ֵ<EFBFBD>޸<EFBFBD>ΪLB_LOAD_WAVE_CLOSE
if(MovDataToASDU(&Ch, 0, PROTOCOL_DATA_TYPE_LOADWAVE, LuBoValue.SourceAdd) == SUCCESS) LuBoValue.LB_IP = LB_LOAD_WAVE_CLOSE;
break;
case LB_LOAD_WAVE_CLOSE: //<2F><><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
break;
default:
break;
}//endcase
}
void JiSuanUI(void)
{
//<2F><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Чֵ<D0A7><D6B5>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB6AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD>
float FS_temp, FC_temp;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Чֵ
//<2F><><EFBFBD><EFBFBD>1
FS_temp = ChannelValue[CH_TYCK_I1].YouXiaoZhi[JiBo].FS;
FC_temp = ChannelValue[CH_TYCK_I1].YouXiaoZhi[JiBo].FC;
ChannelValue[CH_TYCK_I1].YouXiaoZhi[JiBo].Analog.Value = sqrt(FS_temp * FS_temp + FC_temp * FC_temp);
//<2F><><EFBFBD><EFBFBD>2
FS_temp = ChannelValue[CH_TYCK_I2].YouXiaoZhi[JiBo].FS;
FC_temp = ChannelValue[CH_TYCK_I2].YouXiaoZhi[JiBo].FC;
ChannelValue[CH_TYCK_I2].YouXiaoZhi[JiBo].Analog.Value = sqrt(FS_temp * FS_temp + FC_temp * FC_temp);
//<2F><><EFBFBD><EFBFBD>3
FS_temp = ChannelValue[CH_TYCK_I3].YouXiaoZhi[JiBo].FS;
FC_temp = ChannelValue[CH_TYCK_I3].YouXiaoZhi[JiBo].FC;
ChannelValue[CH_TYCK_I3].YouXiaoZhi[JiBo].Analog.Value = sqrt(FS_temp * FS_temp + FC_temp * FC_temp);
//<2F><><EFBFBD><EFBFBD>4
FS_temp = ChannelValue[CH_TYCK_I4].YouXiaoZhi[JiBo].FS;
FC_temp = ChannelValue[CH_TYCK_I4].YouXiaoZhi[JiBo].FC;
ChannelValue[CH_TYCK_I4].YouXiaoZhi[JiBo].Analog.Value = sqrt(FS_temp * FS_temp + FC_temp * FC_temp);
//<2F><><EFBFBD><EFBFBD>5
FS_temp = ChannelValue[CH_TYCK_I5].YouXiaoZhi[JiBo].FS;
FC_temp = ChannelValue[CH_TYCK_I5].YouXiaoZhi[JiBo].FC;
ChannelValue[CH_TYCK_I5].YouXiaoZhi[JiBo].Analog.Value = sqrt(FS_temp * FS_temp + FC_temp * FC_temp);
//<2F><><EFBFBD><EFBFBD>6
FS_temp = ChannelValue[CH_TYCK_I6].YouXiaoZhi[JiBo].FS;
FC_temp = ChannelValue[CH_TYCK_I6].YouXiaoZhi[JiBo].FC;
ChannelValue[CH_TYCK_I6].YouXiaoZhi[JiBo].Analog.Value = sqrt(FS_temp * FS_temp + FC_temp * FC_temp);
//<2F><>ѹ1
FS_temp = ChannelValue[CH_TYCK_U1].YouXiaoZhi[JiBo].FS;
FC_temp = ChannelValue[CH_TYCK_U1].YouXiaoZhi[JiBo].FC;
ChannelValue[CH_TYCK_U1].YouXiaoZhi[JiBo].Analog.Value = sqrt(FS_temp * FS_temp + FC_temp * FC_temp);
//<2F><>ѹ2
FS_temp = ChannelValue[CH_TYCK_U2].YouXiaoZhi[JiBo].FS;
FC_temp = ChannelValue[CH_TYCK_U2].YouXiaoZhi[JiBo].FC;
ChannelValue[CH_TYCK_U2].YouXiaoZhi[JiBo].Analog.Value = sqrt(FS_temp * FS_temp + FC_temp * FC_temp);
//20200305 add by linwei <20><><EFBFBD><EFBFBD><34><C2B7><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>7
FS_temp = ChannelValue[CH_TYCK_I7].YouXiaoZhi[JiBo].FS;
FC_temp = ChannelValue[CH_TYCK_I7].YouXiaoZhi[JiBo].FC;
ChannelValue[CH_TYCK_I7].YouXiaoZhi[JiBo].Analog.Value = sqrt(FS_temp * FS_temp + FC_temp * FC_temp);
//<2F><><EFBFBD><EFBFBD>8
FS_temp = ChannelValue[CH_TYCK_I8].YouXiaoZhi[JiBo].FS;
FC_temp = ChannelValue[CH_TYCK_I8].YouXiaoZhi[JiBo].FC;
ChannelValue[CH_TYCK_I8].YouXiaoZhi[JiBo].Analog.Value = sqrt(FS_temp * FS_temp + FC_temp * FC_temp);
//<2F><><EFBFBD><EFBFBD>9
FS_temp = ChannelValue[CH_TYCK_I9].YouXiaoZhi[JiBo].FS;
FC_temp = ChannelValue[CH_TYCK_I9].YouXiaoZhi[JiBo].FC;
ChannelValue[CH_TYCK_I9].YouXiaoZhi[JiBo].Analog.Value = sqrt(FS_temp * FS_temp + FC_temp * FC_temp);
//<2F><><EFBFBD><EFBFBD>10
FS_temp = ChannelValue[CH_TYCK_I10].YouXiaoZhi[JiBo].FS;
FC_temp = ChannelValue[CH_TYCK_I10].YouXiaoZhi[JiBo].FC;
ChannelValue[CH_TYCK_I10].YouXiaoZhi[JiBo].Analog.Value = sqrt(FS_temp * FS_temp + FC_temp * FC_temp);
}
void ComputeTemperature()
{
//<2F><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float I1, T1, K1; //<2F><EFBFBD>1 <20>¶Ȼ<C2B6>׼ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׼ <20><><EFBFBD><EFBFBD>б<EFBFBD><D0B1>
float I2, T2, K2; //<2F><EFBFBD>2 <20>¶Ȼ<C2B6>׼ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׼ <20><><EFBFBD><EFBFBD>б<EFBFBD><D0B1>
float I3, T3, K3; //<2F><EFBFBD>3 <20>¶Ȼ<C2B6>׼ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׼ <20><><EFBFBD><EFBFBD>б<EFBFBD><D0B1>
float I4, T4, K4; //<2F><EFBFBD>4 <20>¶Ȼ<C2B6>׼ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׼ <20><><EFBFBD><EFBFBD>б<EFBFBD><D0B1>
float Itemp1, Itemp2 ,Itemp3, Itemp4;
I1 = TYCK_WD1ISet;
T1 = TYCK_WD1TSet;
K1 = TYCK_WD1KSet;
I2 = TYCK_WD2ISet;
T2 = TYCK_WD2TSet;
K2 = TYCK_WD2KSet;
I3 = TYCK_WD3ISet;
T3 = TYCK_WD3TSet;
K3 = TYCK_WD3KSet;
I4 = TYCK_WD4ISet;
T4 = TYCK_WD4TSet;
K4 = TYCK_WD4KSet;
//20150416 luoyang modi <20>¶Ȳ<C2B6><C8B2><EFBFBD><EFBFBD><EFBFBD>ȡƽ<C8A1><C6BD>ֵ
//Itemp1 = (float)ChannelValue[CH_TYCK_WD1].SampleValue_Digit[ChannelValue[CH_TYCK_WD1].FSCount];
//Itemp2 = (float)ChannelValue[CH_TYCK_WD2].SampleValue_Digit[ChannelValue[CH_TYCK_WD2].FSCount];
//Itemp3 = (float)ChannelValue[CH_TYCK_WD3].SampleValue_Digit[ChannelValue[CH_TYCK_WD3].FSCount];
//Itemp4 = (float)ChannelValue[CH_TYCK_WD4].SampleValue_Digit[ChannelValue[CH_TYCK_WD4].FSCount];
//printf("WD1 smp val = %d\n",ChannelValue[CH_TYCK_WD1].SampleValue_Digit[ChannelValue[CH_TYCK_WD1].FSCount]);
//printf("WD2 smp va2 = %d\n",ChannelValue[CH_TYCK_WD2].SampleValue_Digit[ChannelValue[CH_TYCK_WD2].FSCount]);
//printf("WD3 smp va3 = %d\n",ChannelValue[CH_TYCK_WD3].SampleValue_Digit[ChannelValue[CH_TYCK_WD3].FSCount]);
//printf("WD4 smp va4 = %d\n",ChannelValue[CH_TYCK_WD4].SampleValue_Digit[ChannelValue[CH_TYCK_WD4].FSCount]);
if(WD_SOURCE_GSE != ChannelValue[CH_TYCK_WD1].source)
{
//printf("ChannelValue[CH_TYCK_WD1].source=%d",ChannelValue[CH_TYCK_WD1].source);
Itemp1 = SmpValueSet[CH_TYCK_WD1].averageValue;
//printf("Itemp1=%f",Itemp1);
ChannelValue[CH_TYCK_WD1].YouXiaoZhi[JiBo].Analog.Value = K1 * (Itemp1 - I1) + T1; //<2F><EFBFBD>1
}
if(WD_SOURCE_GSE != ChannelValue[CH_TYCK_WD2].source)
{
Itemp2 = SmpValueSet[CH_TYCK_WD2].averageValue;
ChannelValue[CH_TYCK_WD2].YouXiaoZhi[JiBo].Analog.Value = K2 * (Itemp2 - I2) + T2; //<2F><EFBFBD>2
}
if(WD_SOURCE_GSE != ChannelValue[CH_TYCK_WD3].source)
{
Itemp3 = SmpValueSet[CH_TYCK_WD3].averageValue;
ChannelValue[CH_TYCK_WD3].YouXiaoZhi[JiBo].Analog.Value = K3 * (Itemp3 - I3) + T3; //<2F><EFBFBD>3
}
if(WD_SOURCE_GSE != ChannelValue[CH_TYCK_WD4].source)
{
Itemp4 = SmpValueSet[CH_TYCK_WD4].averageValue;
ChannelValue[CH_TYCK_WD4].YouXiaoZhi[JiBo].Analog.Value = K4 * (Itemp4 - I4) + T4; //<2F><EFBFBD>4
}
}
void TimerManage(void)
{
//<2F><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5>:<3A><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
MeasureSendDelay++;
if(DelayTime != 0) DelayTime++; //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(RemoteValue.DelayTime != 0) RemoteValue.DelayTime++; //ң<>ؼ<EFBFBD>ʱ<EFBFBD><CAB1>
if(ChuanDongTest.TestDelay!=0) ChuanDongTest.TestDelay++;
RecordChuKouSoe2(&TYCK_CWWD1YJ, 1);
RecordChuKouSoe2(&TYCK_CWWD2YJ, 1);
RecordChuKouSoe2(&TYCK_CWWD3YJ, 1);
RecordChuKouSoe2(&TYCK_CWWD4YJ, 1);
}
void JiSuanMeasureValue(void)
{
//<2F><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>
unsigned int i;
//Buffer[0...9]:Ϊһ<CEAA><D2BB>ֵ<EFBFBD><D6B5>Buffer[10...19]<5D><>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>ֵ
if(DisplayMode == SETVALUE_MODE_1)
{
//<2F><>ʾģʽΪһ<CEAA><D2BB>ֵ
//һ<><D2BB>ֵ
//<2F><><EFBFBD><EFBFBD>1
//MeasureValue.Buffer[0].Value = ChannelValue[CH_TYCK_I1].YouXiaoZhi[JiBo].Analog.Value;
MeasureValue.Buffer[0].Value = ChannelValue[CH_TYCK_I1].rms.Value;
MeasureValue.Buffer[0].Quality = ChannelValue[CH_TYCK_I1].Quality;
//<2F><><EFBFBD><EFBFBD>2
//MeasureValue.Buffer[1].Value = ChannelValue[CH_TYCK_I2].YouXiaoZhi[JiBo].Analog.Value;
MeasureValue.Buffer[1].Value = ChannelValue[CH_TYCK_I2].rms.Value;
MeasureValue.Buffer[1].Quality = ChannelValue[CH_TYCK_I2].Quality;
//<2F><><EFBFBD><EFBFBD>3
//MeasureValue.Buffer[2].Value = ChannelValue[CH_TYCK_I3].YouXiaoZhi[JiBo].Analog.Value;
MeasureValue.Buffer[2].Value = ChannelValue[CH_TYCK_I3].rms.Value;
MeasureValue.Buffer[2].Quality = ChannelValue[CH_TYCK_I3].Quality;
//<2F><><EFBFBD><EFBFBD>4
//MeasureValue.Buffer[3].Value = ChannelValue[CH_TYCK_I4].YouXiaoZhi[JiBo].Analog.Value;
MeasureValue.Buffer[3].Value = ChannelValue[CH_TYCK_I4].rms.Value;
MeasureValue.Buffer[3].Quality = ChannelValue[CH_TYCK_I4].Quality;
//<2F><><EFBFBD><EFBFBD>5
//MeasureValue.Buffer[4].Value = ChannelValue[CH_TYCK_I5].YouXiaoZhi[JiBo].Analog.Value;
MeasureValue.Buffer[4].Value = ChannelValue[CH_TYCK_I5].rms.Value;
MeasureValue.Buffer[4].Quality = ChannelValue[CH_TYCK_I5].Quality;
//<2F><><EFBFBD><EFBFBD>6
//MeasureValue.Buffer[5].Value = ChannelValue[CH_TYCK_I6].YouXiaoZhi[JiBo].Analog.Value;
MeasureValue.Buffer[5].Value = ChannelValue[CH_TYCK_I6].rms.Value;
MeasureValue.Buffer[5].Quality = ChannelValue[CH_TYCK_I6].Quality;
//20200305 add by linwei <20><><EFBFBD><EFBFBD><34><C2B7><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>7
//MeasureValue.Buffer[6].Value = ChannelValue[CH_TYCK_I7].YouXiaoZhi[JiBo].Analog.Value;
MeasureValue.Buffer[6].Value = ChannelValue[CH_TYCK_I7].rms.Value;
MeasureValue.Buffer[6].Quality = ChannelValue[CH_TYCK_I7].Quality;
//<2F><><EFBFBD><EFBFBD>8
//MeasureValue.Buffer[7].Value = ChannelValue[CH_TYCK_I8].YouXiaoZhi[JiBo].Analog.Value;
MeasureValue.Buffer[7].Value = ChannelValue[CH_TYCK_I8].rms.Value;
MeasureValue.Buffer[7].Quality = ChannelValue[CH_TYCK_I8].Quality;
//<2F><><EFBFBD><EFBFBD>9
//MeasureValue.Buffer[8].Value = ChannelValue[CH_TYCK_I9].YouXiaoZhi[JiBo].Analog.Value;
MeasureValue.Buffer[8].Value = ChannelValue[CH_TYCK_I9].rms.Value;
MeasureValue.Buffer[8].Quality = ChannelValue[CH_TYCK_I9].Quality;
//<2F><><EFBFBD><EFBFBD>10
//MeasureValue.Buffer[9].Value = ChannelValue[CH_TYCK_I10].YouXiaoZhi[JiBo].Analog.Value;
MeasureValue.Buffer[9].Value = ChannelValue[CH_TYCK_I10].rms.Value;
MeasureValue.Buffer[9].Quality = ChannelValue[CH_TYCK_I10].Quality;
//<2F><>ѹ1
//MeasureValue.Buffer[10].Value = ChannelValue[CH_TYCK_U1].YouXiaoZhi[JiBo].Analog.Value;
MeasureValue.Buffer[10].Value = ChannelValue[CH_TYCK_U1].rms.Value;
MeasureValue.Buffer[10].Quality = ChannelValue[CH_TYCK_U1].Quality;
//<2F><>ѹ2
//MeasureValue.Buffer[11].Value = ChannelValue[CH_TYCK_U2].YouXiaoZhi[JiBo].Analog.Value;
MeasureValue.Buffer[11].Value = ChannelValue[CH_TYCK_U2].rms.Value;
MeasureValue.Buffer[11].Quality = ChannelValue[CH_TYCK_U2].Quality;
//<2F><EFBFBD>1
MeasureValue.Buffer[12].Value = ChannelValue[CH_TYCK_WD1].YouXiaoZhi[JiBo].Analog.Value;
//<2F><EFBFBD>2
MeasureValue.Buffer[13].Value = ChannelValue[CH_TYCK_WD2].YouXiaoZhi[JiBo].Analog.Value;
//<2F><EFBFBD>3
MeasureValue.Buffer[14].Value = ChannelValue[CH_TYCK_WD3].YouXiaoZhi[JiBo].Analog.Value;
//<2F><EFBFBD>4
MeasureValue.Buffer[15].Value = ChannelValue[CH_TYCK_WD4].YouXiaoZhi[JiBo].Analog.Value;
if(AD_MODE_I ==TYCK_ADType)
{
MeasureValue.Buffer[6].Value = 0;
MeasureValue.Buffer[7].Value = 0;
MeasureValue.Buffer[8].Value = 0;
MeasureValue.Buffer[9].Value = 0;
}
else
{
MeasureValue.Buffer[10].Value=0;
MeasureValue.Buffer[11].Value=0;
MeasureValue.Buffer[12].Value=0;
MeasureValue.Buffer[13].Value=0;
MeasureValue.Buffer[14].Value=0;
MeasureValue.Buffer[15].Value=0;
}
//<2F><><EFBFBD><EFBFBD>ֵ
//<2F><><EFBFBD><EFBFBD>1
MeasureValue.Buffer[16].Value = MeasureValue.Buffer[0].Value / ChannelValue[CH_TYCK_I1].BianBi;
MeasureValue.Buffer[16].Quality = MeasureValue.Buffer[0].Quality;
//<2F><><EFBFBD><EFBFBD>2
MeasureValue.Buffer[17].Value = MeasureValue.Buffer[1].Value / ChannelValue[CH_TYCK_I2].BianBi;
MeasureValue.Buffer[17].Quality = MeasureValue.Buffer[1].Quality;
//<2F><><EFBFBD><EFBFBD>3
MeasureValue.Buffer[18].Value = MeasureValue.Buffer[2].Value / ChannelValue[CH_TYCK_I3].BianBi;
MeasureValue.Buffer[18].Quality = MeasureValue.Buffer[2].Quality;
//<2F><><EFBFBD><EFBFBD>4
MeasureValue.Buffer[19].Value = MeasureValue.Buffer[3].Value / ChannelValue[CH_TYCK_I4].BianBi;
MeasureValue.Buffer[19].Quality = MeasureValue.Buffer[3].Quality;
//<2F><><EFBFBD><EFBFBD>5
MeasureValue.Buffer[20].Value = MeasureValue.Buffer[4].Value / ChannelValue[CH_TYCK_I5].BianBi;
MeasureValue.Buffer[20].Quality = MeasureValue.Buffer[4].Quality;
//<2F><><EFBFBD><EFBFBD>6
MeasureValue.Buffer[21].Value = MeasureValue.Buffer[5].Value / ChannelValue[CH_TYCK_I6].BianBi;
MeasureValue.Buffer[21].Quality = MeasureValue.Buffer[5].Quality;
//20200305 add by linwei <20><><EFBFBD><EFBFBD><34><C2B7><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>7
MeasureValue.Buffer[22].Value = MeasureValue.Buffer[6].Value / ChannelValue[CH_TYCK_I7].BianBi;
MeasureValue.Buffer[22].Quality = MeasureValue.Buffer[6].Quality;
//<2F><><EFBFBD><EFBFBD>8
MeasureValue.Buffer[23].Value = MeasureValue.Buffer[7].Value / ChannelValue[CH_TYCK_I8].BianBi;
MeasureValue.Buffer[23].Quality = MeasureValue.Buffer[7].Quality;
//<2F><><EFBFBD><EFBFBD>9
MeasureValue.Buffer[24].Value = MeasureValue.Buffer[8].Value / ChannelValue[CH_TYCK_I9].BianBi;
MeasureValue.Buffer[24].Quality = MeasureValue.Buffer[8].Quality;
//<2F><><EFBFBD><EFBFBD>10
MeasureValue.Buffer[25].Value = MeasureValue.Buffer[9].Value / ChannelValue[CH_TYCK_I10].BianBi;
MeasureValue.Buffer[25].Quality = MeasureValue.Buffer[9].Quality;
//<2F><>ѹ1
MeasureValue.Buffer[26].Value = MeasureValue.Buffer[10].Value * 1000 / ChannelValue[CH_TYCK_U1].BianBi;
MeasureValue.Buffer[26].Quality = MeasureValue.Buffer[10].Quality;
//<2F><>ѹ2
MeasureValue.Buffer[27].Value = MeasureValue.Buffer[11].Value * 1000 / ChannelValue[CH_TYCK_U2].BianBi;
MeasureValue.Buffer[27].Quality = MeasureValue.Buffer[11].Quality;
//<2F><EFBFBD>1
MeasureValue.Buffer[28].Value = MeasureValue.Buffer[12].Value;
//<2F><EFBFBD>2
MeasureValue.Buffer[29].Value = MeasureValue.Buffer[13].Value;
//<2F><EFBFBD>3
MeasureValue.Buffer[30].Value = MeasureValue.Buffer[14].Value;
//<2F><EFBFBD>4
MeasureValue.Buffer[31].Value = MeasureValue.Buffer[15].Value;
}
else
{
//<2F><>ʾģʽΪ<CABD><CEAA><EFBFBD><EFBFBD>ֵ
//<2F><><EFBFBD><EFBFBD>ֵ
//<2F><><EFBFBD><EFBFBD>1
//MeasureValue.Buffer[16].Value = ChannelValue[CH_TYCK_I1].YouXiaoZhi[JiBo].Analog.Value;
MeasureValue.Buffer[16].Value = ChannelValue[CH_TYCK_I1].rms.Value;
MeasureValue.Buffer[16].Quality = ChannelValue[CH_TYCK_I1].Quality;
//<2F><><EFBFBD><EFBFBD>2
//MeasureValue.Buffer[17].Value = ChannelValue[CH_TYCK_I2].YouXiaoZhi[JiBo].Analog.Value;
MeasureValue.Buffer[17].Value = ChannelValue[CH_TYCK_I2].rms.Value;
MeasureValue.Buffer[17].Quality = ChannelValue[CH_TYCK_I2].Quality;
//<2F><><EFBFBD><EFBFBD>3
//MeasureValue.Buffer[18].Value = ChannelValue[CH_TYCK_I3].YouXiaoZhi[JiBo].Analog.Value;
MeasureValue.Buffer[18].Value = ChannelValue[CH_TYCK_I3].rms.Value;
MeasureValue.Buffer[18].Quality = ChannelValue[CH_TYCK_I3].Quality;
//<2F><><EFBFBD><EFBFBD>4
//MeasureValue.Buffer[19].Value = ChannelValue[CH_TYCK_I4].YouXiaoZhi[JiBo].Analog.Value;
MeasureValue.Buffer[19].Value = ChannelValue[CH_TYCK_I4].rms.Value;
MeasureValue.Buffer[19].Quality = ChannelValue[CH_TYCK_I4].Quality;
//<2F><><EFBFBD><EFBFBD>5
//MeasureValue.Buffer[20].Value = ChannelValue[CH_TYCK_I5].YouXiaoZhi[JiBo].Analog.Value;
MeasureValue.Buffer[20].Value = ChannelValue[CH_TYCK_I5].rms.Value;
MeasureValue.Buffer[20].Quality = ChannelValue[CH_TYCK_I5].Quality;
//<2F><><EFBFBD><EFBFBD>6
//MeasureValue.Buffer[21].Value = ChannelValue[CH_TYCK_I6].YouXiaoZhi[JiBo].Analog.Value;
MeasureValue.Buffer[21].Value = ChannelValue[CH_TYCK_I6].rms.Value;
MeasureValue.Buffer[21].Quality = ChannelValue[CH_TYCK_I6].Quality;
//20200305 add by linwei <20><><EFBFBD><EFBFBD><34><C2B7><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>7
//MeasureValue.Buffer[22].Value = ChannelValue[CH_TYCK_I7].YouXiaoZhi[JiBo].Analog.Value;
MeasureValue.Buffer[22].Value = ChannelValue[CH_TYCK_I7].rms.Value;
MeasureValue.Buffer[22].Quality = ChannelValue[CH_TYCK_I7].Quality;
//<2F><><EFBFBD><EFBFBD>8
//MeasureValue.Buffer[23].Value = ChannelValue[CH_TYCK_I8].YouXiaoZhi[JiBo].Analog.Value;
MeasureValue.Buffer[23].Value = ChannelValue[CH_TYCK_I8].rms.Value;
MeasureValue.Buffer[23].Quality = ChannelValue[CH_TYCK_I8].Quality;
//<2F><><EFBFBD><EFBFBD>9
//MeasureValue.Buffer[24].Value = ChannelValue[CH_TYCK_I9].YouXiaoZhi[JiBo].Analog.Value;
MeasureValue.Buffer[24].Value = ChannelValue[CH_TYCK_I9].rms.Value;
MeasureValue.Buffer[24].Quality = ChannelValue[CH_TYCK_I9].Quality;
//<2F><><EFBFBD><EFBFBD>10
//MeasureValue.Buffer[25].Value = ChannelValue[CH_TYCK_I10].YouXiaoZhi[JiBo].Analog.Value;
MeasureValue.Buffer[25].Value = ChannelValue[CH_TYCK_I10].rms.Value;
MeasureValue.Buffer[25].Quality = ChannelValue[CH_TYCK_I10].Quality;
//<2F><>ѹ1
//MeasureValue.Buffer[26].Value = ChannelValue[CH_TYCK_U1].YouXiaoZhi[JiBo].Analog.Value;
MeasureValue.Buffer[26].Value = ChannelValue[CH_TYCK_U1].rms.Value;
MeasureValue.Buffer[26].Quality = ChannelValue[CH_TYCK_U1].Quality;
//<2F><>ѹ2
//MeasureValue.Buffer[27].Value = ChannelValue[CH_TYCK_U2].YouXiaoZhi[JiBo].Analog.Value;
MeasureValue.Buffer[27].Value = ChannelValue[CH_TYCK_U2].rms.Value;
MeasureValue.Buffer[27].Quality = ChannelValue[CH_TYCK_U2].Quality;
//<2F><EFBFBD>1
MeasureValue.Buffer[28].Value = ChannelValue[CH_TYCK_WD1].YouXiaoZhi[JiBo].Analog.Value;
//<2F><EFBFBD>2
MeasureValue.Buffer[29].Value = ChannelValue[CH_TYCK_WD2].YouXiaoZhi[JiBo].Analog.Value;
//<2F><EFBFBD>1
MeasureValue.Buffer[30].Value = ChannelValue[CH_TYCK_WD3].YouXiaoZhi[JiBo].Analog.Value;
//<2F><EFBFBD>2
MeasureValue.Buffer[31].Value = ChannelValue[CH_TYCK_WD4].YouXiaoZhi[JiBo].Analog.Value;
if(AD_MODE_I ==TYCK_ADType)
{
MeasureValue.Buffer[22].Value = 0;
MeasureValue.Buffer[23].Value = 0;
MeasureValue.Buffer[24].Value = 0;
MeasureValue.Buffer[25].Value = 0;
}
else
{
MeasureValue.Buffer[26].Value=0;
MeasureValue.Buffer[27].Value=0;
MeasureValue.Buffer[28].Value=0;
MeasureValue.Buffer[29].Value=0;
MeasureValue.Buffer[30].Value=0;
MeasureValue.Buffer[31].Value=0;
}
//һ<><D2BB>ֵ
//<2F><><EFBFBD><EFBFBD>1
MeasureValue.Buffer[0].Value = MeasureValue.Buffer[16].Value * ChannelValue[CH_TYCK_I1].BianBi;
MeasureValue.Buffer[0].Quality = MeasureValue.Buffer[16].Quality;
//<2F><><EFBFBD><EFBFBD>2
MeasureValue.Buffer[1].Value = MeasureValue.Buffer[17].Value * ChannelValue[CH_TYCK_I2].BianBi;
MeasureValue.Buffer[1].Quality = MeasureValue.Buffer[17].Quality;
//<2F><><EFBFBD><EFBFBD>3
MeasureValue.Buffer[2].Value = MeasureValue.Buffer[18].Value * ChannelValue[CH_TYCK_I3].BianBi;
MeasureValue.Buffer[2].Quality = MeasureValue.Buffer[18].Quality;
//<2F><><EFBFBD><EFBFBD>4
MeasureValue.Buffer[3].Value = MeasureValue.Buffer[19].Value * ChannelValue[CH_TYCK_I4].BianBi;
MeasureValue.Buffer[3].Quality = MeasureValue.Buffer[19].Quality;
//<2F><><EFBFBD><EFBFBD>5
MeasureValue.Buffer[4].Value = MeasureValue.Buffer[20].Value * ChannelValue[CH_TYCK_I5].BianBi;
MeasureValue.Buffer[4].Quality = MeasureValue.Buffer[20].Quality;
//<2F><><EFBFBD><EFBFBD>6
MeasureValue.Buffer[5].Value = MeasureValue.Buffer[21].Value * ChannelValue[CH_TYCK_I6].BianBi;
MeasureValue.Buffer[5].Quality = MeasureValue.Buffer[21].Quality;
//20200305 add by linwei <20><><EFBFBD><EFBFBD><34><C2B7><EFBFBD><EFBFBD>
//<2F><><EFBFBD><EFBFBD>7
MeasureValue.Buffer[6].Value = MeasureValue.Buffer[22].Value * ChannelValue[CH_TYCK_I7].BianBi;
MeasureValue.Buffer[6].Quality = MeasureValue.Buffer[22].Quality;
//<2F><><EFBFBD><EFBFBD>8
MeasureValue.Buffer[7].Value = MeasureValue.Buffer[23].Value * ChannelValue[CH_TYCK_I8].BianBi;
MeasureValue.Buffer[7].Quality = MeasureValue.Buffer[23].Quality;
//<2F><><EFBFBD><EFBFBD>9
MeasureValue.Buffer[8].Value = MeasureValue.Buffer[24].Value * ChannelValue[CH_TYCK_I9].BianBi;
MeasureValue.Buffer[8].Quality = MeasureValue.Buffer[24].Quality;
//<2F><><EFBFBD><EFBFBD>10
MeasureValue.Buffer[9].Value = MeasureValue.Buffer[25].Value * ChannelValue[CH_TYCK_I10].BianBi;
MeasureValue.Buffer[9].Quality = MeasureValue.Buffer[25].Quality;
//<2F><>ѹ1
MeasureValue.Buffer[10].Value = MeasureValue.Buffer[26].Value * ChannelValue[CH_TYCK_U1].BianBi / 1000;
MeasureValue.Buffer[10].Quality = MeasureValue.Buffer[26].Quality;
//<2F><>ѹ2
MeasureValue.Buffer[11].Value = MeasureValue.Buffer[27].Value * ChannelValue[CH_TYCK_U2].BianBi / 1000;
MeasureValue.Buffer[11].Quality = MeasureValue.Buffer[27].Quality;
//<2F><EFBFBD>1
MeasureValue.Buffer[12].Value = MeasureValue.Buffer[28].Value;
//<2F><EFBFBD>2
MeasureValue.Buffer[13].Value = MeasureValue.Buffer[29].Value;
//<2F><EFBFBD>3
MeasureValue.Buffer[14].Value = MeasureValue.Buffer[30].Value;
//<2F><EFBFBD>4
MeasureValue.Buffer[15].Value = MeasureValue.Buffer[31].Value;
}
//װ<><D7B0>ʱ<EFBFBD><CAB1>
MeasureValue.Time.Msecond = Clock.Msecond; //<2F><><EFBFBD>룬2<EBA3AC>ֽڣ<D6BD><DAA3><EFBFBD>Χ<EFBFBD><CEA7>0<EFBFBD><30>59999
MeasureValue.Time.Minute = Clock.Minute; //<2F>֣<EFBFBD>1<EFBFBD>ֽڣ<D6BD><DAA3><EFBFBD>Χ<EFBFBD><CEA7>0<EFBFBD><30>59
MeasureValue.Time.Hour = Clock.Hour; //Сʱ<D0A1><CAB1>1<EFBFBD>ֽڣ<D6BD><DAA3><EFBFBD>Χ<EFBFBD><CEA7>0<EFBFBD><30>23
MeasureValue.Time.Date = Clock.Date; //<2F><><EFBFBD>ڣ<EFBFBD>1<EFBFBD>ֽڣ<D6BD><DAA3><EFBFBD>Χ<EFBFBD><CEA7>1<EFBFBD><31>31
MeasureValue.Time.Month = Clock.Month; //<2F>£<EFBFBD>1<EFBFBD>ֽڣ<D6BD><DAA3><EFBFBD>Χ<EFBFBD><CEA7>1<EFBFBD><31>12
MeasureValue.Time.Year = Clock.Year; //<2F>꣬2<EAA3AC>ֽڣ<D6BD><DAA3><EFBFBD>Χ<EFBFBD><CEA7>2000<30><30>2099
}
void maintask(void)
{
//<2F><><EFBFBD><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߱<EFBFBD><DFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SysResetSoeRecord(); //ϵͳ<CFB5><CDB3>λ<EFBFBD>¼<EFBFBD><C2BC><EFBFBD>¼
CopyYaoXinBianWei();
digit_mainTask();
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Чֵ
ComputeAnalogTrueRms(&ZcpSet);
if(YCThresholdSet.avail == 0)
{
JiSuanMeasureValue(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
SendMeasureValue(); //<2F><><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD>ֵ <20><><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>Ϊ<EFBFBD><CEAA><EFBFBD>У<EFBFBD><D0A3>Ͳ<EFBFBD><CDB2><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>ӿڷ<D3BF><DAB7><EFBFBD><EFBFBD><EFBFBD><EEA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB>Ҫʹ<D2AA><CAB9><EFBFBD><EFBFBD>
}
SendGetTimeCommand();
ReceiveData(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ProcessASDU(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//SendData(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
setValueSelfCheck(); //<2F><>ֵ<EFBFBD>Լ<EFBFBD>
//<2F><>ѹ<EFBFBD><D1B9>Ͷ<EFBFBD><CDB6> 20200313 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><E5B4A6>
CheckSoftStrapCtrl();
#ifdef DEVICE_TYPE_DIGITAL
CheckIOYaoXin(IO_TYPE_IN20_OUT6,0); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼IO<49>Լ<EFBFBD><D4BC><EFBFBD>ң<EFBFBD><D2A3>
CheckIOYaoXin(IO_TYPE_IN20_OUT6,1); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼IO<49>Լ<EFBFBD><D4BC><EFBFBD>ң<EFBFBD><D2A3>
CheckIOYaoXin(IO_TYPE_IN20_OUT6,2); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼IO<49>Լ<EFBFBD><D4BC><EFBFBD>ң<EFBFBD><D2A3>
#else
/*
CheckIOYaoXin(IO_TYPE_IN20_OUT6,0); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼IO<49>Լ<EFBFBD><D4BC><EFBFBD>ң<EFBFBD><D2A3>
CheckIOYaoXin(IO_TYPE_IN20_OUT6,1); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼IO<49>Լ<EFBFBD><D4BC><EFBFBD>ң<EFBFBD><D2A3>
CheckIOYaoXin(IO_TYPE_IN15_OUT10,2); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼IO<49>Լ<EFBFBD><D4BC><EFBFBD>ң<EFBFBD><D2A3>
CheckIOYaoXin(IO_TYPE_IN15_OUT10,3); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼IO<49>Լ<EFBFBD><D4BC><EFBFBD>ң<EFBFBD><D2A3>
*/
//20150803 luoyang modi
CheckIOYaoXinEx(IO_TYPE_IN0_OUT16,0,TYCK_YAOXIN_ZJ_IO1_START); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼IO<49>Լ<EFBFBD><D4BC><EFBFBD>ң<EFBFBD><D2A3>
CheckIOYaoXinEx(IO_TYPE_IN0_OUT16,1,TYCK_YAOXIN_ZJ_IO2_START); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼IO<49>Լ<EFBFBD><D4BC><EFBFBD>ң<EFBFBD><D2A3>
CheckIOYaoXinEx(IO_TYPE_IN30_OUT0,2,TYCK_YAOXIN_ZJ_IO3_START); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼IO<49>Լ<EFBFBD><D4BC><EFBFBD>ң<EFBFBD><D2A3>
CheckIOYaoXinEx(IO_TYPE_IN30_OUT0,3,TYCK_YAOXIN_ZJ_IO4_START); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼IO<49>Լ<EFBFBD><D4BC><EFBFBD>ң<EFBFBD><D2A3>
#endif
CheckRemote_ryb();
if(LS_TR == TYCK_LS)
{
block_CalcStatus();
}
}
/******************************************************************************
* Function: SoftReset
* Description:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ң<EFBFBD>ء<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ť<EFBFBD><EFBFBD>
* Calls: none
* Called By:
* Input: RstMode<EFBFBD><EFBFBD><EFBFBD>ʽ FG_MODE_YK-ң<EFBFBD>ظ<EFBFBD><EFBFBD><EFBFBD> FG_MODE_AN-<EFBFBD><EFBFBD>ť<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Ouput:
* Return:
* others:
* History:
* 1.luoyang created
*
*******************************************************************************/
void SoftReset(unsigned char RstMode)
{
CanShuType CanShuValue;
CanShuValue.Number = 0;
//ң<>ظ<EFBFBD><D8B8><EFBFBD>
if(FG_MODE_YK == RstMode)
{
RecordSOE(FG_YK, CanShuValue);
}
//<2F>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD>
else if(FG_MODE_SD == RstMode)
{
RecordSOE(FG_AN, CanShuValue);
}
//printf("len = %d",sizeof(YaoXinSet) / sizeof(YaoXinObjectType));
FGIP = TEST_START;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>źţ<C5BA><C5A3><EFBFBD><EFBFBD><EFBFBD>IO<49><4F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>բ<EFBFBD>׵<EFBFBD>
//D_OUT(FGQ_KC,ON);
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>źű<C5BA><C5B1>ּ<EFBFBD><D6BC><EFBFBD><EFBFBD><EFBFBD>
//FGKeepTimer = 1;
}
/******************************************************************************
* Function: KCHandle
* Description:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Calls: none
* Called By:
* Input:
* Ouput:
* Return:
* others:
* History:
* 1.luoyang created
*
*******************************************************************************/
void RemoteKCHandle()
{
int KCObjectNo;
int KCNo;
KCObjectNo = RemoteObject.Object[RemoteValue.ObjectNo].Out_On_No;
if(KCObjectNo > TYCK_KC_NUM)
{
return;
}
//<2F>ϴλ<CFB4>δִ<CEB4><D6B4><EFBFBD><EFBFBD>
if(TEST_CLOSE != TYCK_QDKCSet[KCObjectNo].Status)
{
return;
}
//û<>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޲<EFBFBD><DEB2><EFBFBD>ʱ<EFBFBD><CAB1>
if(KC_TYPE_WFK == TYCK_KCTXSet[KCObjectNo].Type && 0 == TYCK_KCTXSet[KCObjectNo].Time)
{
TYCK_QDKCSet[KCObjectNo].StatusNext = RemoteValue.Property;
}
else
{
if(ON != RemoteValue.Property)
{
return;
}
TYCK_QDKCSet[KCObjectNo].StatusNext = ON;
}
TYCK_QDKCSet[KCObjectNo].Status = TEST_START;
}
/******************************************************************************
* Function: CheckQDKC
* Description:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* Calls: none
* Called By:
* Input:
* Ouput:
* Return:
* others:
* History:
* 1.luoyang created 20140618
*
*******************************************************************************/
void CheckQDKC()
{
int i;
CanShuType CanShu;
unsigned int Temp[2],Temp1[2];
CanShu.Number = 0;
for(i = 0;i < TYCK_KC_NUM;i++)
{
if(KC_TYPE_QDQS == TYCK_KCTXSet[i].Type)
{
continue;
}
switch(TYCK_QDKCSet[i].Status)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
case TEST_START:
D_OUT(TYCK_QDKCSet[i].KCNo,TYCK_QDKCSet[i].StatusNext);
if(ON == TYCK_QDKCSet[i].StatusNext)
{
TYCK_QDKCSet[i].Status = TEST_DELAY;
RecordSOE(TYCK_QDKCSet[i].SOECodeStart,CanShu);
if(KC_TYPE_WFK != TYCK_KCTXSet[i].Type && 0 != TYCK_KCTXSet[i].Time)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
TYCK_QDKCSet[i].Timer = 1;
}
}
else if(OFF == TYCK_QDKCSet[i].StatusNext)
{
TYCK_QDKCSet[i].Status = TEST_CLOSE;
RecordSOE(TYCK_QDKCSet[i].SOECodeStart + 1,CanShu);
}
TYCK_QDKCSet[i].CFKRBak[0] = TYCK_QDKCSet[i].KRMask[0] & InPort.PortStatus[0];
TYCK_QDKCSet[i].CFKRBak[1] = TYCK_QDKCSet[i].KRMask[1] & InPort.PortStatus[1];
break;
case TEST_DELAY:
//<2F>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(KC_TYPE_WFK == TYCK_KCTXSet[i].Type)
{
if(0 == TYCK_KCTXSet[i].Time)
{
TYCK_QDKCSet[i].Status = TEST_CLOSE;
}
else
{
TYCK_QDKCSet[i].Timer++;
//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><E4B5BD><EFBFBD>ջ<EFBFBD>
if(TYCK_QDKCSet[i].Timer >= TYCK_KCTXSet[i].Time)
{
D_OUT(TYCK_QDKCSet[i].KCNo,OFF);
TYCK_QDKCSet[i].Status = TEST_CLOSE;
TYCK_QDKCSet[i].StatusNext = OFF;
TYCK_QDKCSet[i].Timer = 0;
RecordSOE(TYCK_QDKCSet[i].SOECodeStart + 1,CanShu);
}
}
}
//<2F>з<EFBFBD><D0B7><EFBFBD>
else if(KC_TYPE_FK == TYCK_KCTXSet[i].Type)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD>źŵ<C5BA>λ
if(YaoXinStatus[TYCK_QDKCSet[i].FKYaoXinNo] == TYCK_QDKCSet[i].StatusNext)
{
D_OUT(TYCK_QDKCSet[i].KCNo,OFF);
TYCK_QDKCSet[i].Status = TEST_CLOSE;
TYCK_QDKCSet[i].StatusNext = OFF;
TYCK_QDKCSet[i].Timer = 0;
RecordSOE(TYCK_QDKCSet[i].SOECodeStart + 2,CanShu);
RecordSOE(TYCK_QDKCSet[i].SOECodeStart + 1,CanShu);
}
else
{
TYCK_QDKCSet[i].Timer++;
if(TYCK_QDKCSet[i].Timer >= TYCK_KCTXSet[i].Time)
{
D_OUT(TYCK_QDKCSet[i].KCNo,OFF);
TYCK_QDKCSet[i].Status = TEST_CLOSE;
TYCK_QDKCSet[i].StatusNext = OFF;
TYCK_QDKCSet[i].Timer = 0;
RecordSOE(TYCK_QDKCSet[i].SOECodeStart + 3,CanShu);
RecordSOE(TYCK_QDKCSet[i].SOECodeStart + 1,CanShu);
}
}
}
TYCK_QDKCSet[i].CFKRBak[0] = TYCK_QDKCSet[i].KRMask[0] & InPort.PortStatus[0];
TYCK_QDKCSet[i].CFKRBak[1] = TYCK_QDKCSet[i].KRMask[1] & InPort.PortStatus[1];
break;
case TEST_CLOSE:
Temp[0] = TYCK_QDKCSet[i].KRMask[0] & InPort.PortStatus[0];
Temp[1] = TYCK_QDKCSet[i].KRMask[1] & InPort.PortStatus[1];
//<2F>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>Ϊ0
if(KC_TYPE_WFK == TYCK_KCTXSet[i].Type && 0 == TYCK_KCTXSet[i].Time)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD>б<EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD>ø<EFBFBD><C3B8><EFBFBD>ջ<EFBFBD>
if(ON == TYCK_QDKCSet[i].StatusNext)
{
if((!(Temp[0] || Temp[1]) && (TYCK_QDKCSet[i].CFKRBak[0] || TYCK_QDKCSet[i].CFKRBak[1])) || TEST_START == FGIP)
{
TYCK_QDKCSet[i].Status = TEST_START;
TYCK_QDKCSet[i].StatusNext = OFF;
}
}
else
{
//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7>п<EFBFBD><D0BF><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>Ϊ<EFBFBD><CEAA>Ч
Temp1[0] = (Temp[0] ^ TYCK_QDKCSet[i].CFKRBak[0]) & InPort.PortStatus[0];
Temp1[1] = (Temp[1] ^ TYCK_QDKCSet[i].CFKRBak[1]) & InPort.PortStatus[1];
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(Temp1[0] || Temp1[1])
{
TYCK_QDKCSet[i].Status = TEST_START;
TYCK_QDKCSet[i].StatusNext = ON;
}
}
}
else
{
//<2F>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7>п<EFBFBD><D0BF><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>Ϊ<EFBFBD><CEAA>Ч
Temp1[0] = (Temp[0] ^ TYCK_QDKCSet[i].CFKRBak[0]) & InPort.PortStatus[0];
Temp1[1] = (Temp[1] ^ TYCK_QDKCSet[i].CFKRBak[1]) & InPort.PortStatus[1];
//<2F><><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(Temp1[0] || Temp1[1])
{
TYCK_QDKCSet[i].Status = TEST_START;
TYCK_QDKCSet[i].StatusNext = ON;
}
}
TYCK_QDKCSet[i].CFKRBak[0] = Temp[0];
TYCK_QDKCSet[i].CFKRBak[1] = Temp[1];
break;
default:
break;
}
}
if(TEST_START == FGIP)
{
FGIP = TEST_CLOSE;
}
}
#endif