电力系统潮流计算程序
- 格式:doc
- 大小:30.50 KB
- 文档页数:4
#include <iostream.h>
#include <math.h>
#include "Node.h"
#include "Transmission_line.h"
#include "Transformer.h"
void main()
{
cout<<"请输入末端负荷:(先有功Pd再无功Qd)\n";
double Pd;
double Qd;
cin>>Pd>>Qd;
cout<<"请输入末端大概的电压值Ud:\n";
double Ud;
cin>>Ud;
double data[300][8]; //分别为0前面有功,1前面无功,2压降,3中间有功,4中间无功,5变比,6后面有功,7后面无功
int ii;
ii=0;
data[ii][0]=0.0;
data[ii][1]=0.0;
data[ii][2]=Ud;
data[ii][3]=Pd;
data[ii][4]=Qd;
data[ii][5]=1.0;
data[ii][6]=0.0;
data[ii][7]=0.0;
ii++;
cout<<"请按从末端到首段的顺序输入线路的参数(分为--节点、输电线路、变压器):\n";
while(1)
{
double a;
double b;
double c;
double d;
double e;
double f;
int x;
cout<<"请输入数值,0代表退出,1代表节点,2代表输电线路,3代表变压器:\n";
cin>>x;
if(x!=0&&x!=1&&x!=2&&x!=3)
{
cout<<"选择有误,请重新输入!\n";
cout<<"请输入数值,0代表退出,1代表节点,2代表输电线路,3代表变压器:\n";
cin>>x;
}
if(x==0)
break;
if(x==1)
{
cout<<"请输入节点参数值\n(有功功率P、无功功率Q):\n";
cin>>a>>b;
Node N[100];
int i=0;
N[i].Pn=a;
N[i].Qn=b;
data[ii][0]=0.0;
data[ii][1]=0.0;
data[ii][2]=0.0;
data[ii][3]=N[i].Pn;
data[ii][4]=N[i].Qn;
data[ii][5]=1.0;
data[ii][6]=0.0;
data[ii][7]=0.0;
i++;
ii++;
}
if(x==2)
{
cout<<"请输入输电线路参数值\n(线路阻抗R、线路感抗X、电导B):\n";
cin>>a>>b>>c;
Transmission_line Tm[100];
int j=0;
Tm[j].Rl=a;
Tm[j].Xl=b;
Tm[j].Bl=c;
data[ii][0]=0.0;
data[ii][1]=Tm[j].GetQf(data[ii-1][2]);
data[ii][6]=0.0;
data[ii][7]=Tm[j].GetQb(data[ii-1][2]);
data[ii][2]=Tm[j].GetUl(data[ii-1][3]+data[ii-1][1]+data[ii][7],data[ii-1][4]+data[ii-1][0]+dat a[ii][6],data[ii-1][2]);
//参数分别为前节点的有功、无功、电压
data[ii][3]=Tm[j].GetPl(data[ii-1][3]+data[ii-1][1]+data[ii][7],data[ii-1][4]+data[ii-1][0]+dat
data[ii][4]=Tm[j].GetQl(data[ii-1][3]+data[ii-1][1]+data[ii][7],data[ii-1][4]+data[ii-1][0]+dat a[ii][6],data[ii-1][2]);
data[ii][5]=1.0;
j++;
ii++;
}
if(x==3)
{
cout<<"请输入变压器铭牌值\n(容量Sn、短路损耗Pk、短路电压百分比Uk%、空载损耗P0、空载电压百分比I0%、变比k):\n";
cin>>a>>b>>c>>d>>e>>f;
Transformer Tf[100];
int k=0;
Tf[k].SN=a;
Tf[k].Pk=b;
Tf[k].Uk=c;
Tf[k].P0=d;
Tf[k].I0=e;
Tf[k].Kk=f;
data[ii][0]=Tf[k].GetP0();
data[ii][1]=Tf[k].GetQ0();
data[ii][6]=0.0;
data[ii][7]=0.0;
data[ii][2]=Tf[k].GetUt(data[ii-1][3]+data[ii-1][1]+data[ii][7],data[ii-1][4]+data[ii-1][0]+data [ii][6],data[ii-1][2]);//参数要改
data[ii][3]=Tf[k].GetPt(data[ii-1][3]+data[ii-1][1]+data[ii][7],data[ii-1][4]+data[ii-1][0]+data [ii][6],data[ii-1][2]);
data[ii][4]=Tf[k].GetQt(data[ii-1][3]+data[ii-1][1]+data[ii][7],data[ii-1][4]+data[ii-1][0]+data [ii][6],data[ii-1][2]);
data[ii][5]=Tf[k].Kk;
k++;
ii++;
}
}
cout<<"输入首端电压值U1:\n";
double U1;
cin>>U1;
data[ii][0]=0.0;
data[ii][1]=0.0;
data[ii][3]=data[ii-1][3]+data[ii-1][1]+data[ii][7];
data[ii][4]=data[ii-1][4]+data[ii-1][0]+data[ii][6];
data[ii][5]=1.0;
data[ii][6]=0.0;
data[ii][7]=0.0;
int jj;
jj=ii;
if(fabs(data[ii][2]-data[ii-1][2])<10.0)
cout<<"末端电压值Ud="<<data[jj-1][2]<<endl;
else cout<<"错误!";
}。