📄 analysis.cpp
字号:
*(ca+12)=c[7]+48;
*(ca+13)=c[8]+48;
*(ca+15)=c[9]+48;
*(ca+16)=c[10]+48;
*(ca+18)=c[11]+48;
*(ca+19)=c[12]+48;
*(ca+14)=*(ca+17)=':';
*(ca+20)='.';
a=c[13]*256+c[14];
*(ca+21)=a/100+48;
*(ca+22)=(a%100)/10+48;
*(ca+23)=(a%10)+48;
*(ca+24)=0x30;
*(ca+25)=0x30;
*(ca+26)=0x30;
*(ca+27)=0x00;
for(i=0;i<27;i++)
if(*(ca+i)<0) *(ca+i) = 48;
return (1);
}
int CAnalysis::zb(long int uni,long int *xljl)
{
double *xa,*ra,*xb,*rb,*xc,*rc,*xbc,*rbc,*xca,*rca,*xab,*rab;
double yx;
int nqd,nqd1,nqc,nqc1,s=1,ja,jb,jc,jd,js,nch,nch1,ncq,ncq1;
char ci[80],xlc[80];
BYTE *ca;
int xl8[9];
int i,j,k,m,ds,rk,dsqc,xbqc,tzxb,ctxb,lin1=1,jj,jjj,dsgu,aa;
double sx1,sx2,sq1,sq2,sr1,sr2,srx,srr,rf1,rf2,fz,jl,vv;
xa=(double *)malloc(1500*sizeof(double));
xb=(double *)malloc(1500*sizeof(double));
xc=(double *)malloc(1500*sizeof(double));
ra=(double *)malloc(1500*sizeof(double));
rb=(double *)malloc(1500*sizeof(double));
rc=(double *)malloc(1500*sizeof(double));
xbc=(double *)malloc(1500*sizeof(double));
xca=(double *)malloc(1500*sizeof(double));
xab=(double *)malloc(1500*sizeof(double));
rbc=(double *)malloc(1500*sizeof(double));
rca=(double *)malloc(1500*sizeof(double));
rab=(double *)malloc(1500*sizeof(double));
if( xa == NULL || xb == NULL || xc == NULL ||
ra == NULL || rb == NULL || rc == NULL ||
xbc== NULL || xca== NULL || xab== NULL ||
rbc== NULL || rca== NULL || rab== NULL )
{ AfxMessageBox("内存不够", MB_OK); return (-1); }
np=0; jlzd=300;
for(j=1;j<9;j++)
dingzhi(uni+j,xl8+j-1,&vv,ci);
*ci=0;
dingzhi(uni+21,&m,&vv,ci);
xl8[8]=10000; rm=xm=0.;
for(j=0;j<*xljl;j++)
{
dingzhi(*(xljl+1+j),&m,&vv,xlc);m=0;
while(*(xlc+m))
{ if(*(xlc+m)!=*(ci+m))break; m++; }
if(!(*(xlc+m)||(*(ci+m))))
{
dingzhi(uni+22,&i,&rm,ci);
dingzhi(uni+23,&i,&xm,ci);
dingzhi(*(xljl+j+1)+8,xl8+8,&xm,ci);
break;
}
}
dingzhi(uni+11,&i,&r1,ci);
dingzhi(uni+12,&i,&x1,ci);
dingzhi(uni+13,&i,&r0,ci);
dingzhi(uni+14,&i,&x0,ci);
dingzhi(uni+15,&i,&b1,ci);
dingzhi(uni+16,&i,&b0,ci);
dingzhi(uni+17,&i,&vv,ci);
ny=i*10;
dingzhi(uni+18,&i,&nl,ci);
zzd=10;
i=dingzhi(uni+24,&j,&zzd,ci);
if(i&&(zzd>.01))zzd=50/zzd;
else zzd=10;
nz=ny/nl;
xm=xm/nz; rm=rm/nz;
r0=r0/nz; r1=r1/nz; x1=x1/nz; x0=x0/nz;
kr=(r0-r1)/r1/3; kl=(x0-x1)/x1/3; kml=xm/x1; kmr=rm/r1;
c1=sqrt(x1*b1/1000000.0*nz); c0 =sqrt(x0*b0/1000000.0*nz);
readdat(va,xl8[0],0,1,1);
readdat(vb,xl8[1],0,1,1);
readdat(vc,xl8[2],0,1,1);
for(vv=0.,i=0;i<20;i++)if(*(va+i)>vv)vv=*(va+i);
for(ds=0; ds<(int)seg1; ds++)
{
if((seguik+ds)->c!=1)continue;
if(ds)
{
readdat(va,xl8[0],ds,1,1);
readdat(vb,xl8[1],ds,1,1);
readdat(vc,xl8[2],ds,1,1);
}
lon=(seguik+ds)->l-s;
readdat(ia,xl8[4],ds,1,2);
readdat(ib,xl8[5],ds,1,2);
readdat(ic,xl8[6],ds,1,2);
for(aa=0;aa!=lon;aa++)
*(i0+aa)=*(ia+aa)+*(ib+aa)+*(ic+aa);
if(!ds)
{
for(k=jj=jjj=j=0;k<10;k++)
{
yx = youxz1(ia+k);
if(yx<.25)j++;
else if(j>0)j--;
yx = youxz1(ib+k);
if(yx<.25)jj++;
else if(jj>0)jj--;
yx = youxz1(ic+k);
if(yx<.25)jjj++;
else if(jjj>0)jjj--;
}
if((j>3)||(jj>3)||(jjj>3))guzq[0]=1;
else guzq[0]=0;
}
if((xl8[8]>0)&&(xl8[8]<1000))
readdat(im,xl8[8],ds,1,2);
else
for(i=0;i<lon;i++)*(im+i)=.0;
for(i=0;i!=lon;i++)*(vd+i)=(*(va+i)-(*(vb+i)+*(vc+i))*.5)/3;
if(np==0)
{
nqd1=j=js=0;
for(i=1;i<lon-7;i++)
{
m=i;
while(m-20>=20)m-=20;
pqd1(va,ia,&ja,i,m);
pqd1(vb,ib,&jb,i,m);
pqd1(vc,ic,&jc,i,m);
pqd1(vd,i0,&jd,i,m);
if((ja+jb+jc+jd>0)&&(js==ja+10*jb+100*jc))
{
if(!nqd1){nqd=nqd1=i+3;}
j++;
if(j>=3){np++;break;}
}
else if(j>0)j--;
js=ja+10*jb+100*jc;
}
if(np==0)continue;
trait++;
(se+se_se)->order=tab[0];(se+se_se)->trait=trait;
(se+se_se)->line=128;(se+se_se)->arrange=16;
dingzhi(uni,&i,va1,(char *)((se+se_se)->caps));
m_FaultLineNo = uni/2000;
BYTE *pTemp = (se+se_se)->caps;
if(pTemp[0]== 163 && pTemp[1] == 176)
m_strFaultLineName = (char *)(pTemp + 8);//(se+se_se)->caps);
else
m_strFaultLineName = (char *)((se+se_se)->caps);
se_se++;//故障线路
if(nqd1>35)
{
(se+se_se)->order=tab[19];(se+se_se)->trait=trait;
(se+se_se)->line=128;(se+se_se)->arrange=16;
jl2(ia,ia1,nqd1-35,va1,1);
jl2(ib,ib1,nqd1-35,vb1,1);
jl2(ic,ic1,nqd1-35,vc1,1);
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[20];
(se+se_se)->trait=trait;
(se+se_se)->line=128;
(se+se_se)->arrange=16;
jl2(va,va1,nqd1-35,ia1,1);
jl2(vb,vb1,nqd1-35,ib1,1);
jl2(vc,vc1,nqd1-35,ic1,1);
sprintf((char *)(se+se_se)->caps,"A:%-.3gKV B:%-.3gKV C:%-.3gKV", *ia1*ny/1000.,*ib1*ny/1000.,*ic1*ny/1000.);
se_se++; //故障前一周波的母线电压有效值
}
jl1(tab[7],(seguik+ds)->t,nqd1);
sprintf(m_StrStartDateTime.GetBuffer(80), "%c%c/%c%c/%c%c,",
*((se+se_se-1)->caps+3), *((se+se_se-1)->caps+4),
*((se+se_se-1)->caps+6), *((se+se_se-1)->caps+7),
*((se+se_se-1)->caps), *((se+se_se-1)->caps+1));
m_StrStartDateTime.ReleaseBuffer();
lstrcat(m_StrStartDateTime.GetBuffer(80), (char *)((se+se_se-1)->caps+12));
m_StrStartDateTime.ReleaseBuffer();
m_DateTime = m_StrStartDateTime;
jlpqc(&nqd,&nqc1,&tzxb,0);
if(nqc1>1000)
{
nqc=lon-3;dsqc=ds;
goto fz1;
}
nqc=nqc1;
(se+se_se)->order=tab[1];(se+se_se)->trait=trait;
(se+se_se)->line=128;(se+se_se)->arrange=16;
sprintf((char *)(se+se_se)->caps,"%-.3fS",(nqc1-nqd1)*.001);
FaultDelayTime = (char *)(se+se_se)->caps;
se_se++;//故障持续时间
dsqc=ds;
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++; //故障切除后第一周波的母线电压有效值
}
(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)goto fz1;
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++; //跳闸相别
fz1:
(se+se_se)->order=tab[2];
(se+se_se)->trait=trait;
(se+se_se)->line=128;
(se+se_se)->arrange=16;
ca=(se+se_se)->caps;
j=0;
dsgu=0;
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;
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;}
jj = (int)(((seguik+ds)->t+(seguik+0)->t-(seguik+dsqc)->t)*1000.);
sprintf((char *)(ca+j),"(%.3gS) ",(jj+i-4)*.001);
j += strlen((char *)(ca+j));
*(ca+j)=0xd7;
j++;
*(ca+j)=0xaa;
j++;
}
xbqc=se_se;
m_strFaultPhase = _T((se+se_se)->caps);
if(j) { *(ca+j-2)=0; se_se++; }
else { *ca=0;/*lin1=0; */} // wyy do modify //故障相别
(se+se_se)->order=tab[4];(se+se_se)->trait=trait;
(se+se_se)->line=128;(se+se_se)->arrange=16;
for(*ia1=*ib1=*ic1=0,i=nqd1;i<nqd1+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[5];(se+se_se)->trait=trait;
(se+se_se)->line=128;(se+se_se)->arrange=16;
if(nqc1-nqd1>=25)i=2;else i=1;
jl2(ia,ia1,nqd1+3,va1,i);
jl2(ib,ib1,nqd1+3,vb1,i);
jl2(ic,ic1,nqd1+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[6];(se+se_se)->trait=trait;
(se+se_se)->line=128;(se+se_se)->arrange=16;
if(nqc1-nqd1>=25)i=2;
else i=1;
jl2(va,va1,nqd1+3,ia1,i);
jl2(vb,vb1,nqd1+3,ib1,i);
jl2(vc,vc1,nqd1+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++; //故障后第一周波的母线电压有效值
j=jl3(ia,nqd1+3,va1);
jj=jl3(ib,nqd1+3,vb1);
jjj=jl3(ic,nqd1+3,vc1);
if(j||jj||jjj)
{
(se+se_se)->order=tab[22];
(se+se_se)->trait=trait;
(se+se_se)->line=128;
(se+se_se)->arrange=16;
k=0;
*((se+se_se)->caps)=0;
if(j)
{
sprintf((char *)(se+se_se)->caps,"A:%-.3gKA ",*(va1+1)*nl/1000.);
k = strlen((char *)(se+se_se)->caps);
}
if(jj)
{
sprintf((char *)(se+se_se)->caps+k,"B:%-.3gKA ",*(vb1+1)*nl/1000.);
k=strlen((char *)(se+se_se)->caps);
}
if(jjj)
{
sprintf((char *)(se+se_se)->caps+k,"C:%-.3gKA",*(vc1+1)*nl/1000.);
}
se_se++; //故障电流直流分量参数
(se+se_se)->order=tab[23];
(se+se_se)->trait=trait;
(se+se_se)->line=128;
(se+se_se)->arrange=16;
k=0;
*((se+se_se)->caps)=0;
if(j)
{
sprintf((char *)(se+se_se)->caps,"A:%-.3gMS ",*va1*1000);
k=strlen((char *)(se+se_se)->caps);
}
if(jj)
{
sprintf((char *)(se+se_se)->caps+k,"B:%-.3gMS ",*vb1*1000);
k=strlen((char *)(se+se_se)->caps);
}
if(jjj)
{
sprintf((char *)(se+se_se)->caps+k,"C:%-.3gMS",*vc1*1000);
}
se_se++; //故障电流直流分量衰减时间常数
}
nqd=(nqd1>10)?nqd1:10;
nqc=(nqc>lon-11)?lon-16:nqc;
if(nqc-nqd<12)goto end;
if(!lin1)
{
(se+se_se)->order=tab[17];
(se+se_se)->trait=trait;
(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++; //区内无故障
goto end;
}
for(i=5;i<=nqc+5;i++)
{
if(jlzd<150)
{
lb4(va,va1+i,i);
lb4(vb,vb1+i,i);
lb4(vc,vc1+i,i);
lb4(ia,ia1+i,i);
lb4(ib,ib1+i,i);
lb4(ic,ic1+i,i);
lb4(i0,i01+i,i);
lb4(im,im1+i,i);
}
if((jlzd<250)&&(jlzd>=150))
{
lb3(va,va1+i,i);
lb3(vb,vb1+i,i);
lb3(vc,vc1+i,i);
lb3(ia,ia1+i,i);
lb3(ib,ib1+i,i);
lb3(ic,ic1+i,i);
lb3(i0,i01+i,i);
lb3(im,im1+i,i);
}
if((jlzd<350)&&(jlzd>=250))
{
lb2(va,va1+i,i);
lb2(vb,vb1+i,i);
lb2(vc,vc1+i,i);
lb2(ia,ia1+i,i);
lb2(ib,ib1+i,i);
lb2(ic,ic1+i,i);
lb2(i0,i01+i,i);
lb2(im,im1+i,i);
}
else
{
lb1(va,va1+i,i);
lb1(vb,vb1+i,i);
lb1(vc,vc1+i,i);
lb1(ia,ia1+i,i);
lb1(ib,ib1+i,i);
lb1(ic,ic1+i,i);
lb1(i0,i01+i,i);
lb1(im,im1+i,i);
}
}
for(i=2;i<4;i++)
*(xa+nqd+i)=*(ra+nqd+i)=*(xb+nqd+i)=*(rb+nqd+i)=*(xc+nqd+i)=*(ra+nqd+i)=
*(xab+nqd+i)=*(rab+nqd+i)=*(xca+nqd+i)=*(rca+nqd+i)=*(xbc+nqd+i)=*(rbc+nqd+i)=0;
for(i=nqd-3;i<=nqc+3;i++)
{
jdjl(va1,ia1,i01,im1,i,xa+i,ra+i);
jdjl(vb1,ib1,i01,im1,i,xb+i,rb+i);
jdjl(vc1,ic1,i01,im1,i,xc+i,rc+i);
xjjl(va1,vb1,ia1,ib1,i,xab+i,rab+i);
xjjl(vb1,vc1,ib1,ic1,i,xbc+i,rbc+i);
xjjl(vc1,va1,ic1,ia1,i,xca+i,rca+i);
}
rk=0;
goto jl_150;
jl_130:
for(i=2;i<4;i++)
*(xa+nqd+i)=*(ra+nqd+i)=*(xb+nqd+i)=*(rb+nqd+i)=*(xc+nqd+i)=*(ra+nqd+i)=
*(xab+nqd+i)=*(rab+nqd+i)=*(xca+nqd+i)=*(rca+nqd+i)=*(xbc+nqd+i)=*(rbc+nqd+i)=0;
for(i=nqd+3;i<nqc-3;i++)
{
k=(i+13)%20+7;
jdgz(va1,ia1,i01,im1,i,xa+i,ra+i);
jdgz(vb1,ib1,i01,im1,i,xb+i,rb+i);
jdgz(vc1,ic1,i01,im1,i,xc+i,rc+i);
xjgz(va1,ia1,vb1,ib1,i,k,xab+i,rab+i);
xjgz(vb1,ib1,vc1,ic1,i,k,xbc+i,rbc+i);
xjgz(vc1,ic1,va1,ia1,i,k,xca+i,rca+i);
}
rk=111;
jl_150:
sx1=sx2=sq1=sq2=sr1=sr2=srx=srr=0.0;
for(i=nqd;i<nqc-10;i++)
{
if((*(j2+i)&9)==9)tj(xa,ra,&sq1,&sx1,&sr1,&srx,&srr,i);
if((*(j2+i)&5)==5)tj(xb,rb,&sq1,&sx1,&sr1,&srx,&srr,i);
if((*(j2+i)&3)==3)tj(xc,rc,&sq1,&sx1,&sr1,&srx,&srr,i);
if((*(j2+i)& 6)== 6)tj(xbc,rbc,&sq2,&sx2,&sr2,&srx,&srr,i);
if((*(j2+i)&12)==12)tj(xab,rab,&sq2,&sx2,&sr2,&srx,&srr,i);
if((*(j2+i)&10)==10)tj(xca,rca,&sq2,&sx2,&sr2,&srx,&srr,i);
}
if(sq1+sq2<.0001)continue;
rf1=50000000.;
rf2=50000000.;
fz=(2*jlzd-(sx1+sx2)/(sq1+sq2))/2/jlzd;
if(sq2>.0001)rf2=fabs(sr2/sq2)*fz;
if(sq1>.0001)rf1=fabs(sr1/sq1)*fz;
if((sq1>.0001)&&(sq2<.0001))jl=sx1/sq1;
if((sq1<.0001)&&(sq2>.0001))jl=sx2/sq2;
if((sq1>.0001)&&(sq2>.0001))jl=(sx1/sq1/rf1+sx2/sq2/rf2)/(1.0/rf1+1.0/rf2);
if(rk!=111)
{ if((rf1>5.)&&(rf2>5.))goto jl_130; }
if((*(j2+nqc-10)==9)||(*(j2+nqc-10)==5)||(*(j2+nqc-10)==3))
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -