📄 三相预处理.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 + -