📄 ade7758.c
字号:
IO1SET = ADECS_SET;
adecmdwrite(aderegaddr[CVAHR_R16U]);
DelayAdeNS(2);
*pcva++=adereadvalue();
*pcva++=adereadvalue();
IO1SET = ADECS_SET;
booleint3=FALSE;
ReadAde3byte(aderegaddr[RSTATUS_R24U],(uint32 *)&(runaderegval.RSTATUS_VAL_R24U));
}
pawat=&tempawathr[2];
pbwat=&tempbwathr[2];
pcwat=&tempcwathr[2];
pavar=&tempavarhr[2];
pbvar=&tempbvarhr[2];
pcvar=&tempcvarhr[2];
pava=&tempavahr[2];
pbva=&tempbvahr[2];
pcva=&tempcvahr[2];
awathr=0;
bwathr=0;
cwathr=0;
avarhr=0;
bvarhr=0;
cvarhr=0;
avahr=0;
bvahr=0;
cvahr=0;
freqval=0;
for(i=1;i<10;i++){
uitemp1=*pfreq++;
uitemp2=*pfreq++;
uitemp3=(uitemp1<<8)|(uitemp2);
uitemp4=uitemp3;
freqval=freqval+uitemp4;
uitemp1=*pawat++;
uitemp2=*pawat++;
uitemp3=(uitemp1<<8)|(uitemp2);
uitemp4=uitemp3;
awathr=awathr+uitemp4;
uitemp1=*pbwat++;
uitemp2=*pbwat++;
uitemp3=(uitemp1<<8)|(uitemp2);
uitemp4=uitemp3;
bwathr=bwathr+uitemp4;
uitemp1=*pcwat++;
uitemp2=*pcwat++;
uitemp3=(uitemp1<<8)|(uitemp2);
uitemp4=uitemp3;
cwathr=cwathr+uitemp4;
uitemp1=*pavar++;
uitemp2=*pavar++;
uitemp3=(uitemp1<<8)|(uitemp2);
uitemp4=uitemp3;
avarhr=avarhr+uitemp4;
uitemp1=*pbvar++;
uitemp2=*pbvar++;
uitemp3=(uitemp1<<8)|(uitemp2);
uitemp4=uitemp3;
bvarhr=bvarhr+uitemp4;
uitemp1=*pcvar++;
uitemp2=*pcvar++;
uitemp3=(uitemp1<<8)|(uitemp2);
uitemp4=uitemp3;
cvarhr=cvarhr+uitemp4;
uhrtemp1=*pava++;
uhrtemp2=*pava++;
uhrtemp3=(uhrtemp1<<8)|(uhrtemp2);
uhrtemp4=uhrtemp3;
avahr=avahr+uhrtemp4;
uhrtemp1=*pbva++;
uhrtemp2=*pbva++;
uhrtemp3=(uhrtemp1<<8)|(uhrtemp2);
uhrtemp4=uhrtemp3;
bvahr=bvahr+uhrtemp4;
uhrtemp1=*pcva++;
uhrtemp2=*pcva++;
uhrtemp3=(uhrtemp1<<8)|(uhrtemp2);
uhrtemp4=uhrtemp3;
cvahr=cvahr+uhrtemp4;
}
watvarvaval.FREQ_VAL=freqval/9;
watvarvaval.AW_VAL=awathr/9;
watvarvaval.BW_VAL=bwathr/9;
watvarvaval.CW_VAL=cwathr/9;
watvarvaval.AVAR_VAL=avarhr/9;
watvarvaval.BVAR_VAL=bvarhr/9;
watvarvaval.CVAR_VAL=cvarhr/9;
watvarvaval.AVA_VAL=avahr/9;
watvarvaval.BVA_VAL=bvahr/9;
watvarvaval.CVA_VAL=cvahr/9;
}
void ClearWatVa_Gain(void)//清有功视在功率增益
{
WriteAde2byte((aderegaddr[AWG_RW12S])|0x80,0x0);
WriteAde2byte((aderegaddr[BWG_RW12S])|0x80,0x0);
WriteAde2byte((aderegaddr[CWG_RW12S])|0x80,0x0);
WriteAde2byte((aderegaddr[AVAG_RW12S])|0x80,0x0);
WriteAde2byte((aderegaddr[BVAG_RW12S])|0x80,0x0);
WriteAde2byte((aderegaddr[CVAG_RW12S])|0x80,0x0);
}
void ClearVar_Gain(void)//清无功增益
{
WriteAde2byte((aderegaddr[AVARG_RW12S])|0x80,0x0);
WriteAde2byte((aderegaddr[BVARG_RW12S])|0x80,0x0);
WriteAde2byte((aderegaddr[CVARG_RW12S])|0x80,0x0);
}
void ClearWatVarVa_Ph(void)//清相角
{
WriteAde1byte((aderegaddr[APHCAL_RW7S])|0x80,0x0);
WriteAde1byte((aderegaddr[BPHCAL_RW7S])|0x80,0x0);
WriteAde1byte((aderegaddr[CPHCAL_RW7S])|0x80,0x0);
}
void ClearWat_Os(void)//清有功偏移
{
WriteAde2byte((aderegaddr[AWATTOS_RW12S])|0x80,0x0);
WriteAde2byte((aderegaddr[BWATTOS_RW12S])|0x80,0x0);
WriteAde2byte((aderegaddr[CWATTOS_RW12S])|0x80,0x0);
}
void ClearVar_Os(void)//清无功偏移
{
WriteAde2byte((aderegaddr[AVAROS_RW12S])|0x80,0x0);
WriteAde2byte((aderegaddr[BVAROS_RW12S])|0x80,0x0);
WriteAde2byte((aderegaddr[CVAROS_RW12S])|0x80,0x0);
}
void WriteWatVa_Gain(void)//设置有功视在功率增益
{
runaderegval.AWG_VAL_RW12S=adeburnparm.AWAT_GAIN;
runaderegval.BWG_VAL_RW12S=adeburnparm.BWAT_GAIN;
runaderegval.CWG_VAL_RW12S=adeburnparm.CWAT_GAIN;
runaderegval.AVAG_VAL_RW12S=adeburnparm.AVA_GAIN;
runaderegval.BVAG_VAL_RW12S=adeburnparm.BVA_GAIN;
runaderegval.CVAG_VAL_RW12S=adeburnparm.CVA_GAIN;
WriteAde2byte((aderegaddr[AWG_RW12S])|0x80,runaderegval.AWG_VAL_RW12S);
WriteAde2byte((aderegaddr[BWG_RW12S])|0x80,runaderegval.BWG_VAL_RW12S);
WriteAde2byte((aderegaddr[CWG_RW12S])|0x80,runaderegval.CWG_VAL_RW12S);
WriteAde2byte((aderegaddr[AVAG_RW12S])|0x80,runaderegval.AVAG_VAL_RW12S);
WriteAde2byte((aderegaddr[BVAG_RW12S])|0x80,runaderegval.BVAG_VAL_RW12S);
WriteAde2byte((aderegaddr[CVAG_RW12S])|0x80,runaderegval.CVAG_VAL_RW12S);
}
void WriteVar_Gain(void)//设置无功增益
{
runaderegval.AVARG_VAL_RW12S=adeburnparm.AVAR_GAIN;
runaderegval.BVARG_VAL_RW12S=adeburnparm.BVAR_GAIN;
runaderegval.CVARG_VAL_RW12S=adeburnparm.CVAR_GAIN;
WriteAde2byte((aderegaddr[AVARG_RW12S])|0x80,runaderegval.AVARG_VAL_RW12S);
WriteAde2byte((aderegaddr[BVARG_RW12S])|0x80,runaderegval.BVARG_VAL_RW12S);
WriteAde2byte((aderegaddr[CVARG_RW12S])|0x80,runaderegval.CVARG_VAL_RW12S);
}
void WriteWatVarVa_Ph(void)//设置相角
{
runaderegval.APHCAL_VAL_RW7S=adeburnparm.AWATVARVA_PH;
runaderegval.BPHCAL_VAL_RW7S=adeburnparm.BWATVARVA_PH;
runaderegval.CPHCAL_VAL_RW7S=adeburnparm.CWATVARVA_PH;
WriteAde1byte((aderegaddr[APHCAL_RW7S])|0x80,runaderegval.APHCAL_VAL_RW7S);
WriteAde1byte((aderegaddr[BPHCAL_RW7S])|0x80,runaderegval.BPHCAL_VAL_RW7S);
WriteAde1byte((aderegaddr[CPHCAL_RW7S])|0x80,runaderegval.CPHCAL_VAL_RW7S);
}
void WriteWatVar_Os(void)//设置WAT/VAR偏移量到ADE7758
{
runaderegval.AWATTOS_VAL_RW12S=adeburnparm.AWAT_OS;
runaderegval.BWATTOS_VAL_RW12S=adeburnparm.BWAT_OS;
runaderegval.CWATTOS_VAL_RW12S=adeburnparm.CWAT_OS;
runaderegval.AVAROS_VAL_RW12S=adeburnparm.AVAR_OS;
runaderegval.BVAROS_VAL_RW12S=adeburnparm.BVAR_OS;
runaderegval.CVAROS_VAL_RW12S=adeburnparm.CVAR_OS;
WriteAde2byte((aderegaddr[AWATTOS_RW12S])|0x80,runaderegval.AWATTOS_VAL_RW12S);
WriteAde2byte((aderegaddr[BWATTOS_RW12S])|0x80,runaderegval.BWATTOS_VAL_RW12S);
WriteAde2byte((aderegaddr[CWATTOS_RW12S])|0x80,runaderegval.CWATTOS_VAL_RW12S);
WriteAde2byte((aderegaddr[AVAROS_RW12S])|0x80,runaderegval.AVAROS_VAL_RW12S);
WriteAde2byte((aderegaddr[BVAROS_RW12S])|0x80,runaderegval.BVAROS_VAL_RW12S);
WriteAde2byte((aderegaddr[CVAROS_RW12S])|0x80,runaderegval.CVAROS_VAL_RW12S);
}
void WriteWat_Os(void)//设置WAT/VAR偏移量到ADE7758
{
runaderegval.AWATTOS_VAL_RW12S=adeburnparm.AWAT_OS;
runaderegval.BWATTOS_VAL_RW12S=adeburnparm.BWAT_OS;
runaderegval.CWATTOS_VAL_RW12S=adeburnparm.CWAT_OS;
WriteAde2byte((aderegaddr[AWATTOS_RW12S])|0x80,runaderegval.AWATTOS_VAL_RW12S);
WriteAde2byte((aderegaddr[BWATTOS_RW12S])|0x80,runaderegval.BWATTOS_VAL_RW12S);
WriteAde2byte((aderegaddr[CWATTOS_RW12S])|0x80,runaderegval.CWATTOS_VAL_RW12S);
}
void WriteVar_Os(void)//设置WAT/VAR偏移量到ADE7758
{
runaderegval.AVAROS_VAL_RW12S=adeburnparm.AVAR_OS;
runaderegval.BVAROS_VAL_RW12S=adeburnparm.BVAR_OS;
runaderegval.CVAROS_VAL_RW12S=adeburnparm.CVAR_OS;
WriteAde2byte((aderegaddr[AVAROS_RW12S])|0x80,runaderegval.AVAROS_VAL_RW12S);
WriteAde2byte((aderegaddr[BVAROS_RW12S])|0x80,runaderegval.BVAROS_VAL_RW12S);
WriteAde2byte((aderegaddr[CVAROS_RW12S])|0x80,runaderegval.CVAROS_VAL_RW12S);
}
void GetVal_WatVarVa_Test(void)//取得标准校准电量
{
watvarvavaltest.AW_VAL_TEST=watvarvaval.AW_VAL;
watvarvavaltest.BW_VAL_TEST=watvarvaval.BW_VAL;
watvarvavaltest.CW_VAL_TEST=watvarvaval.CW_VAL;
watvarvavaltest.AVAR_VAL_TEST=watvarvaval.AVAR_VAL;
watvarvavaltest.BVAR_VAL_TEST=watvarvaval.BVAR_VAL;
watvarvavaltest.CVAR_VAL_TEST=watvarvaval.CVAR_VAL;
watvarvavaltest.AVA_VAL_TEST=watvarvaval.AVA_VAL;
watvarvavaltest.BVA_VAL_TEST=watvarvaval.BVA_VAL;
watvarvavaltest.CVA_VAL_TEST=watvarvaval.CVA_VAL;
}
void GetVal_WatVarVa_Test_PF05(void)//取得标准校准电量 PF=0.5
{
watvarvavaltestpf05.AW_VAL_TEST_PF05=watvarvaval.AW_VAL;
watvarvavaltestpf05.BW_VAL_TEST_PF05=watvarvaval.BW_VAL;
watvarvavaltestpf05.CW_VAL_TEST_PF05=watvarvaval.CW_VAL;
watvarvavaltestpf05.AVAR_VAL_TEST_PF05=watvarvaval.AVAR_VAL;
watvarvavaltestpf05.BVAR_VAL_TEST_PF05=watvarvaval.BVAR_VAL;
watvarvavaltestpf05.CVAR_VAL_TEST_PF05=watvarvaval.CVAR_VAL;
watvarvavaltestpf05.AVA_VAL_TEST_PF05=watvarvaval.AVA_VAL;
watvarvavaltestpf05.BVA_VAL_TEST_PF05=watvarvaval.BVA_VAL;
watvarvavaltestpf05.CVA_VAL_TEST_PF05=watvarvaval.CVA_VAL;
}
void GetVal_WatVarVa_MIN(void)//取得最小输入量下电量
{
watvarvavalmin.AW_VAL_MIN=watvarvaval.AW_VAL;
watvarvavalmin.BW_VAL_MIN=watvarvaval.BW_VAL;
watvarvavalmin.CW_VAL_MIN=watvarvaval.CW_VAL;
watvarvavalmin.AVAR_VAL_MIN=watvarvaval.AVAR_VAL;
watvarvavalmin.BVAR_VAL_MIN=watvarvaval.BVAR_VAL;
watvarvavalmin.CVAR_VAL_MIN=watvarvaval.CVAR_VAL;
watvarvavalmin.AVA_VAL_MIN=watvarvaval.AVA_VAL;
watvarvavalmin.BVA_VAL_MIN=watvarvaval.BVA_VAL;
watvarvavalmin.CVA_VAL_MIN=watvarvaval.CVA_VAL;
}
void MakeWatVa_Gain(void)//获取WAT/VA增益量
{
uint32 tempa;
int32 temp1,temp2;
float fz1,fz2,fz,fm;
//100V,5A
if((wpd800_cfg.Wpd_Param.bURating==0x00)&&(wpd800_cfg.Wpd_Param.bIRating==0x00))
{
fz=18032.445;
}
//400V 5A
else if((wpd800_cfg.Wpd_Param.bURating==0x01)&&(wpd800_cfg.Wpd_Param.bIRating==0x00))
{
fz=17080.199;
}
//100V,1A
else if((wpd800_cfg.Wpd_Param.bURating==0x00)&&(wpd800_cfg.Wpd_Param.bIRating==0x01))
{
fz=1277.152;
}
//400V,1A
else if((wpd800_cfg.Wpd_Param.bURating==0x01)&&(wpd800_cfg.Wpd_Param.bIRating==0x01))
{
fz=14517.63;
}
//100V,5A
else
{
fz=18032.445;
}
temp1=watvarvavaltest.AW_VAL_TEST;
fz2=(float)temp1;
fz1=fz-fz2;
fz1=fz1*4096;
fm=(float)temp1;
temp2=fz1/fm;
tempa=temp2&0x00000fff;
adeburnparm.AWAT_GAIN=tempa;
temp1=watvarvavaltest.BW_VAL_TEST;
fz2=(float)temp1;
fz1=fz-fz2;
fz1=fz1*4096;
fm=(float)temp1;
temp2=fz1/fm;
tempa=temp2&0x00000fff;
adeburnparm.BWAT_GAIN=tempa;
temp1=watvarvavaltest.CW_VAL_TEST;
fz2=(float)temp1;
fz1=fz-fz2;
fz1=fz1*4096;
fm=(float)temp1;
temp2=fz1/fm;
tempa=temp2&0x00000fff;
adeburnparm.CWAT_GAIN=tempa;
temp1=watvarvavaltest.AVA_VAL_TEST;
fz2=(float)temp1;
fz1=fz-fz2;
fz1=fz1*4096;
fm=(float)temp1;
temp2=fz1/fm;
tempa=temp2&0x00000fff;
adeburnparm.AVA_GAIN=tempa;
temp1=watvarvavaltest.BVA_VAL_TEST;
fz2=(float)temp1;
fz1=fz-fz2;
fz1=fz1*4096;
fm=(float)temp1;
temp2=fz1/fm;
tempa=temp2&0x00000fff;
adeburnparm.BVA_GAIN=tempa;
temp1=watvarvavaltest.CVA_VAL_TEST;
fz2=(float)temp1;
fz1=fz-fz2;
fz1=fz1*4096;
fm=(float)temp1;
temp2=fz1/fm;
tempa=temp2&0x00000fff;
adeburnparm.CVA_GAIN=tempa;
}
void MakeVar_Gain(void)//获取VAR增益量
{
uint32 tempa;
int32 temp1,temp2;
float fz1,fz2,fz,fm;
//100V,5A
if((wpd800_cfg.Wpd_Param.bURating==0x00)&&(wpd800_cfg.Wpd_Param.bIRating==0x00))
{
fz=18032.445;
}
//400V 5A
else if((wpd800_cfg.Wpd_Param.bURating==0x01)&&(wpd800_cfg.Wpd_Param.bIRating==0x00))
{
fz=17080.199;
}
//100V,1A
else if((wpd800_cfg.Wpd_Param.bURating==0x00)&&(wpd800_cfg.Wpd_Param.bIRating==0x01))
{
fz=1277.152;
}
//400V,1A
else if((wpd800_cfg.Wpd_Param.bURating==0x01)&&(wpd800_cfg.Wpd_Param.bIRating==0x01))
{
fz=14517.63;
}
//100V,5A
else
{
fz=18032.445;
}
temp1=watvarvavaltest.AVAR_VAL_TEST;
fz2=(float)temp1;
fz1=fz-fz2;
fz1=fz1*4096;
fm=(float)temp1;
temp2=fz1/fm;
tempa=temp2&0x00000fff;
adeburnparm.AVAR_GAIN=tempa;
temp1=watvarvavaltest.BVAR_VAL_TEST;
fz2=(float)temp1;
fz1=fz-fz2;
fz1=fz1*4096;
fm=(float)temp1;
temp2=fz1/fm;
tempa=temp2&0x00000fff;
adeburnparm.BVAR_GAIN=tempa;
temp1=watvarvavaltest.CVAR_VAL_TEST;
fz2=(float)temp1;
fz1=fz-fz2;
fz1=fz1*4096;
fm=(float)temp1;
temp2=fz1/fm;
tempa=temp2&0x00000fff;
adeburnparm.CVAR_GAIN=tempa;
}
void MakePh_Os(void)
{
uint32 temp1,temp2;
int32 temp3;
float fz1,fz2,fm;
double acsinval;
temp1=watvarvavaltestpf05.AW_VAL_TEST_PF05;
temp2=temp1*2;
temp1=watvarvavaltest.AW_VAL_TEST;
temp3=temp2-temp1;
if(temp3<0)
{
temp3=0-temp3;
fz1=(float)temp3;
fm=1.732;
fm=fm*temp1;
fz2=fz1/fm;
acsinval=asin(fz2);
acsinval=acsinval*2654.71;
temp3=acsinval;
temp3=temp3&0x0000007f;
adeburnparm.AWATVARVA_PH=temp3;
}
else
{
fz1=(float)temp3;
fm=1.732;
fm=fm*temp1;
fz2=fz1/fm;
acsinval=asin(fz2);
acsinval=acsinval*1327.35;
temp3=acsinval;
temp3=0-temp3;
temp3=temp3&0x0000007f;
adeburnparm.AWATVARVA_PH=temp3;
}
temp1=watvarvavaltestpf05.BW_VAL_TEST_PF05;
temp2=temp1*2;
temp1=watvarvavaltest.BW_VAL_TEST;
temp3=temp2-temp1;
if(temp3<0)
{
temp3=0-temp3;
fz1=(float)temp3;
fm=1.732;
fm=fm*temp1;
fz2=fz1/fm;
acsinval=asin(fz2);
acsinval=acsinval*2654.71;
temp3=acsinval;
temp3=temp3&0x0000007f;
adeburnparm.BWATVARVA_PH=temp3;
}
else
{
fz1=(float)temp3;
fm=1.732;
fm=fm*temp1;
fz2=fz1/fm;
acsinval=asin(fz2);
acsinval=acsinval*1327.35;
temp3=acsinval;
temp3=0-temp3;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -