📄 hgq.c
字号:
ad7538=0;
jdq_ctr(2,0x8+0x60+0x1);
jdq_ctr(1,0x01);
ub_xs=6.00;
ua_xs=0.30;
for(i=0x100;i<0x3eff;i=i+0x100)
{
ad7538=i;
for(j=0;j<0xffff;j++)
for(k=0;k<0x10;k++);
sample(5);
kkfft();
if(ik>0.4||uk>3.0) break;
}
sample(5);
kkfft();
if(uk*ua_xs<0.3)
{
jdq_ctr(2,0x8+0x60);
ua_xs=3.0;
sample(5);
kkfft();
if(uk*ua_xs<0.3)
{
jdq_ctr(1,0x01+0x80);
ua_xs=30.0;
}
}
for(i=0;i<10;i++)
{
sample(5);
kkfft();
ukr1[i]=uk/(ik/Rcaiyang1);
}
CT_bd=ratio_lb(ukr1);
CT_cos=cos(angle1*pii/180.0);
CT_R=CT_bd*CT_cos;
CT_X=CT_bd*sin(angle1*pii/180.0);
if(CT2_mode ==0)
{
CT_VA=25.0*CT_bd;
}
else CT_VA=CT_bd;
CT_test[15]=CT_R;
CT_test[16]=CT_X;
CT_test[17]=CT_bd;
CT_test[18]=CT_cos;
CT_test[19]=CT_VA;
init_dsp();
}
/*---------PT burden measure----------*/
void PT_burden(void)
{
unsigned int i,j,k;
reg_tcr=0x0c20;
out_fre=50.0;
reg_prd=(int)(15625.0/out_fre-1.0);
sample_prd=1;
sample_ctr(256);
ad7538=0;
admit_ctr_pga=0x8+0x04;
jdq_ctr(2,0x8+0x04+0x1);
jdq_ctr(1,0x01);
R_caiyang=20.00;
ub_xs=1.00;
ua_xs=0.30;
for(i=0x100;i<0x3eff;i=i+0x100)
{
ad7538=i;
for(j=0;j<0xffff;j++)
for(k=0;k<0x10;k++);
sample(5);
kkfft();
if(uk>6.0||ik>3.0) break;
}
sample(5);
kkfft();
if(ik<0.3)
{
admit_ctr_pga=0x8+0x10;
jdq_ctr(2,0x8+0x10+0x1);
R_caiyang=200.0;
for(j=0;j<0xffff;j++);
sample(5);
kkfft();
/* if(ik<0.3)
{
admit_ctr_pga=0x8;
jdq_ctr(2,0x8+0x1);
R_caiyang=2000.0;
}*/
}
admit_pga();
for(i=0;i<10;i++)
{
sample(5);
kkfft();
ukr1[i]=(ik/R_caiyang)*1000.0/uk;
}
PT_bd=ratio_lb(ukr1);
PT_cos=cos(angle1*pii/180.0);
PT_G=PT_bd*PT_cos-0.0016;
PT_B=PT_bd*sin(-angle1*pii/180.0);
PT_bd=sqrt(PT_G*PT_G+PT_B*PT_B);
if(PT_mode==0) PT_VA=10.0*PT_bd;
else if(PT_mode==1) PT_VA=10.0*PT_bd/3.0;
else PT_VA=10.0*PT_bd/9.0;
PT_arr[4]=PT_G;
PT_arr[5]=PT_B;
PT_arr[6]=PT_bd;
PT_arr[7]=PT_cos;
PT_arr[8]=PT_VA;
init_dsp();
}
/*----------PT error measure-----------*/
void PT_err(void)
{
PT_measure();
if(PT1_mode==0)PT1_volt=PT1_temp*1.0;
else PT1_volt=PT1_temp/sqrt_3;
if(PT_mode==0)PT2_volt=100.0;
else if(PT_mode==1)PT2_volt=100.0/sqrt_3;
else PT2_volt=100.0/3.0;
PT_SR=PT1_volt/PT2_volt;
PT_error=(PT_bb-PT_SR)/PT_SR*100.0;
PT_ang_err=PT_angle;
PT_arr[2]=PT_error;
PT_arr[3]=PT_ang_err;
}
/*-------------PT measure------------*/
void PT_measure(void)
{
unsigned int i,j,k;
float PT_bak[11];
PT_ctr();
gain_ctr();
for(i=0;i<10;i++)
{
for(j=0;j<0xffff;j++)
for(k=0;k<0x10;k++);
sample(1);
kkfft();
uk=uk/pga_xs[0];
ik=ik/pga_xs[1];
PT_bak[i]=uk/ik;
}
PT_bb=ratio_lb(PT_bak);
if(angle1>180.0) angle1-=360.0;
PT_angle=angle1*60.0;
PT_arr[0]=PT_bb;
PT_arr[1]=PT_angle;
ad7538=0;
for(j=0;j<0xffff;j++)
for(k=0;k<0x20;k++);
init_dsp();
}
/*
void PT_ctr(void)
{
unsigned int i,j;
ad7538=0;
jdq_ctr(2,0x2+0x40+0x84);
jdq_ctr(1,0x00);
out_fre=50.0;
reg_tcr=0x0c20;
reg_prd=(int)(15625.0/out_fre-1.0);
sample_prd=1;
sample_ctr(256);
ad7538=0x3fff;
ua_xs=2.00/624.0;
ub_xs=10.0/110.0;
for(i=0;i<0xffff;i++)
for(j=0;j<0x10;j++);
sample(1);
kkfft();
ik=ik*ub_xs;
if(ik>0.28) return;
jdq_ctr(1,0x40);
ub_xs=1.0;
sample(1);
kkfft();
ik=ik*ub_xs;
if(ik>0.25) return;
jdq_ctr(1,0x50);
ub_xs=12.0;
}
*/
void PT_ctr(void)
{
unsigned int i,j;
unsigned int sy_flag=1;
ad7538=0;
/* jdq_ctr(2,0x2+0x40+0x84+0x20);*/
jdq_ctr(2,0x2+0x40+0x20);
jdq_ctr(1,0x00);
out_fre=50.0;
reg_tcr=0x0c20;
reg_prd=(int)(15625.0/out_fre-1.0);
sample_prd=1;
sample_ctr(256);
ua_xs=2.00/624.0;
ub_xs=10.0/110.0;
for(i=0;i<0x100;i=i+0x10)
{
ad7538=i;
sample(5);
ik=av(pi);
if(ik>0.6)
{
sy_flag=0;
break;
}
}
if(sy_flag==1)
{
for(i=0x100;i<0x3eff;i=i+0x100)
{
ad7538=i;
sample(5);
ik=av(pi);
if(ik>0.6)
{
sy_flag=0;
break;
}
}
}
if(sy_flag==1) ad7538=0x3fff;
for(i=0;i<0xffff;i++)
for(j=0;j<0x10;j++);
sample(1);
kkfft();
ik=ik*ub_xs;
if(ik>0.28) return;
jdq_ctr(1,0x40);
ub_xs=1.0;
sample(1);
kkfft();
ik=ik*ub_xs;
if(ik>0.25) return;
jdq_ctr(1,0x50);
ub_xs=12.0;
}
/*-------------ratio adjust-------------*/
void bb_adjust(void)
{
unsigned int i,j;
jdq_ctr(2,0x2+0x84);
jdq_ctr(1,0x0+0x40);
for(i=0x2000;;i=i)
{
ua_xs=2.00/610.00;
ub_xs=1.000;
ad7538=i;
for(j=0;j<0xffff;j++);
gain_ctr();
sample(1);
kkfft();
uk=uk/pga_xs[0];
ik=ik/pga_xs[1];
bb=uk/ik;
err=(100.000-bb)/100.00;
}
}
/*------------adjust voltage------------*/
void adjust_volt(float bdz)
{
unsigned int i,j,k,sy_flag=0;
float I_er;
jdq_ctr(2,0x8+0x40+0x20);
if(bdz<=3.00)
{
jdq_ctr(1,0xa+0x50);
ua_xs=1.00;
}
else if(bdz<=15.1)
{
jdq_ctr(1,0x8+0x50);
ua_xs=124.0/624.0;
}
else
{
jdq_ctr(1,0x4+0x50);
ua_xs=24.0/624.0;
}
ub_xs=12.00;
for(i=0x100;i<0x3eff;i=i+0x100)
{
ad7538=i;
for(j=0;j<0xffff;j++)
for(k=0;k<0x10;k++);
sample(1);
uk=av(pr)/ua_xs;
if(uk>bdz)
{
sy_flag=1;
break;
}
sample(5);
I_er=av(pi)/6.00/Rcaiyang1;
if(I_er>0.20) break;
/* if(uk>bdz) break;*/
}
if(sy_flag==1)
{
sample(1);
kkfft();
if(uk>bdz)
{
for(k=i-0x10;k>0x10;k=k-0x10)
{
ad7538=k;
for(j=0;j<0xffff;j++);
sample(1);
kkfft();
if(uk<bdz) return;
}
}
else
{
for(k=i+0x10;k<0x3eff;k=k+0x10)
{
ad7538=k;
for(j=0;j<0xffff;j++);
sample(1);
kkfft();
if(uk>bdz) return;
}
}
}
}
/*----------------------------*/
/*
interrupt void c_int23()
{
i++;
reg_icr=0x0d;
reg_p=(unsigned int *)reg_ifr;
*reg_p=0x2;
s[i]=max125;
}
*/
/*-----------init dsp-------------*/
void init_dsp(void)
{
reg_wsgr=0xffff;
ad7538=0x0;
jdq_ctr(2,0x01+0x8);
jdq_ctr(1,0x00);
pga=0x00;
reg_aspcr=0x2000;
/*tout control frequency*/
reg_tcr=0x0c20;
/*----------f=CLKOUT1/((TDDR+1)*(PRD+1))----------*/
/*----------f=50Hz----1,0x0c23---2,0x004d---------*/
/*----------f=1562Hz--1,0x0c21---2,0x0004---------*/
out_fre=50.0;
reg_prd=(int)(15625.0/out_fre-1.0);
sample_prd=1;
}
/*----------JDQ-CONTRAL--------*/
void jdq_ctr(int jdq_no,int a)
{
unsigned int i,j;
if(jdq_no==1)
pout1=a;
else if(jdq_no==2)
pout2=a;
for(i=0;i<0x7fff;i++)
for(j=0;j<10;j++);
}
/*----------sample frequency control----------*/
void sample_ctr(unsigned int sample_fre)
{
if(sample_fre==256)
pout3=0x00;
else if(sample_fre==128)
pout3=0x10;
else if(sample_fre==64)
pout3=0x20;
else if(sample_fre==32)
pout3=0x30;
else if(sample_fre==16)
pout3=0x40;
else
pout3=0xf0; /*close*/
N=sample_fre*sample_prd;
}
/*-----------DC resistant measure ctr----------*/
void DC_ctr(void)
{
int i;
jdq_ctr(2,0x40+0x01);
jdq_ctr(1,0x01);
sample(5);
for(i=0;i<N;i++)
{
if(fabs(pr[i])>0.4)
{
ua_xs=0.30;
break;
}
}
if(i<N) return;
jdq_ctr(2,0x40+0x00);
sample(5);
for(i=0;i<N;i++)
{
if(fabs(pr[i])>0.4)
{
ua_xs=3.00;
break;
}
}
if(i<N) return;
jdq_ctr(2,0x40);
jdq_ctr(1,0x80+0x1);
ua_xs=30.0;
/* sample(5);
for(i=0;i<N;i++)
{
if(fabs(pr[i])>0.4)
{
ua_xs=33.0;
break;
}
}
return;
*/
}
/*----------DC RESISTANT MEASURE--------*/
void DC_R(void)
{
int i,j;
reg_tcr=0x0c20;
out_fre=50.0;
reg_prd=(int)(15625.0/out_fre-1.0);
sample_prd=1;
sample_ctr(256);
DC_ctr();
for(i=0;i<0x7fff;i++)
for(j=0;j<0x80;j++);
sample(5);
ub_xs=1.00;
/*
kkfft();
uk=fr[0]/ua_xs/256.0;
ik=-fi[0]/2.00/256.0;
Rs=uk/ik;
*/
uk=avg(pr)/ua_xs;
ik=1.250;
/* ik=-avg(pi)/2.00/ub_xs;*/
Rs=fabs(uk/ik);
ad7538=0;
for(i=0;i<0x7fff;i++)
for(j=0;j<0x80;j++);
jdq_ctr(2,0x8+0x84);
}
/*--------------ratio ctr---------------*/
void bb_ctr(void)
{
int U_ct,U1_jdq,U2_jdq;
unsigned int i,j;
float U1,U2;
pga=0x00;
U1=SR*0.100;
adjust_volt(U1);
}
/*----------CT direct ratio measure----------*/
void direct_ratio(void)
{
unsigned int i,j,k;
int ik_flag=0;
init_dsp();
out_fre=100.0;
reg_tcr=0x0c20;
reg_prd=(int)(15625.0/out_fre-1.0);
sample_prd=2;
sample_ctr(128);
jdq_ctr(2,0x8+0x40+0x20);
ua_xs=0.30;
ub_xs=6.00;
for(i=0x100;i<0x3eff;i=i+0x100)
{
ad7538=i;
for(j=0;j<0xffff;j++);
sample(5);
kkfft();
if(ik>0.10) break;
}
jdq_ctr(1,0x4+0x40);
ua_xs=24.0/624.0;
ub_xs=1.00;
sample(1);
kkfft();
if(uk*ua_xs<0.5)
{
if(ik*ub_xs<0.25)
{
ik_flag=1;
jdq_ctr(1,0x8+0x50);
ub_xs=12.00;
ua_xs=124.0/624.0;
}
else
{
jdq_ctr(1,0x8+0x40);
ua_xs=124.0/624.0;
ub_xs=1.00;
}
sample(1);
kkfft();
if(uk*ua_xs<0.5)
{
if(ik_flag==0)
{
jdq_ctr(1,0xa+0x40);
ua_xs=1.00;
}
else
{
jdq_ctr(1,0xa+0x50);
ua_xs=1.00;
}
}
}
else
{
if(ik*ub_xs<0.25)
{
jdq_ctr(1,0x4+0x50);
ub_xs=12.00;
ua_xs=24.0/624.0;
}
}
gain_ctr();
for(i=0;i<10;i++)
{
sample(1);
kkfft();
uk=uk/pga_xs[0];
ik=ik/pga_xs[1];
bb=uk/ik;
bak_uk[i]=uk;
bak_ik[i]=ik;
ukr1[i]=bb;
ang1[i]=angle1;
}
bb=ratio_lb(ukr1);
angle1=ratio_lb(ang1);
if(angle1<10.0||angle1>350.0) CT_jx=0;
else CT_jx=1;
ad7538=0x00;
for(i=0;i<0xffff;i++);
DC_R();
CT_test[0]=bb;
CT_test[1]=Rs;
init_dsp();
}
/*------------ratio measure--------------*/
void ratio(void)
{
int ua_pgaxs,ub_pgaxs;
float I_er;
unsigned int i,j,k;
reg_tcr=0x0c20;
out_fre=100.0;
reg_prd=(int)(15625.0/out_fre-1.0);
sample_prd=2;
sample_ctr(128);
jdq_ctr(1,0x00);
/* jdq_ctr(2,0x8+0x84); */
jdq_ctr(2,0x8+0x40+0x20);
/*---pga ctr------7,6,5--ub 2,1,0--ua*/
/* set_DA(0x800);
ua_xs=120.0/630.0;
ub_xs=6.00;*/
bb_ctr();
for(i=0;i<0xffff;i++);
for(j=0;j<0x40;j++);
gain_ctr();
for(i=0;i<10;i++)
{
for(j=0;j<0xffff;j++)
for(k=0;k<0x10;k++);
sample(5);
kkfft();
I_er=ik/6.00/Rcaiyang1*Rs*ub_xs;
sample(1);
kkfft();
uk=uk/pga_xs[0];
ik=ik/pga_xs[1];
bb=(uk-I_er)/ik;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -