📄 ddj.c
字号:
soe_month[i]=0;
soe_year[i]=0;
}
ADC=0;
////////////////////////////////////////////////
//保护的变量初值
SdQiDong_flag=0;
YSdQiDong_flag=0;
DSdQiDong_flag=0;
fsx_flag=0;
fsxQD_flag=0;
LXSdQiDong_flag=0;
LXYSdQiDong_flag=0;
LXDSdQiDong_flag=0;
ChzQiDong_YunXu=0;
ChzQiDong_flag =0;
ChzHz_flag=0;
ChzBiSuo_flag=0;
GZTZ_flag=0;
fsxI0Dsd_flag=0;
FHZShuChu_MaiKuan=50;
baohu_flag=0;
CKMaiKuantimer=0;
Fzhz=0;
HjsYouXiao_time=0;
////////////////////////////////////////////////
//定值的变量初值
temp_pt= &YAOTIAO_SH0UDIZHI;
for (i=0;i<0x1000;i++)
{
*temp_pt = 0;
temp_pt++;
}
for(i=0;i<6;i++)
{
DingZhiXiuGai_flag[i]=0;
}
////////////////////////////////////////////////
//AD采样的变量初值
temp_pt = &ADDRAM_SHOUDIZHI;
for( i=0; i<ADDRAMBUF_SIZE; i++ )
{
*temp_pt = 0;
temp_pt++;
}
temp_pt = &AD0BHRAM_SHOUDIZHI;
for( i=0; i<ADDBHRAMBUF_SIZE; i++ )
{
*temp_pt = 0;
temp_pt++;
}
Iar=0;
Ibr=0;
Icr=0;
Uar=0;
Ubr=0;
Ucr=0;
Iai=0;
Ibi=0;
Ici=0;
Uai=0;
Ubi=0;
Uci=0;
ADD1ramDiZhi_pt[0] = &AD0DRAM_MODIZHI;
ADD1ramDiZhi_pt[1] = &AD1DRAM_MODIZHI;
ADD1ramDiZhi_pt[2] = &AD2DRAM_MODIZHI;
ADD1ramDiZhi_pt[3] = &AD3DRAM_MODIZHI;
ADD1ramDiZhi_pt[4] = &AD4DRAM_MODIZHI;
ADD1ramDiZhi_pt[5] = &AD5DRAM_MODIZHI;
ADD1ramDiZhi_pt[6] = &AD6DRAM_MODIZHI;
ADD1ramDiZhi_pt[7] = &AD7DRAM_MODIZHI;
ADD1ramDiZhi_pt[8] = &AD8DRAM_MODIZHI;
ADD1ramDiZhi_pt[9] = &AD9DRAM_MODIZHI;
ADD1ramDiZhi_pt[10] = &AD10DRAM_MODIZHI;
ADDramDiZhi_pt[0] = &AD0DRAM_SHOUDIZHI;
ADDramDiZhi_pt[1] = &AD1DRAM_SHOUDIZHI;
ADDramDiZhi_pt[2] = &AD2DRAM_SHOUDIZHI;
ADDramDiZhi_pt[3] = &AD3DRAM_SHOUDIZHI;
ADDramDiZhi_pt[4] = &AD4DRAM_SHOUDIZHI;
ADDramDiZhi_pt[5] = &AD5DRAM_SHOUDIZHI;
ADDramDiZhi_pt[6] = &AD6DRAM_SHOUDIZHI;
ADDramDiZhi_pt[7] = &AD7DRAM_SHOUDIZHI;
ADDramDiZhi_pt[8] = &AD8DRAM_SHOUDIZHI;
ADDramDiZhi_pt[9] = &AD9DRAM_SHOUDIZHI;
ADDramDiZhi_pt[10] = &AD10DRAM_SHOUDIZHI;
ADD2ramDiZhi_pt[0] = &AD0DRAM_SHOUDIZHI;
ADD2ramDiZhi_pt[1] = &AD1DRAM_SHOUDIZHI;
ADD2ramDiZhi_pt[2] = &AD2DRAM_SHOUDIZHI;
ADD2ramDiZhi_pt[3] = &AD3DRAM_SHOUDIZHI;
ADD2ramDiZhi_pt[4] = &AD4DRAM_SHOUDIZHI;
ADD2ramDiZhi_pt[5] = &AD5DRAM_SHOUDIZHI;
ADD2ramDiZhi_pt[6] = &AD6DRAM_SHOUDIZHI;
ADD2ramDiZhi_pt[7] = &AD7DRAM_SHOUDIZHI;
ADD2ramDiZhi_pt[8] = &AD8DRAM_SHOUDIZHI;
ADD2ramDiZhi_pt[9] = &AD9DRAM_SHOUDIZHI;
ADD2ramDiZhi_pt[10] = &AD10DRAM_SHOUDIZHI;
/*
ADDLBramDiZhi_pt[0] = &AD0LBRAM_SHOUDIZHI;
ADDLBramDiZhi_pt[1] = &AD1LBRAM_SHOUDIZHI;
ADDLBramDiZhi_pt[2] = &AD2LBRAM_SHOUDIZHI;
ADDLBramDiZhi_pt[3] = &AD3LBRAM_SHOUDIZHI;
ADDLBramDiZhi_pt[4] = &AD4LBRAM_SHOUDIZHI;
ADDLBramDiZhi_pt[5] = &AD5LBRAM_SHOUDIZHI;
ADDLBramDiZhi_pt[6] = &AD6LBRAM_SHOUDIZHI;
ADDLBramDiZhi_pt[7] = &AD7LBRAM_SHOUDIZHI;
ADDLBramDiZhi_pt[8] = &AD8LBRAM_SHOUDIZHI;
ADDLBramDiZhi_pt[9] = &AD9LBRAM_SHOUDIZHI;
ADDLBramDiZhi_pt[10] = &AD10LBRAM_SHOUDIZHI; */
ADDBHramDiZhi_pt[0] = &AD0BHRAM_SHOUDIZHI;
ADDBHramDiZhi_pt[1] = &AD1BHRAM_SHOUDIZHI;
ADDBHramDiZhi_pt[2] = &AD2BHRAM_SHOUDIZHI;
ADDBHramDiZhi_pt[3] = &AD3BHRAM_SHOUDIZHI;
ADDBHramDiZhi_pt[4] = &AD4BHRAM_SHOUDIZHI;
ADDBHramDiZhi_pt[5] = &AD5BHRAM_SHOUDIZHI;
ADDBHramDiZhi_pt[6] = &AD6BHRAM_SHOUDIZHI;
ADDBHramDiZhi_pt[7] = &AD7BHRAM_SHOUDIZHI;
ADDBHramDiZhi_pt[8] = &AD8BHRAM_SHOUDIZHI;
ADDBHramDiZhi_pt[9] = &AD9BHRAM_SHOUDIZHI;
ADDBHramDiZhi_pt[10] = &AD10BHRAM_SHOUDIZHI;
/* ADLvBoShuJu0_pt[0] = &AD0XRAM_CHUSHIDIZHI;
ADLvBoShuJu0_pt[1] = &AD1XRAM_CHUSHIDIZHI;
ADLvBoShuJu0_pt[2] = &AD2XRAM_CHUSHIDIZHI;
ADLvBoShuJu0_pt[3] = &AD3XRAM_CHUSHIDIZHI;
ADLvBoShuJu0_pt[4] = &AD4XRAM_CHUSHIDIZHI;
ADLvBoShuJu0_pt[5] = &AD5XRAM_CHUSHIDIZHI;
ADLvBoShuJu0_pt[6] = &AD6XRAM_CHUSHIDIZHI;
ADLvBoShuJu0_pt[7] = &AD7XRAM_CHUSHIDIZHI;
ADLvBoShuJu0_pt[8] = &AD8XRAM_CHUSHIDIZHI;
ADLvBoShuJu0_pt[9] = &AD9XRAM_CHUSHIDIZHI;
ADLvBoShuJu0_pt[10] = &AD10XRAM_CHUSHIDIZHI;
ADLvBoShuJu0_pt[11] = &AD11XRAM_CHUSHIDIZHI;*/
/*
ADLvBoShuJu1_pt[0] = &AD0XDRAM_SHOUDIZHI;
ADLvBoShuJu1_pt[1] = &AD1XDRAM_SHOUDIZHI;
ADLvBoShuJu1_pt[2] = &AD2XDRAM_SHOUDIZHI;
ADLvBoShuJu1_pt[3] = &AD3XDRAM_SHOUDIZHI;
ADLvBoShuJu1_pt[4] = &AD4XDRAM_SHOUDIZHI;
ADLvBoShuJu1_pt[5] = &AD5XDRAM_SHOUDIZHI;
ADLvBoShuJu1_pt[6] = &AD6XDRAM_SHOUDIZHI;
ADLvBoShuJu1_pt[7] = &AD7XDRAM_SHOUDIZHI;
ADLvBoShuJu1_pt[8] = &AD8XDRAM_SHOUDIZHI;
ADLvBoShuJu1_pt[9] = &AD9XDRAM_SHOUDIZHI;
ADLvBoShuJu1_pt[10] = &AD10XDRAM_SHOUDIZHI; */
IaZengYi=2140.0/4098.0;
IbZengYi=2147.0/4098.0;
IcZengYi=2147.0/4098.0;
UaZengYi=7;
UbZengYi=7;
UcZengYi=7;
}
void WriteBHDingZhi(void)/*往EEPROM中写保护定值*/
{
unsigned int I,i,DINGZHI_SUM;
int J,J1;
int *p_temp;
if(DingZhiXiuGai_flag[0]==1)
{
p_temp=&YAOTIAO_SH0UDIZHI;
for (I=0;I<20;I++) /*写遥调数值到E2prom中的第1模块1-128页*/
{
p_temp=&YAOTIAO_SH0UDIZHI+I;
X5643_write(I,*p_temp);
ys(7000);
}
for (I=0;I<20;I++)
{
p_temp=&DUDINGZHI_TEMP+I;
*p_temp=X5643_read(I);
//readI2C(0xa8,J,16,p_temp);
ys(7000);
}
p_temp=&DUDINGZHI_TEMP;
DINGZHI_SUM=0;
for(i=0;i<20;i++)
{
DINGZHI_SUM=DINGZHI_SUM+*p_temp;
p_temp++;
}
DINGZHI_SUM=DINGZHI_SUM&0x00ff;
if(DINGZHI_SUM!=*p_temp)
{
YaoTiaoDZValid_flag=0;
}
else
{
YaoTiaoDZValid_flag=1;
}
}
if(DingZhiXiuGai_flag[1]==1)
{
for (I=0;I<32;I++) /*写第一组保护定值E2prom的第2模块1-128页*/
{
p_temp=&BAOHU0_SH0UDIZHI+I;
X5643_write(0x80+I,*p_temp);
ys(7000);
}
for (I=0;I<32;I++)
{
p_temp=&DUDINGZHI_TEMP+I;
//readI2C(0xaa,J,16,p_temp);
*p_temp=X5643_read(0x80+I);
ys(7000);
}
p_temp=&DUDINGZHI_TEMP;
DINGZHI_SUM=0;
for(i=0;i<32;i++)
{
DINGZHI_SUM=DINGZHI_SUM+*p_temp;
p_temp++;
}
DINGZHI_SUM=DINGZHI_SUM&0x00ff;
if(DINGZHI_SUM!=*p_temp)
{
DingZhiValid_flag1=0;
}
else
{
DingZhiValid_flag1=1;
}
}
if(DingZhiXiuGai_flag[2]==1)
{
J1=0;
for (I=128;I<133;I++) /*写第二组保护定值E2prom的第2模块129-256页*/
{
J=I*16;
p_temp=&BAOHU1_SH0UDIZHI+J1;
writeI2C(0xaa,J,16,p_temp );
ys(7000);
J1=J1+16;
}
J1=0;
for (I=128;I<133;I++)
{
J=16*I;
p_temp=&DUDINGZHI_TEMP+J1;
readI2C(0xaa,J,16,p_temp);
ys(7000);
J1=J1+16;
}
p_temp=&DUDINGZHI_TEMP;
DINGZHI_SUM=0;
for(i=0;i<72;i++)
{
DINGZHI_SUM=DINGZHI_SUM+*p_temp;
p_temp++;
}
DINGZHI_SUM=DINGZHI_SUM&0x00ff;
if(DINGZHI_SUM!=*p_temp)
{
DingZhiValid_flag2=0;
}
else
{
DingZhiValid_flag2=1;
}
}
if(DingZhiXiuGai_flag[3]==1)
{
for (I=0;I<5;I++) /*写第三组保护定值E2prom的第3模块1 -128页*/
{
J=I*0x10;
p_temp=&BAOHU2_SH0UDIZHI+J;
writeI2C(0xac,J,16,p_temp );
ys(7000);
}
for (I=0;I<5;I++)
{
J=16*I;
p_temp=&DUDINGZHI_TEMP+J;
readI2C(0xac,I*16,16,p_temp);
ys(7000);
}
p_temp=&DUDINGZHI_TEMP;
DINGZHI_SUM=0;
for(i=0;i<72;i++)
{
DINGZHI_SUM=DINGZHI_SUM+*p_temp;
p_temp++;
}
DINGZHI_SUM=DINGZHI_SUM&0x00ff;
if(DINGZHI_SUM!=*p_temp)
{
DingZhiValid_flag3=0;
}
else
{
DingZhiValid_flag3=1;
}
}
if(DingZhiXiuGai_flag[4]==1)
{
J1=0;
for (I=128;I<133;I++) /*写第四组保护定值E2prom的第3模块129-256页*/
{
J=I*16;
p_temp=&BAOHU3_SH0UDIZHI+J1;
writeI2C(0xac,J,16,p_temp );
ys(7000);
J1=J1+16;
}
J1=0;
for (I=128;I<133;I++)
{
J=16*I;
p_temp=&DUDINGZHI_TEMP+J1;
readI2C(0xac,J,16,p_temp);
ys(7000);
J1=J1+16;
}
p_temp=&DUDINGZHI_TEMP;
DINGZHI_SUM=0;
for(i=0;i<72;i++)
{
DINGZHI_SUM=DINGZHI_SUM+*p_temp;
p_temp++;
}
DINGZHI_SUM=DINGZHI_SUM&0x00ff;
if(DINGZHI_SUM!=*p_temp)
{
DingZhiValid_flag4=0;
}
else
{
DingZhiValid_flag4=1;
}
}
if(DingZhiXiuGai_flag[5]==1)
{
for (I=0;I<5;I++) /*写第五组保护定值E2prom的第4模块1 -128页*/
{
J=I*16;
p_temp=&BAOHU4_SH0UDIZHI+J;
J=I*16;
writeI2C(0xae,J,16,p_temp );
ys(7000);
}
for (I=0;I<5;I++)
{
J=16*I;
p_temp=&DUDINGZHI_TEMP+J;
readI2C(0xae,I*16,16,p_temp);
ys(7000);
}
p_temp=&DUDINGZHI_TEMP;
DINGZHI_SUM=0;
for(i=0;i<72;i++)
{
DINGZHI_SUM=DINGZHI_SUM+*p_temp;
p_temp++;
}
DINGZHI_SUM=DINGZHI_SUM&0x00ff;
if(DINGZHI_SUM!=*p_temp)
{
DingZhiValid_flag5=0;
}
else
{
DingZhiValid_flag5=1;
}
}
}
void YouXiaoZhiJS(void) /* 有效值计算 */
{
/*
电压计算结果为有效值的平方
电流计算结果为有效值*100的平方
*/
long int tempr,tempi;
long int temp;
unsigned long int tempIr,tempIi;
tempr=Iar;
tempi=Iai;
tempIr=((tempr>>10)*(tempr>>10));
tempIi=((tempi>>10)*(tempi>>10));
IamVal=tempr*tempIr+tempIi;
tempr=Ibr;
tempi=Ibi;
tempIr=((tempr>>10)*(tempr>>10));
tempIi=((tempi>>10)*(tempi>>10));
IbmVal=tempIr+tempIi;
tempr=Icr;
tempi=Ici;
tempIr=((tempr>>10)*(tempr>>10));
tempIi=((tempi>>10)*(tempi>>10));
IcmVal=tempIr+tempIi;
tempr=Uar;
tempi=Uai;
tempIr=((tempr>>10)*(tempr>>10));
tempIi=((tempi>>10)*(tempi>>10));
UamVal=tempIr+tempIi;
tempr=Ubr;
tempi=Ubi;
tempIr=((tempr>>10)*(tempr>>10));
tempIi=((tempi>>10)*(tempi>>10));
UbmVal=tempIr+tempIi;
//Ub1mVal=2;
tempr=Ucr;
tempi=Uci;
tempIr=((tempr>>10)*(tempr>>10));
tempIi=((tempi>>10)*(tempi>>10));
UcmVal=(tempr*tempr+tempi*tempi);
}
void ReadBHDingZhip(void)/* 从EEPROM中读保护定值并校验 */
{
unsigned int J,I,DINGZHI_SUM,i,J1;
int *p_temp;
/*从X5643读系统参数,送相应变量*/
DINGZHI_SUM=0;
p_temp=&DUDINGZHI_TEMP;
for (I=0;I<18;I++)
{
p_temp=&DUDINGZHI_TEMP;
*p_temp=X5643_read(I);
DINGZHI_SUM=DINGZHI_SUM+(*p_temp);
p_temp++;
}
*p_temp=X5643_read(18);
WaiWDT;
DINGZHI_SUM=DINGZHI_SUM&0x00ff;
if(DINGZHI_SUM==*p_temp)
{
YaoTiaoDingZhiP();
WaiWDT;
}
else
{
YiaoTiaoIni();
WaiWDT;
}
/*从X5643模块中读保护定值,送相应变量*/
WaiWDT;
DINGZHI_SUM=0;
for (I=0;I<30;I++)
{
p_temp=&DUDINGZHI_TEMP;
*p_temp=X5643_read((DZTAOHAO-1)*0x80+I);
DINGZHI_SUM=DINGZHI_SUM+(*p_temp);
p_temp++;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -