📄 analysis.cpp
字号:
jl=(sr1*sx1+sx1*srr-srx*sr1)/(sr1*sq1+sq1*srr-sr1*sr1);
if((rf1<5.0)&&(sq1!=0.))jl=sx1/sq1;
}
(se+se_se)->order=tab[3];(se+se_se)->trait=trait;
(se+se_se)->line=128;(se+se_se)->arrange=16;
sprintf((char *)(se+se_se)->caps,"%-.2fKM",jl);
fFaultJL = jl;
se_se++; //故障距离
(se+se_se)->order=tab[21];
(se+se_se)->trait=trait;
*va1=(sq1>.0001)?rf1:rf2;
(se+se_se)->line=128;(se+se_se)->arrange=16;
sprintf((char *)(se+se_se)->caps,"%-.2f欧姆",*va1/nz);
se_se++; //故障点电阻值
(se+se_se)->order=tab[30];(se+se_se)->trait=trait;
(se+se_se)->line=128;(se+se_se)->arrange=16;
sprintf((char *)(se+se_se)->caps,"%-.2f欧姆",jl*x1);
se_se++;
(se+se_se)->order=tab[31];(se+se_se)->trait=trait;
(se+se_se)->line=128;(se+se_se)->arrange=16;
sprintf((char *)(se+se_se)->caps,"%-.2f欧姆",*va1/nz+jl*r1);
se_se++;
continue;
} //// if(np==0)
else if(np==1)
{
nqd=4;
jlpqc1(&nqd,&nqc1,&tzxb,0);
if(nqc1>1000)nqc=lon-3;
else nqc=nqc1;
if(np==2)
{
(se+se_se)->order=tab[1];(se+se_se)->trait=trait;
(se+se_se)->line=128;(se+se_se)->arrange=16;
i = (int)(((seguik+ds)->t-(seguik+dsqc)->t)*1000.);
sprintf((char *)(se+se_se)->caps,"%-.3fS",(i+nqc1-nqd1)*.001);
FaultDelayTime = (char *)(se+se_se)->caps;
se_se++; //故障持续时间
dsqc=ds;
if(tzxb)
{
(se+se_se)->order=tab[15];(se+se_se)->trait=trait;
(se+se_se)->line=128;(se+se_se)->arrange=16;
ca=(se+se_se)->caps;j=0;
if(tzxb&8){*(ca+j)=uiabcn[2];j++;*(ca+j)=uiabcn[3];j++;}
if(tzxb&4){*(ca+j)=uiabcn[6];j++;*(ca+j)=uiabcn[7];j++;}
if(tzxb&2){*(ca+j)=uiabcn[10];j++;*(ca+j)=uiabcn[11];j++;}
if(tzxb&1){*(ca+j)=uiabcn[14];j++;*(ca+j)=uiabcn[15];j++;}
*(ca+j)=0;
se_se++; //跳闸相别
}
if(nqc1<lon-35)
{
(se+se_se)->order=tab[26];(se+se_se)->trait=trait;
(se+se_se)->line=128;(se+se_se)->arrange=16;
for(*ia1=*ib1=*ic1=0,i=nqc1;i<nqc1+20;i++)
{
if(*ia1<fabs(*(va+i)))*ia1=fabs(*(va+i));
if(*ib1<fabs(*(vb+i)))*ib1=fabs(*(vb+i));
if(*ic1<fabs(*(vc+i)))*ic1=fabs(*(vc+i));
}
sprintf((char *)(se+se_se)->caps,"A:%-.3gKV B:%-.3gKV C:%-.3gKV", *ia1*ny/1000.,*ib1*ny/1000.,*ic1*ny/1000.);
se_se++; //故障切除后第一周波的母线电压峰值
(se+se_se)->order=tab[24];
(se+se_se)->trait=trait;
(se+se_se)->line=128;
(se+se_se)->arrange=16;
if(lon-nqc1>=30)i=2;
else i=1;
jl2(ia,ia1,nqc1+3,va1,i);
jl2(ib,ib1,nqc1+3,vb1,i);
jl2(ic,ic1,nqc1+3,vc1,i);
sprintf((char *)(se+se_se)->caps,"A:%-.3gKA B:%-.3gKA C:%-.3gKA", *va1*nl/1000.,*vb1*nl/1000.,*vc1*nl/1000.);
se_se++; //故障切除后第一周波的故障电流有效值
(se+se_se)->order=tab[25];
(se+se_se)->trait=trait;
(se+se_se)->line=128;
(se+se_se)->arrange=16;
if(lon-nqc1>=30)i=2;
else i=1;
jl2(va,va1,nqc1+3,ia1,i);
jl2(vb,vb1,nqc1+3,ib1,i);
jl2(vc,vc1,nqc1+3,ic1,i);
sprintf((char *)(se+se_se)->caps,"A:%-.3gKV B:%-.3gKV C:%-.3gKV", *ia1*ny/1000.,*ib1*ny/1000.,*ic1*ny/1000.);
se_se++; //故障切除后第一周波的母线电压有效值
}
}
ca=(se+xbqc)->caps;
j=0;
while(*(ca+j))j++;
for(i=5;i<nqc-7;i++)
{
k=(*(j2+i))&0xf;
if((k==1)||(k==2)||(k==4)||(k==8))continue;
if(!k)continue;
for(jj=0;jj<4;jj++)
{
m=*(j2+i-jj);
if(k!=m)break;
}
if(jj!=4)continue;
if(k<=dsgu)continue;
dsgu=k;
*(ca+j)=0xd7;
j++;
*(ca+j)=0xaa;
j++;
if(k&8){*(ca+j)=uiabcn[2];j++;*(ca+j)=uiabcn[3];j++;Wyyph = 1;}
if(k&4){*(ca+j)=uiabcn[6];j++;*(ca+j)=uiabcn[7];j++;Wyyph = 2;}
if(k&2){*(ca+j)=uiabcn[10];j++;*(ca+j)=uiabcn[11];j++;Wyyph = 3;}
if(k&1){*(ca+j)=uiabcn[14];j++;*(ca+j)=uiabcn[15];j++;Wyyph = 4;}
}
*(ca+j)=0;
m_strFaultPhase = _T((se+se_se)->caps);
se_se++;//故障相别
continue;
} // else np==1
else if(np==2)
{
nch1=j=js=0;
i = (int)((((seguik+ds)->t-(seguik+dsqc)->t))*1000);
if(i<nqc1)i=nqc1+27-i;else i=27;
for(;i<lon-7;i++)
{
ja=jb=jc=0;
pqd2(ia,ib,ic,&ja,i);
pqd2(ib,ic,ia,&jb,i);
pqd2(ic,ia,ic,&jc,i);
if(ja+jb+jc>0)
{
if(!nch1){nch=nch1=i;}
j++;
if(j>=3){np++;break;}
}
else if(j>0)j--;
}
if(np==2)continue;
jl1(tab[12],(seguik+ds)->t,nch1); //重合闸绝对时间
jlpqc1(&nch,&ncq1,&ctxb,0);
if(ncq1>1000)
{
ncq=lon-11;
dsqc=ds;
goto fz2;
}
ncq=ncq1;
jl1(tab[13],(seguik+ds)->t,ncq1); //再次跳闸绝对时间
(se+se_se)->order=tab[16];
(se+se_se)->trait=trait;
(se+se_se)->line=128;
(se+se_se)->arrange=16;
ca=(se+se_se)->caps;
j=0;
if(!ctxb)goto fz2;
if(ctxb&8){*(ca+j)=uiabcn[2];j++;*(ca+j)=uiabcn[3];j++;}
if(ctxb&4){*(ca+j)=uiabcn[6];j++;*(ca+j)=uiabcn[7];j++;}
if(ctxb&2){*(ca+j)=uiabcn[10];j++;*(ca+j)=uiabcn[11];j++;}
if(ctxb&1){*(ca+j)=uiabcn[14];j++;*(ca+j)=uiabcn[15];j++;}
*(ca+j)=0;
se_se++; //再次跳闸相别
if(ncq1<lon-35)
{
(se+se_se)->order=tab[29];
(se+se_se)->trait=trait;
(se+se_se)->line=128;
(se+se_se)->arrange=16;
for(*ia1=*ib1=*ic1=0,i=ncq1;i<ncq1+20;i++)
{
if(*ia1<fabs(*(va+i)))*ia1=fabs(*(va+i));
if(*ib1<fabs(*(vb+i)))*ib1=fabs(*(vb+i));
if(*ic1<fabs(*(vc+i)))*ic1=fabs(*(vc+i));
}
sprintf((char *)(se+se_se)->caps,"A:%-.3gKV B:%-.3gKV C:%-.3gKV", *ia1*ny/1000.,*ib1*ny/1000.,*ic1*ny/1000.);
se_se++; //再次故障切除后第一周波的母线电压峰值
(se+se_se)->order=tab[27];
(se+se_se)->trait=trait;
(se+se_se)->line=128;
(se+se_se)->arrange=16;
if(lon-ncq1>=30)i=2;
else i=1;
jl2(ia,ia1,ncq1+3,va1,i);
jl2(ib,ib1,ncq1+3,vb1,i);
jl2(ic,ic1,ncq1+3,vc1,i);
sprintf((char *)(se+se_se)->caps,"A:%-.3gKA B:%-.3gKA C:%-.3gKA", *va1*nl/1000.,*vb1*nl/1000.,*vc1*nl/1000.);
se_se++; //再次故障后第一周波的故障电流有效值
(se+se_se)->order=tab[28];
(se+se_se)->trait=trait;
(se+se_se)->line=128;
(se+se_se)->arrange=16;
if(lon-ncq1>=30)i=2;
else i=1;
jl2(va,va1,ncq1+3,ia1,i);
jl2(vb,vb1,ncq1+3,ib1,i);
jl2(vc,vc1,ncq1+3,ic1,i);
sprintf((char *)(se+se_se)->caps,"A:%-.3gKV B:%-.3gKV C:%-.3gKV", *ia1*ny/1000.,*ib1*ny/1000.,*ic1*ny/1000.);
se_se++; //再次故障后第一周波的母线电压有效值
}
fz2:
(se+se_se)->order=tab[8];
(se+se_se)->trait=trait;
(se+se_se)->line=128;
(se+se_se)->arrange=16;
ca=(se+se_se)->caps;
j=0;
for(dsgu=0, i=5; i<ncq-7;i++)
{
k=(*(j2+i))&0xf;
if((k==1)||(k==2)||(k==4)||(k==8))continue;
if(!k)continue;
for(jj=0;jj<4;jj++)
{
m=*(j2+i-jj);
if(m!=k)break;
}
if(jj!=4)continue;
if(k<=dsgu)continue;
dsgu=k;
if(k&8){*(ca+j)=uiabcn[2];j++;*(ca+j)=uiabcn[3];j++;}
if(k&4){*(ca+j)=uiabcn[6];j++;*(ca+j)=uiabcn[7];j++;}
if(k&2){*(ca+j)=uiabcn[10];j++;*(ca+j)=uiabcn[11];j++;}
if(k&1){*(ca+j)=uiabcn[14];j++;*(ca+j)=uiabcn[15];j++;}
*(ca+j)=0xd7;
j++;
*(ca+j)=0xaa;
j++;
}
xbqc=se_se;
if(j){*(ca+j-2)=0;se_se++;}
else *ca=0; //再次故障相别
(se+se_se)->order=tab[9];
(se+se_se)->trait=trait;
(se+se_se)->line=128;
(se+se_se)->arrange=16;
for(*ia1=*ib1=*ic1=0,i=nch1;i<nch1+20;i++)
{
if(*ia1<fabs(*(ia+i)))*ia1=fabs(*(ia+i));
if(*ib1<fabs(*(ib+i)))*ib1=fabs(*(ib+i));
if(*ic1<fabs(*(ic+i)))*ic1=fabs(*(ic+i));
}
sprintf((char *)(se+se_se)->caps,"A:%-.3gKA B:%-.3gKA C:%-.3gKA", *ia1*nl/1000.,*ib1*nl/1000.,*ic1*nl/1000.);
se_se++; //再次故障后第一周波的故障电流峰值
(se+se_se)->order=tab[10];
(se+se_se)->trait=trait;
(se+se_se)->line=128;
(se+se_se)->arrange=16;
if(ncq-nch1>=25)i=2;
else i=1;
jl2(ia,ia1,nch1+3,va1,i);
jl2(ib,ib1,nch1+3,vb1,i);
jl2(ic,ic1,nch1+3,vc1,i);
sprintf((char *)(se+se_se)->caps,"A:%-.3gKA B:%-.3gKA C:%-.3gKA", *va1*nl/1000,*vb1*nl/1000,*vc1*nl/1000);
se_se++; //再次故障后第一周波的故障电流有效值
(se+se_se)->order=tab[11];
(se+se_se)->trait=trait;
(se+se_se)->line=128;
(se+se_se)->arrange=16;
if(ncq1-nch1>=25)i=2;
else i=1;
jl2(va,va1,nch1+3,ia1,i);
jl2(vb,vb1,nch1+3,ib1,i);
jl2(vc,vc1,nch1+3,ic1,i);
sprintf((char *)(se+se_se)->caps,"A:%-.3gKV B:%-.3gKV C:%-.3gKV", *ia1*ny/1000,*ib1*ny/1000,*ic1*ny/1000);
se_se++;//再次故障后第一周波的母线电压有效值
} //else np ==2
else if(np==3)
{
nch=4;
jlpqc1(&nch,&ncq1,&ctxb,0);
if(ncq1>1000)ncq=lon-3;
else ncq=ncq1;
if(np==4)
{
jl1(tab[13],(seguik+ds)->t,ncq1); //再次跳闸绝对时间
if(ctxb)
{
(se+se_se)->order=tab[16];
(se+se_se)->trait=trait;
(se+se_se)->line=128;
(se+se_se)->arrange=16;
ca=(se+se_se)->caps;
j=0;
if(ctxb&8){*(ca+j)=uiabcn[2];j++;*(ca+j)=uiabcn[3];j++;}
if(ctxb&4){*(ca+j)=uiabcn[6];j++;*(ca+j)=uiabcn[7];j++;}
if(ctxb&2){*(ca+j)=uiabcn[10];j++;*(ca+j)=uiabcn[11];j++;}
if(ctxb&1){*(ca+j)=uiabcn[14];j++;*(ca+j)=uiabcn[15];j++;}
*(ca+j)=0;
se_se++; //再次跳闸相别
}
if(ncq1<lon-35)
{
(se+se_se)->order=tab[29];
(se+se_se)->trait=trait;
(se+se_se)->line=128;
(se+se_se)->arrange=16;
for(*ia1=*ib1=*ic1=0,i=ncq1;i<ncq1+20;i++)
{
if(*ia1<fabs(*(va+i)))*ia1=fabs(*(va+i));
if(*ib1<fabs(*(vb+i)))*ib1=fabs(*(vb+i));
if(*ic1<fabs(*(vc+i)))*ic1=fabs(*(vc+i));
}
sprintf((char *)(se+se_se)->caps,"A:%-.3gKV B:%-.3gKV C:%-.3gKV", *ia1*ny/1000.,*ib1*ny/1000.,*ic1*ny/1000.);
se_se++; //再次故障切除后第一周波的母线电压峰值
(se+se_se)->order=tab[27];(se+se_se)->trait=trait;
(se+se_se)->line=128;(se+se_se)->arrange=16;
if(lon-ncq1>=30)i=2;
else i=1;
jl2(ia,ia1,ncq1+3,va1,i);
jl2(ib,ib1,ncq1+3,vb1,i);
jl2(ic,ic1,ncq1+3,vc1,i);
sprintf((char *)(se+se_se)->caps,"A:%-.3gKA B:%-.3gKA C:%-.3gKA", *va1*nl/1000.,*vb1*nl/1000.,*vc1*nl/1000.);
se_se++; //再次故障切除后第一周波的故障电流有效值
(se+se_se)->order=tab[28];(se+se_se)->trait=trait;
(se+se_se)->line=128;(se+se_se)->arrange=16;
if(lon-ncq1>=30)i=2;
else i=1;
jl2(va,va1,ncq1+3,ia1,i);
jl2(vb,vb1,ncq1+3,ib1,i);
jl2(vc,vc1,ncq1+3,ic1,i);
sprintf((char *)(se+se_se)->caps,"A:%-.3gKV B:%-.3gKV C:%-.3gKV",*ia1*ny/1000.,*ib1*ny/1000.,*ic1*ny/1000.);
se_se++; //再次故障切除后第一周波的母线电压有效值
}
}
ca=(se+xbqc)->caps;j=0;while(*(ca+j))j++;
for(i=5;i<ncq-7;i++)
{
k=(*(j2+i))&0xf;
if((k==1)||(k==2)||(k==4)||(k==8))continue;
if(!k)continue;
for(jj=0;jj<4;jj++) m=*(j2+i-jj);
if(jj!=4)continue;
if(k<=dsgu)continue;
dsgu=k;
*(ca+j)=0xd7;
j++;
*(ca+j)=0xaa;
j++;
if(k&8){*(ca+j)=uiabcn[2];j++;*(ca+j)=uiabcn[3];j++;}
if(k&4){*(ca+j)=uiabcn[6];j++;*(ca+j)=uiabcn[7];j++;}
if(k&2){*(ca+j)=uiabcn[10];j++;*(ca+j)=uiabcn[11];j++;}
if(k&1){*(ca+j)=uiabcn[14];j++;*(ca+j)=uiabcn[15];j++;}
}
*(ca+j)=0;
se_se++; //再次故障相别
continue;
}
else break;
}
end:
if(trait==10)
{ // 区内无故障
(se+se_se)->order = tab[17];
(se+se_se)->trait = 11;
(se+se_se)->line = 128;
(se+se_se)->arrange = 16;
ca=(se+se_se)->caps;
*(ca+0)=0xa2; *(ca+1)=0xa1;
*(ca+2)=0;
se_se++;
}
free(xa);free(ra);free(xb);
free(rb);free(xc);free(rc);
free(xbc);free(rbc);free(xca);
free(rca);free(xab);free(rab);
return(1);
}
double CAnalysis::youxz1(double far *v)
{
double v1,v2,v3;
v3 = 1.236068;
v1 = -*v - *(v+1) + *(v+3) + *(v+4);
v1 = v1/v3;
v2 = -*(v+5) - *(v+6) + *(v+8) + *(v+9);
v2 = v2/v3;
v3 = v1*v1 + v2*v2;
return(v3);
}
int CAnalysis::jl2(double *i1,double *i2,int nqd1,double *x,int kk)
{
int i;
double x1,x2;
for(i=nqd1;i<nqd1+35;i++)*(i2+i)=*(i1+i);
lb8(i2,&x1,nqd1+10);
lb8(i2,&x2,nqd1+15);
*x = sqrt(x1*x1/2+x2*x2/2);
return (1);
}
int CAnalysis::pqd1(double *u,double *i,int *jj,int n,int m)
{
double z,x,r,d1,dd,d2,*in,*im,*un,in1,in2,in3,in4,in5,in6,im2,im5,un2,un5;
in=i+n;im=i+m;un=u+n;
*jj=0;
in1=*(in+1)+*(in+2);
in2=*(in+2)+*(in+3);
in3=*(in+3)+*(in+4);
in4=*(in+4)+*(in+5);
in5=*(in+5)+*(in+6);
in6=*(in+6)+*(in+7);
im2=*(im+2)+*(im+3);
im5=*(im+5)+*(im+6);
un2=*(un+2)+*(un+3);
un5=*(un+5)+*(un+6);
if(fabs(*(u+1)-*(u+11))+fabs(*(i+1)-*(i+11))<1)goto fz1;
d1=in2*r1/x1+(in3-in1)/dt;
d2=in5*r1/x1+(in6-in4)/dt;
dd=(in2-im2)*d2-(in5-im5)*d1;
if(fabs(dd)<.1)goto fz1;
x=(un5*(in2-im2)-un2*(in5-im5))/dd;
r=(d2*un2-d1*un5)/dd;
z=r*r+x*x;
if(z<12*zzd*zzd)*jj=1; /*printf("5 %7.3f ",z);*/
fz1:
d1=(in3-in1)/dt;
d2=(in6-in4)/dt;
dd=in2*d2-in5*d1;
if(fabs(dd)<1)goto end;
x=(un5*in2-un2*in5)/dd;
r=(d2*un2-d1*un5)/dd;
z=r*r+x*x; /*printf("%- 9.5f %- 5i ",z,n);*/
if(z<zzd*zzd)*jj=1; /*printf(" 1");printf("%7.3f ",x);*/
end:
return(0);
}
int CAnalysis::jlpqc(int *nqd,int *nqc,int *tx,int tra)
{
int i,j,k,ja,jb,jc,jd,m,jj,jjj,jjjj;
double yx;
j=jj=jjj=jjjj=*nqc=*tx=0;
for(i=0;i<400;i++)
*(j1+i)=*(j2+i)=0;
for(i=*nqd-2;i<lon-7;i++)
{
m=i;while(m-20>=20)m-=20;
px(va,ia,ib,ic,&ja,i,m);
px(vb,ib,ic,ia,&jb,i,m);
px(vc,ic,ia,ib,&jc,i,m);
px(vd,i0,va,va,&jd,i,m);
if(ja>0)*(j1+i)=*(j1+i)|8;
if(jb>0)*(j1+i)=*(j1+i)|4;
if(jc>0)*(j1+i)=*(j1+i)|2;
if(jd>0)*(j1+i)=*(j1+i)|1;
if((ja>0)&&((*(j1+i-1)&8)==8)&&((*(j1+i-2)&8)==8)&&((*(j1+i-3)&8)==8))
{
*(j2+i)=(*(j2+i)|8)|*(j2+i-1);
}
if((jb>0)&&((*(j1+i-1)&4)==4)&&((*(j1+i-2)&4)==4)&&((*(j1+i-3)&4)==4))
{
*(j2+i)=(*(j2+i)|4)|*(j2+i-1);
}
if((jc>0)&&((*(j1+i-1)&2)==2)&&((*(j1+i-2)&2)==2)&&((*(j1+i-3)&2)==2))
{
*(j2+i)=(*(j2+i)|2)|*(j2+i-1);
}
if((jd>0)&&((*(j1+i-1)&1)==1)&&((*(j1+i-2)&1)==1)&&((*(j1+i-3)&1)==1))
{
*(j2+i)=(*(j2+i)|1)|*(j2+i-1);
}
*(j2+i)=*(j2+i)|*(j2+i-1);
if(*(j2+i)&8)
{pqc(va,ia,&ja,i);/*printf(" ja=%i",ja);*/
if(ja>0){
j++;
if(j>=3){np++;*tx=*tx|8;*nqc=i;break;}
}
else if(j>0)j--;
}
if(*(j2+i)&4)
{pqc(vb,ib,&jb,i);/*printf(" jb=%i",jb);*/
if(jb>0){
jj++;
if(jj>=3){np++;*tx=*tx|8;*nqc=i;break;}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -