📄 ade7758p.h
字号:
//i<
if(num>9700)
{
if(l7758.l>3000000)
l7758.l=0;
long_to_8bcd(l7758.l,&RAM[R_I_A+4*n]);
}
}
}
//Kw
for(n=0;n<3;n++)
{
l7758.l=0;
read7758(0x1+n,2);
if(1==r7758ok)
{
h=h+1;
for(m=0;m<2;m++)
l7758.c[m]=wr_data[1-m];
k[n]=l7758.l;
if(l7758.l>0x7fff)
{
l7758.l=0x10000-l7758.l;
s=s|table_use7758[n+4];
}
if(num!=0)
l7758.l=(l7758.l*10000)/num;//add
kw7758_use(&l7758.l);
if(num<10300)
{
if(num>9700)
long_to_8bcd(l7758.l,&RAM[R_KW_A+4*n]);
}
}
}
if(progfunction_biaotype==type_3_3)
k[1]=0;
if(h==9)
{
l7758.l=0;
k[14]=0;
k[15]=0;
for(n=0;n<3;n++)
{
if(k[n]>0x7fff)
k[15]=k[15]+0x10000-k[n];
else
k[14]=k[14]+k[n];
}
if(k[15]>k[14])
{
s=s|0x80;
k[10]=k[15]-k[14];
if(num<15000)
{
if(kw_rz_numsecond<60)
{
kw_rz_perminute=kw_rz_perminute+k[10];
kw_rz_numsecond=kw_rz_numsecond+1;
}
if((RAM[R_KWHMODE_F]==2)||(RAM[R_KWHMODE_F]==0))
{
if(kw_fz_numsecond<60)
{
kw_fz_numsecond=kw_fz_numsecond+1;
kw_fz_perminute=kw_fz_perminute+k[10];
}
if(kw_cuofeng_numsecond<60)
{
kw_cuofeng_numsecond=kw_cuofeng_numsecond+1;
kw_cuofeng_perminute=kw_cuofeng_perminute+k[10];
}
}
}
}
else
{
k[10]=k[14]-k[15];
if(num<15000)
{
if(kw_fz_numsecond<60)
{
kw_fz_numsecond=kw_fz_numsecond+1;
kw_fz_perminute=kw_fz_perminute+k[10];
}
if(kw_cuofeng_numsecond<60)
{
kw_cuofeng_numsecond=kw_cuofeng_numsecond+1;
kw_cuofeng_perminute=kw_cuofeng_perminute+k[10];
}
}
}
if(num!=0)
l7758.l=(k[10]*10000)/num;//add
kw7758_use(&l7758.l);
if(num<10300)
if(num>9700)
long_to_8bcd(l7758.l,&RAM[R_KW_Z]);
}
//Kvar
for(n=0;n<3;n++)
{
l7758.l=0;
read7758(0x4+n,2);
if(1==r7758ok)
{
h=h+1;
for(m=0;m<2;m++)
l7758.c[m]=wr_data[1-m];
k[7+n]=l7758.l;
if(l7758.l>0x7fff)
{
l7758.l=0x10000-l7758.l;
s=s|table_use7758[n];
}
if(num!=0)
l7758.l=(l7758.l*10000)/num;//add
l7758.l=(l7758.l*CK_KW)/CK_KVAR;//add-------->
kw7758_use(&l7758.l);
if(num<10300)
if(num>9700)
long_to_8bcd(l7758.l,&RAM[R_KVAR_A+4*n]);
}
}
if(progfunction_biaotype==type_3_3)
k[8]=0;
if(h==12)
{
l7758.l=0;
k[14]=0;
k[15]=0;
for(n=0;n<3;n++)
{
if(k[n+7]>0x7fff)
k[15]=k[15]+0x10000-k[7+n];
else
k[14]=k[14]+k[7+n];
}
if(k[15]>k[14])
{
s=s|0x8;
k[11]=k[15]-k[14];
}
else
k[11]=k[14]-k[15];
if(num!=0)
l7758.l=(k[11]*10000)/num;//add
l7758.l=(l7758.l*CK_KW)/CK_KVAR;//add-------->
kw7758_use(&l7758.l);
if(num<10300)
if(num>9700)
long_to_8bcd(l7758.l,&RAM[R_KVAR_Z]);
}
h=h+3;
for(n=0;n<3;n++)
{
if(k[n+7]>0x7fff)
k[n+7]=0x10000-k[n+7];
if(k[n]>0x7fff)
k[n]=0x10000-k[n];
}
if((k[10]>0x7fff)||(k[11]>0x7fff))
{
k[10]=k[10]/4;
k[11]=k[11]/4;
}
if(h==15)
{
cos_from_kw_kva(k[0],sqrt_xy(k[0],k[7]),&RAM[R_COS_A]);
cos_from_kw_kva(k[1],sqrt_xy(k[1],k[8]),&RAM[R_COS_B]);
cos_from_kw_kva(k[2],sqrt_xy(k[2],k[9]),&RAM[R_COS_C]);
cos_from_kw_kva(k[10],sqrt_xy(k[10],k[11]),&RAM[R_COS_Z]);
}
//F
h=h+1;
if(progfunction_biaotype==type_3_4)
{
read7758(0x1a,3);
if(1==r7758ok)
{
if((0x8&wr_data[0])==0)
status_5460_1=0x80;
else
status_5460_1=0;
}
}
if(progfunction_biaotype==type_3_3)
{
read7758(0x1a,3);
m=0;
for(n=0;n<21;n++)
{
read7758(0x1a,3);
if(1==r7758ok)
{
if((0x8&wr_data[1])==0x8)
{
m=1;
break;
}
}
}
if(1==m)
{
read7758(0x1a,3);//l1050us
delay_1ms_7758();//l1150
m=0;
for(n=0;n<4;n++)
{
read7758(0x1a,3);
delay_1ms_7758();
if(1==r7758ok)
{
if((0x2&wr_data[1])==0x2)
{
m=1;
break;
}
}
else
m=1;
}
if(1==m)
{
status_5460_1=0x00;
}
else
{
status_5460_1=0x80;
}
}
}
if(num<10300)
if(num>9700)
if(h==16)
status_5460_0=s;
//f
f_changed=0;
read7758(0x10,2);
if(1==r7758ok)
{
h=h+1;
l7758.l=0;
l7758.c[0]=wr_data[1];
l7758.c[1]=0xf&wr_data[0];
long_to_8bcd((100*l7758.l)/16,&wr_data[0]);
if(num<10300)
{
if(num>9700)
{
fp2=&wr_data[0];
f_changed=1;
fp1=&RAM[R_F_A];
for(n=0;n<3;n++)
{
*fp1=*fp2;
*(fp1+1)=*(fp2+1);
fp1=fp1+2;
}
}
}
}
}
if(h==17)
{
spi_status=1;
r7758mode_ok=1;
}
else
{
spi_status=0;
r7758mode_ok=0;
}
//l2004 changed------------------>start
if(f_changed==1)
{
f_changed=0;
fas=value_hex_from_2bcd(R_F_A);
if((fas>=4000)&&(fas<=6501))
{
ufas=(fas-4000)/50;
fas=rtable_7758_f_gain(ufas);
data_addr.addri=EPLOCK_7758+4*(0x2a-0x13);
if(1==read(EPLOCK,2))
{
fas1=fas+wr_data[0]*256+wr_data[1];
wr_data[0]=fas1/256;
wr_data[1]=fas1%256;
write7758(0x2a,2);
}
data_addr.addri=EPLOCK_7758+4*(0x2b-0x13);
if(1==read(EPLOCK,2))
{
fas1=fas+wr_data[0]*256+wr_data[1];
wr_data[0]=fas1/256;
wr_data[1]=fas1%256;
write7758(0x2b,2);
}
data_addr.addri=EPLOCK_7758+4*(0x2c-0x13);
if(1==read(EPLOCK,2))
{
fas1=fas+wr_data[0]*256+wr_data[1];
wr_data[0]=fas1/256;
wr_data[1]=fas1%256;
write7758(0x2c,2);
}
//
fas=value_hex_from_2bcd(R_F_A);
ufas=(fas-4000)/50;
ufas=rtable_7758_f_phase(ufas);
data_addr.addri=EPLOCK_7758+4*(0x3f-0x13);
if(1==read(EPLOCK,1))
{
wr_data[0]=ufas+wr_data[0];
write7758(0x3f,1);
}
data_addr.addri=EPLOCK_7758+4*(0x40-0x13);
if(1==read(EPLOCK,1))
{
wr_data[0]=ufas+wr_data[0];
write7758(0x40,1);
}
data_addr.addri=EPLOCK_7758+4*(0x41-0x13);
if(1==read(EPLOCK,1))
{
wr_data[0]=ufas+wr_data[0];
write7758(0x41,1);
}
}
}
//l2004 changed------------------>end
if(progfunction_biaotype==type_3_3)
{
for(h=0;h<4;h++)
{
// RAM[R_V_B+h]=0;
RAM[R_I_B+h]=0;
RAM[R_KW_B+h]=0;
RAM[R_KVAR_B+h]=0;
RAM[R_COS_B+h]=0;
}
RAM[R_F_B]=0;
RAM[R_F_B+1]=0;
}
if((low_v_a==1)||(low_v_b==1)||(low_v_c==1))
{
read7758(0x14,1);
if(1==r7758ok)
{
if(low_v_a==0)
{
if((0x3&wr_data[0])!=0)
{
wr_data[0]=0xfc&wr_data[0];
write7758(0x14,1);
}
}
else
if(low_v_c==0)
{
if((0x3&wr_data[0])!=2)
{
wr_data[0]=(0xfc&wr_data[0])+2;
write7758(0x14,1);
}
}
else
{
if((0x3&wr_data[0])!=1)
{
wr_data[0]=(0xfc&wr_data[0])+1;
write7758(0x14,1);
}
}
}
}
}
/***********************************************************/
void clr_shenshiliang()
{unsigned int l;
for(l=R_COS_Z;l<R_CURRENT_REFERENCE_L;l++)
RAM[l]=0;
for(l=0;l<3;l++)
RAM[R_CURRENT_KW+l]=0;
}
void shenshiliang()
{unsigned char l1;
unsigned char a1,value;
unsigned int k;
if(current_order_quadrant==0)
RFLAG_PHASE_ORDER=0;
else
RFLAG_PHASE_ORDER=1;
// changed ruo huan fan xiang clr
if((0x80&status_5460_0)==0)
{
k=RAM[R_KW_Z+2]+256*RAM[R_KW_Z+3];
if(k>=(RAM[R_KW_F_MAX+1]+256*RAM[R_KW_F_MAX+2]))
value=1;
else
value=0;
// mo chong zheng xiang chao xiang
if(1==value)
{
pulseset_withvaluetime(7,20000);
pulseset_withvaluetime(8,0);
}
else
{
pulseset_withvaluetime(7,0);
pulseset_withvaluetime(8,0);
}
}
else
{
k=RAM[R_KW_Z+2]+256*RAM[R_KW_Z+3];
if(k>=(RAM[R_KW_R_MAX+1]+256*RAM[R_KW_R_MAX+2]))
value=1;
else
value=0;
// mo chong fan xiang
if(1==value)
{
pulseset_withvaluetime(8,20000);
pulseset_withvaluetime(7,0);
}
else
{
pulseset_withvaluetime(7,0);
pulseset_withvaluetime(8,0);
}
}
}
/********************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -