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

📄 三相预处理.cpp

📁 离散值与有效值的计算 对电压 和电流都适应
💻 CPP
字号:
//动态数据的预处理程序
#include  "stdio.h"
#include  "math.h"
#include "stdlib.h"
#include <iostream.h>
#include <fstream>
#include <complex>
using namespace std;
FILE *fp1; 
FILE *fp2;

void four(double *p,int k); 

double tmp1,alpha1;
double  PI= 3.14159265358979 ;
double  utma[3600],itma[3600],utmb[3600],itmb[3600],utmc[3600],itmc[3600];
double Ua[3600],AUa[3600],Ub[3600],AUb[3600],Uc[3600],AUc[3600];
double Ia[3600],AIa[3600],Ib[3600],AIb[3600],Ic[3600],AIc[3600];
double t[3600];

//计算电压电流的有效值和相角
void four(double *p,int k)
{	
	int i ; 			
    double a=0,b=0;
	for(i = k ; i < k+24 ; i++ )
	{
		a = a + p[i] * cos( PI / 12 * i );
		b = b + p[i] * sin( PI / 12 * i );
	}		
 
	tmp1 =  (sqrt( a * a + b * b ) / 12 ) / sqrt(2) ;
	alpha1=atan2(a,b);
}

	
void main()
{ 
	int i;
   if(( fp2 = fopen("验证程序结果30.xls","w"))==NULL) 
            {printf("n-out\n"); exit(0);}
   ifstream fp1("c:\\低压母线I05.xls");   
   for ( i=0; i<3600; i++ )
  		fp1>>utma[i]>>utmb[i]>>utmc[i]>>itma[i]>>itmb[i]>>itmc[i];
   /*for(i=0;i<3600;i++)
   {
	   itma[i]=-itma[i];
	   itmb[i]=-itmb[i];
	   itmc[i]=-itmc[i];
   }*/
   for ( i = 0; i < 1200-24; i++)
   {
	
	four(utma,i);
	Ua[i]=tmp1; AUa[i]=alpha1;//a相电压的有效值和相角
 	four(utmb,i);
	Ub[i]=tmp1; AUb[i]=alpha1;
    four(utmc,i);
	Uc[i]=tmp1; AUc[i]=alpha1; 
	//fprintf(fp2,"%f\t%f\t%f\t%f\t%f\t%f\n",Ua[i],AUa[i]*180/PI,Ub[i],AUb[i]*180/PI,Uc[i],AUc[i]*180/PI);


	four(itma,i);
	Ia[i]=tmp1; AIa[i]=alpha1;//a相电流的有效值和相角
    four(itmb,i);
	Ib[i]=tmp1; AIb[i]=alpha1;
    four(itmc,i);
	Ic[i]=tmp1; AIc[i]=alpha1;
	//fprintf(fp2,"%f\t%f\t%f\t%f\t%f\t%f\n",Ia[i],AIa[i]*180/PI,Ib[i],AIb[i]*180/PI,Ic[i],AIc[i]*180/PI);
	complex<double> uat(Ua[i]*cos(AUa[i]),Ua[i]*sin(AUa[i]));
	complex<double> ubt(Ub[i]*cos(AUb[i]),Ub[i]*sin(AUb[i]));
	complex<double> uct(Uc[i]*cos(AUc[i]),Uc[i]*sin(AUc[i]));

	complex<double> iat(Ia[i]*cos(AIa[i]),Ia[i]*sin(AIa[i]));
	complex<double> ibt(Ib[i]*cos(AIb[i]),Ib[i]*sin(AIb[i]));
	complex<double> ict(Ia[i]*cos(AIc[i]),Ic[i]*sin(AIc[i]));
	
	complex<double> Uta(0,0),Utb(0,0),Utc(0,0);
	complex<double> Ita(0, 0),Itb(0,0),Itc(0,0);
	complex<double> S(0, 0);
	double a = 0.5;
	double b = sqrt(3)/2;
	Uta = uat + ubt*complex<double>(-a, b)+ uct*complex<double>(-a, -b);
	Uta = Uta/complex<double>(3.0,0.0);//a相基波正序电压
	Utb = uat*complex<double>(-a, -b) + ubt+ uct*complex<double>(-a, b);
	Utb = Utb/complex<double>(3.0,0.0);//b相基波正序电压
	Utc = uat*complex<double>(-a, b) + ubt*complex<double>(-a, -b)+ uct;
	Utc = Utc/complex<double>(3.0,0.0);//c相基波正序电压

	Ita = iat + ibt*complex<double>(-a, b)+ ict*complex<double>(-a, -b);
	Ita = Ita/complex<double>(3.0,0.0);//a相基波正序电流
	Itb = iat*complex<double>(-a, -b) + ibt+ ict*complex<double>(-a, b);
	Itb = Itb/complex<double>(3.0,0.0);//b相基波正序电流
	Itc = iat*complex<double>(-a, b) + ibt*complex<double>(-a, -b)+ ict;
	Itc = Itc/complex<double>(3.0,0.0);//c相基波正序电流
	//fprintf(fp2,"%f\t%f\t%f\t%f\t%f\t%f\n",abs(Uta),arg(Uta)*180/PI,abs(Utb),arg(Utb)*180/PI,abs(Utc),arg(Utc)*180/PI);
	//Ualpha1 = arg(Utt);
	S = Uta*conj(Ita)+Utb*conj(Itb)+Utc*conj(Itc);//视在功率,如果采用标幺值计算,则S=Uta*conj(Ita)
    fprintf(fp2,"%f\t%f\t%f\t%f\t\n",(double(i)*3/3600),abs(Uta),real(S),imag(S));
 
   }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -