📄 ade7758.c
字号:
Write_Ade_Reg_Val();
AdeRead();
}
else
{
get_ade_default_parm();
Write_Ade_Reg_Val();
AdeRead();
Burn_Ade_Parm();
}
}
void AdeEntCalibSt(void)
{
Ade_Test=TRUE;
boolAcCalstart=FALSE;
}
void AdeEscCalibSt(void)
{
WaitAcCalStart();
Write_Energy_Cmd();
}
void Calib_UI_Gain_Sub(void)
{
ClaerUI_Gain();
ClaerUI_Os();
ADEYSSUB();
ReadVal_Rms();
GetUI_Rms_Test();
MakeUI_Gain();
WriteUI_Gain();
Burn_Ade_Parm();
}
void Get_Calib_UI_Os_TestVal_Sub(void)
{
ClaerUI_Os();
ADEYSSUB();
ReadVal_Rms();
GetUI_Rms_Test();
}
void Get_Calib_UI_Os_MinVal_Sub(void)
{
ClaerUI_Os();
ADEYSSUB();
ReadVal_Rms();
GetUI_Rms_Min();
}
void Calib_UI_Os_Sub(void)
{
MakeUI_Os();
WriteUI_Os();
Burn_Ade_Parm();
}
void Calib_WATVA_Gain_Sub(void)
{
setadereg2byte((uint16 *)&runaderegval.LINECYC_VAL_RW16U,0x800);
ClearWatVa_Gain();
ClearWatVarVa_Ph();
ClearWat_Os();
ClearVar_Os();
Write_Lcycle_Cmd();
ADEYSSUB();
ADEYSSUB();
ReadVal_WatVarVa();
GetVal_WatVarVa_Test();
MakeWatVa_Gain();
WriteWatVa_Gain();
Burn_Ade_Parm();
}
void Calib_VAR_Gain_Sub(void)
{
setadereg2byte((uint16 *)&runaderegval.LINECYC_VAL_RW16U,0x800);
ClearVar_Gain();
ClearWatVarVa_Ph();
ClearWat_Os();
ClearVar_Os();
Write_Lcycle_Cmd();
ADEYSSUB();
ReadVal_WatVarVa();
GetVal_WatVarVa_Test();
MakeVar_Gain();
WriteVar_Gain();
Burn_Ade_Parm();
}
void Get_Calib_Ph_Os_TestVal_Sub(void)
{
setadereg2byte((uint16 *)&runaderegval.LINECYC_VAL_RW16U,0x800);
ClearWat_Os();
ClearVar_Os();
ClearWatVarVa_Ph();
Write_Lcycle_Cmd();
ADEYSSUB();
ReadVal_WatVarVa();
GetVal_WatVarVa_Test();
}
void Get_Calib_Ph_Os_TestVal_PF05_Sub(void)
{
setadereg2byte((uint16 *)&runaderegval.LINECYC_VAL_RW16U,0x800);
Write_Lcycle_Cmd();
ADEYSSUB();
ReadVal_WatVarVa();
GetVal_WatVarVa_Test_PF05();
}
void Calib_Ph_Os_Sub(void)
{
MakePh_Os();
WriteWatVarVa_Ph();
Burn_Ade_Parm();
}
void Get_Calib_WATVA_Os_TestVal_Sub(void)
{
setadereg2byte((uint16 *)&runaderegval.LINECYC_VAL_RW16U,0x800);
ClearWat_Os();
Write_Lcycle_Cmd();
ADEYSSUB();
ReadVal_WatVarVa();
GetVal_WatVarVa_Test();
}
void Get_Calib_WATVA_Os_TestVal_Min_Sub(void)
{
setadereg2byte((uint16 *)&runaderegval.LINECYC_VAL_RW16U,0x4000);
Write_Lcycle_Cmd();
ADEYSSUB();
ReadVal_WatVarVa();
GetVal_WatVarVa_MIN();
}
void Calib_WATVA_Os_Sub(void)
{
MakeWat_Os();
WriteWat_Os();
Burn_Ade_Parm();
}
void Get_Calib_VAR_Os_TestVal_Sub(void)
{
setadereg2byte((uint16 *)&runaderegval.LINECYC_VAL_RW16U,0x800);
ClearVar_Os();
Write_Lcycle_Cmd();
ADEYSSUB();
ReadVal_WatVarVa();
GetVal_WatVarVa_Test();
}
void Get_Calib_VAR_Os_TestVal_Min_Sub(void)
{
setadereg2byte((uint16 *)&runaderegval.LINECYC_VAL_RW16U,0x4000);
Write_Lcycle_Cmd();
ADEYSSUB();
ReadVal_WatVarVa();
GetVal_WatVarVa_MIN();
}
void Calib_VAR_Os_Sub(void)
{
MakeVar_Os();
WriteVar_Os();
Burn_Ade_Parm();
}
//ADE7758校验
void ADE_Calib(void)
{
bool BurnStatus;
if(CalibTypeR)//上行命令
{
switch(CalibTypeR)
{
case Make_UI_Gain://0x01
ClaerUI_Gain();
ClaerUI_Os();
ReadVal_Rms();
GetUI_Rms_Test();
MakeUI_Gain();
break;
case GetUI_Val_Test_Os://0x02
ClaerUI_Os();
ReadVal_Rms();
GetUI_Rms_Test();
break;
case GetUI_Val_Min_Os://0x03
ClaerUI_Os();
ReadVal_Rms();
GetUI_Rms_Min();
MakeUI_Os();
break;
case Make_WatVa_Gain://0x11
setadereg2byte((uint16 *)&runaderegval.LINECYC_VAL_RW16U,0x800);
ClearWatVa_Gain();
ClearWatVarVa_Ph();
ClearWat_Os();
ClearVar_Os();
Write_Lcycle_Cmd();
ReadVal_WatVarVa();
GetVal_WatVarVa_Test();
MakeWatVa_Gain();
break;
case Make_Var_Gain://0x12
setadereg2byte((uint16 *)&runaderegval.LINECYC_VAL_RW16U,0x800);
ClearVar_Gain();
ClearWatVarVa_Ph();
ClearWat_Os();
ClearVar_Os();
Write_Lcycle_Cmd();
ReadVal_WatVarVa();
GetVal_WatVarVa_Test();
MakeVar_Gain();
break;
case Get_WatOs_Ph_Val_Test://0x21
setadereg2byte((uint16 *)&runaderegval.LINECYC_VAL_RW16U,0x800);
ClearWat_Os();
Write_Lcycle_Cmd();
ReadVal_WatVarVa();
GetVal_WatVarVa_Test();
break;
case Get_WatOs_Val_Min://0x22
setadereg2byte((uint16 *)&runaderegval.LINECYC_VAL_RW16U,0x4000);
ClearWat_Os();
Write_Lcycle_Cmd();
ReadVal_WatVarVa();
GetVal_WatVarVa_MIN();
MakeWat_Os();
break;
case Get_VarOs_Val_Test://0x23
setadereg2byte((uint16 *)&runaderegval.LINECYC_VAL_RW16U,0x800);
ClearVar_Os();
Write_Lcycle_Cmd();
ReadVal_WatVarVa();
GetVal_WatVarVa_Test();
break;
case Get_VarOs_Val_Min://0x24
setadereg2byte((uint16 *)&runaderegval.LINECYC_VAL_RW16U,0x4000);
ClearVar_Os();
Write_Lcycle_Cmd();
ReadVal_WatVarVa();
GetVal_WatVarVa_MIN();
MakeVar_Os();
break;
case Get_Lcycle_Val://0x30
setadereg2byte((uint16 *)&runaderegval.LINECYC_VAL_RW16U,0x800);
Write_Lcycle_Cmd();
ReadVal_WatVarVa();
break;
case Get_Energy_Val://0x31
Write_Energy_Cmd();
ReadVal_WatVarVa();
break;
case Get_UI_Val://0x32
ReadVal_Rms();
break;
case Get_UI_Rms_Val://0x40
ReadVal_Rms();
break;
case Get_Ade_Reg_Val://0x50
AdeRead();
break;
default:
break;
}
}
if(CalibTypeW)//下行命令
{
switch(CalibTypeW)
{
case Write_UI_Gain:
WriteUI_Gain();
break;
case Write_UI_Os:
WriteUI_Os();
break;
case Write_WatVa_Gain:
WriteWatVa_Gain();
break;
case Write_Var_Gain:
WriteVar_Gain();
break;
case Write_Ph:
WriteWatVarVa_Ph();
break;
case Write_WatVar_Os:
WriteWatVar_Os();
break;
case Burn_AdeParm:
BurnStatus=Burn_Ade_Parm();
break;
case CallInit:
AdeInit();
Write_Energy_Cmd();
break;
case AdeCalibEnter:
AdeEntCalibSt();
break;
case AdeCalibEsc:
Ade_Test=FALSE;
WaitAcCalStart();
break;
default:
break;
}
}
}
void RunReadAde_Rms_Val(void)//运行状态下读取有效值
{
booleint3=FALSE;
//if(adermscnt==0x0b)
//{
ReadAde3byte(aderegaddr[AIRMS_R24U],(uint32 *)&(runaderegval.AIRMS_VAL_R24U));
ReadAde3byte(aderegaddr[BIRMS_R24U],(uint32 *)&(runaderegval.BIRMS_VAL_R24U));
ReadAde3byte(aderegaddr[CIRMS_R24U],(uint32 *)&(runaderegval.CIRMS_VAL_R24U));
ademeaval.MEA_IARMS=runaderegval.AIRMS_VAL_R24U;
ademeaval.MEA_IBRMS=runaderegval.BIRMS_VAL_R24U;
ademeaval.MEA_ICRMS=runaderegval.CIRMS_VAL_R24U;
/*
data1=192147;//1921472;
tMeaVal.CI1=udiv32by32mea(data1,(ademeaval.MEA_IARMS)*778);//6500);
tMeaVal.CI2=udiv32by32mea(data1,(ademeaval.MEA_IBRMS)*778);//6500);
tMeaVal.CI3=udiv32by32mea(data1,(ademeaval.MEA_ICRMS)*778);//6500);
*/
//return;
//}
//else if(adermscnt==0x0c)
//{
ReadAde3byte(aderegaddr[AVRMS_R24U],(uint32 *)&(runaderegval.AVRMS_VAL_R24U));
ReadAde3byte(aderegaddr[BVRMS_R24U],(uint32 *)&(runaderegval.BVRMS_VAL_R24U));
ReadAde3byte(aderegaddr[CVRMS_R24U],(uint32 *)&(runaderegval.CVRMS_VAL_R24U));
ReadAde2byte(aderegaddr[FREQ_R12U],(uint16 *)&(runaderegval.FREQ_VAL_R12U));
ademeaval.MEA_UARMS=runaderegval.AVRMS_VAL_R24U;
ademeaval.MEA_UBRMS=runaderegval.BVRMS_VAL_R24U;
ademeaval.MEA_UCRMS=runaderegval.CVRMS_VAL_R24U;
ademeaval.MEA_FREAQ=runaderegval.FREQ_VAL_R12U;
/*
data1=167821;
tMeaVal.CU1=udiv32by32mea(data1,(ademeaval.MEA_UARMS)*1343);//1400);
tMeaVal.CU2=udiv32by32mea(data1,(ademeaval.MEA_UBRMS)*1343);//1400);
tMeaVal.CU3=udiv32by32mea(data1,(ademeaval.MEA_UCRMS)*1343);//1400);
tMeaVal.CF=(ademeaval.MEA_FREAQ)*4096;
if(tMeaVal.CU1<=1000) tMeaVal.CF=0;
freqvalue[freqnumcnt]=tMeaVal.CF;
freqcalcnt = freqnumcnt;
data1=freqnumcnt;
if(data1 >= 20) data1 -= 20;
else{ data1 +=freqlgh -20;
}
freqracevalue[freqnumcnt]=tMeaVal.CF-freqvalue[data1];
freqnumcnt++;
freqnumcnt &=freqnum;
*/
adermscnt=0;
//return;
//}
//else
//return;
}
void RunReadAde_Hr_Val(void)//运行状态下读取能量
{
int32 temppqs;
uint32 temppqu;
ReadAde3byte(aderegaddr[RSTATUS_R24U],(uint32 *)&(runaderegval.RSTATUS_VAL_R24U));
if(runaderegval.RSTATUS_VAL_R24U&0x01)
{
HrT0TCFI=T0TC;
//if(adehrcnt==0x01)
//{
eint3timer1=dTCounter-eint3timer;
eint3timer2=eint3timer1*18432+T0TC;
eint3timer=dTCounter;
ademeaval.EINT3TIM=eint3timer1;
ReadAde2byte(aderegaddr[AWATTHR_R16S],(uint16 *)&(runaderegval.AWATTHR_VAL_R16S));
ReadAde2byte(aderegaddr[BWATTHR_R16S],(uint16 *)&(runaderegval.BWATTHR_VAL_R16S));
ReadAde2byte(aderegaddr[CWATTHR_R16S],(uint16 *)&(runaderegval.CWATTHR_VAL_R16S));
ReadAde2byte(aderegaddr[AVARHR_R16S],(uint16 *)&(runaderegval.AVARHR_VAL_R16S));
ReadAde2byte(aderegaddr[BVARHR_R16S],(uint16 *)&(runaderegval.BVARHR_VAL_R16S));
ReadAde2byte(aderegaddr[CVARHR_R16S],(uint16 *)&(runaderegval.CVARHR_VAL_R16S));
// return;
//}
//else
//{
ReadAde2byte(aderegaddr[AVAHR_R16U],(uint16 *)&(runaderegval.AVAHR_VAL_R16U));
ReadAde2byte(aderegaddr[BVAHR_R16U],(uint16 *)&(runaderegval.BVAHR_VAL_R16U));
ReadAde2byte(aderegaddr[CVAHR_R16U],(uint16 *)&(runaderegval.CVAHR_VAL_R16U));
ReadAde3byte(aderegaddr[RSTATUS_R24U],(uint32 *)&(runaderegval.RSTATUS_VAL_R24U));
ademeaval.MEA_AWAT=(int16)runaderegval.AWATTHR_VAL_R16S;
ademeaval.MEA_BWAT=(int16)runaderegval.BWATTHR_VAL_R16S;
ademeaval.MEA_CWAT=(int16)runaderegval.CWATTHR_VAL_R16S;
ademeaval.MEA_AVAR=(int16)runaderegval.AVARHR_VAL_R16S;
ademeaval.MEA_BVAR=(int16)runaderegval.BVARHR_VAL_R16S;
ademeaval.MEA_CVAR=(int16)runaderegval.CVARHR_VAL_R16S;
ademeaval.MEA_AVA=runaderegval.AVAHR_VAL_R16U;
ademeaval.MEA_BVA=runaderegval.BVAHR_VAL_R16U;
ademeaval.MEA_CVA=runaderegval.CVAHR_VAL_R16U;
temppqs=ademeaval.MEA_AWAT;
temppqs=temppqs+ademeaval.MEA_BWAT;
temppqs=temppqs+ademeaval.MEA_CWAT;
if(temppqs&0x8000000)
{
temppqu=0-temppqs;
ademeaval.HR_P_exp=ademeaval.HR_P_exp+temppqu;
}
else ademeaval.HR_P_imp=ademeaval.HR_P_imp+temppqs;
temppqs=ademeaval.MEA_AVAR;
temppqs=temppqs+ademeaval.MEA_BVAR;
temppqs=temppqs+ademeaval.MEA_CVAR;
if(temppqs&0x8000000)
{
temppqu=0-temppqs;
ademeaval.HR_Q_exp=ademeaval.HR_Q_exp+temppqu;
}
else ademeaval.HR_Q_imp=ademeaval.HR_Q_imp+temppqs;
//ademeaval.MEA_AWATHR=ademeaval.MEA_AWATHR+ademeaval.MEA_AWAT;
//ademeaval.MEA_BWATHR=ademeaval.MEA_BWATHR+ademeaval.MEA_BWAT;
//ademeaval.MEA_CWATHR=ademeaval.MEA_CWATHR+ademeaval.MEA_CWAT;
//ademeaval.MEA_AVARHR=ademeaval.MEA_AVARHR+ademeaval.MEA_AVAR;
//ademeaval.MEA_BVARHR=ademeaval.MEA_BVARHR+ademeaval.MEA_BVAR;
//ademeaval.MEA_CVARHR=ademeaval.MEA_CVARHR+ademeaval.MEA_CVAR;
//ademeaval.MEA_AVAHR=ademeaval.MEA_AVAHR+ademeaval.MEA_AVA;
//ademeaval.MEA_BVAHR=ademeaval.MEA_BVAHR+ademeaval.MEA_BVA;
//ademeaval.MEA_CVAHR=ademeaval.MEA_CVAHR+ademeaval.MEA_CVA;
eint3intcnt++;
/*
data1=ademeaval.MEA_AWAT;
data1=data1+ademeaval.MEA_BWAT;
data1=data1+ademeaval.MEA_CWAT;
data2=(int32)(data1*2341);
data1=_div32by32(eint3timer1,data2);
tMeaVal.CP=data1;
data1=ademeaval.MEA_AVAR;
data1=data1+ademeaval.MEA_BVAR;
data1=data1+ademeaval.MEA_CVAR;
data2=(int32)(data1*2341);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -