⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 analysis.cpp

📁 一个用C++写的电力系统故障录波数据管理系统
💻 CPP
📖 第 1 页 / 共 5 页
字号:
					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 + -