电力系统稳态潮流上机完整可运行程序Word文件下载.docx
- 文档编号:17867970
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:14
- 大小:18.36KB
电力系统稳态潮流上机完整可运行程序Word文件下载.docx
《电力系统稳态潮流上机完整可运行程序Word文件下载.docx》由会员分享,可在线阅读,更多相关《电力系统稳态潮流上机完整可运行程序Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
,"
r"
))==NULL)
{
printf("
Cannotopenthefilenamed'
data.txt'
\n"
);
return;
}
fscanf(fp,"
%d,%d"
&
nBus,&
nBranch);
for(i=0;
i<
nBus;
i++)
{
fscanf(fp,"
%d,%f,%f,%f,%f,%f,%f,%d"
gBus[i].No,&
gBus[i].Voltage,&
gBus[i].Phase,
&
gBus[i].GenP,&
gBus[i].GenQ,&
gBus[i].LoadP,&
gBus[i].LoadQ,&
gBus[i].Type);
nBranch;
%d,%d,%d,%f,%f,%f,%f"
gBranch[i].No,&
gBranch[i].No_I,&
gBranch[i].No_J,
gBranch[i].R,&
gBranch[i].X,&
gBranch[i].B,&
gBranch[i].k);
}/*半容纳*/
fclose(fp);
voidGetYMatrix(int&
nBranch)
inti,j,bus1,bus2;
floatr,x,d,g,b;
for(j=0;
j<
j++)
{
gY_G[i][j]=0;
gY_B[i][j]=0;
}
i<
i++)
if(gBranch[i].k==0)
bus1=gBranch[i].No_I-1;
bus2=gBranch[i].No_J-1;
r=gBranch[i].R;
x=gBranch[i].X;
d=r*r+x*x;
g=r/d;
b=-x/d;
if(bus1!
=bus2)
{
gY_G[bus1][bus1]=gY_G[bus1][bus1]+g;
gY_G[bus2][bus2]=gY_G[bus2][bus2]+g;
gY_G[bus1][bus2]=gY_G[bus1][bus2]-g;
gY_G[bus2][bus1]=gY_G[bus2][bus1]-g;
gY_B[bus1][bus1]=gY_B[bus1][bus1]+b+gBranch[i].B;
/*hengzong*/
gY_B[bus2][bus2]=gY_B[bus2][bus2]+b+gBranch[i].B;
gY_B[bus1][bus2]=gY_B[bus1][bus2]-b;
gY_B[bus2][bus1]=gY_B[bus2][bus1]-b;
}
else
gY_B[bus1][bus1]=gY_B[bus1][bus1]+b;
//addyourcodes
else
{bus1=gBranch[i].No_I-1;
r=gBranch[i].R;
gY_G[bus1][bus1]=gY_G[bus1][bus1]+gBranch[i].k*gBranch[i].k*g;
gY_G[bus1][bus2]=gY_G[bus1][bus2]-g*gBranch[i].k;
gY_G[bus2][bus1]=gY_G[bus2][bus1]-g*gBranch[i].k;
gY_B[bus1][bus1]=gY_B[bus1][bus1]+gBranch[i].k*gBranch[i].k*b;
gY_B[bus2][bus2]=gY_B[bus2][bus2]+b;
gY_B[bus1][bus2]=gY_B[bus1][bus2]-b*gBranch[i].k;
gY_B[bus2][bus1]=gY_B[bus2][bus1]-b*gBranch[i].k;
//addyourcodes
//outputtheYmatrixmk
data\\ymatrix1.txt"
w"
ymatrix.txt'
return;
fprintf(fp,"
---YMatrix---\n"
fprintf(fp,"
Y(%d,%d)=(%10.6f,%10.6f)\n"
i+1,j+1,gY_G[i][j],gY_B[i][j]);
voidSetInitial(int&
nBus)
if(gBus[i].Type==2)
gf[i]=gBus[i].Voltage*sin(gBus[i].Phase);
ge[i]=gBus[i].Voltage*cos(gBus[i].Phase);
gf[i]=0;
ge[i]=1;
voidGetUnbalance(int&
{
intj;
if(gBus[i].Type!
=2)
gDelta_P[i]=0;
{gDelta_P[i]=gDelta_P[i]+ge[i]*(gY_G[i][j]*ge[j]-gY_B[i][j]*gf[j])+gf[i]*(gY_G[i][j]*gf[j]+gY_B[i][j]*ge[j]);
gDelta_P[i]=gBus[i].GenP-gBus[i].LoadP-gDelta_P[i];
if(gBus[i].Type==0)
{gDelta_Q[i]=0;
for(j=0;
{gDelta_Q[i]=gDelta_Q[i]+gf[i]*(gY_G[i][j]*ge[j]-gY_B[i][j]*gf[j])-ge[i]*(gY_G[i][j]*gf[j]+gY_B[i][j]*ge[j]);
gDelta_Q[i]=gBus[i].GenQ-gBus[i].LoadQ-gDelta_Q[i];
elseif(gBus[i].Type==1)
gDelta_Q[i]=gBus[i].Voltage*gBus[i].Voltage-(ge[i]*ge[i]+gf[i]*gf[i]);
for(i=0;
gDelta_Q[i]=0;
gDelta_P[i]=0;
//addyourcodesgDelta_Q[i]
voidGetJaccobi(int&
{inti,j,a,b;
floatc=0,d=0;
j++)
{if((i!
=j)&
&
(gBus[i].Type!
=1))
{a=i*2;
b=j*2;
gJaccobi[a][b]=gY_G[i][j]*gf[i]-gY_B[i][j]*ge[i];
b=b+1;
gJaccobi[a][b]=gY_G[i][j]*ge[i]+gY_B[i][j]*gf[i];
a=a+1;
b=b-1;
gJaccobi[a][b]=0-gY_G[i][j]*ge[i]-gY_B[i][j]*gf[i];
elseif((i!
(gBus[i].Type==1))
gJaccobi[a][b]=0;
{c=0,d=0;
if(i!
=j)
{c=c+gY_G[i][j]*ge[j]-gY_B[i][j]*gf[j];
d=d+gY_G[i][j]*gf[j]+gY_B[i][j]*ge[j];
c=c+gY_G[i][i]*ge[i]-gY_B[i][i]*gf[i];
d=d+gY_G[i][i]*gf[i]+gY_B[i][i]*ge[i];
=1)
b=i*2;
gJaccobi[a][b]=gY_G[i][i]*gf[i]-gY_B[i][i]*ge[i]+d;
gJaccobi[a][b]=gY_G[i][i]*ge[i]+gY_B[i][i]*gf[i]+c;
a=a+1;
gJaccobi[a][b]=gY_G[i][i]*gf[i]-gY_B[i][i]*ge[i]-d;
gJaccobi[a][b]=c-gY_G[i][i]*ge[i]-gY_B[i][i]*gf[i];
gJaccobi[a][b]=2*ge[i];
gJaccobi[a][b]=2*gf[i];
for(i=0;
{a=2*i;
b=2*j;
if(gBus[i].Type==2)
{gJaccobi[a][b]=0;
gJaccobi[a][b+1]=0;
gJaccobi[a+1][b]=0;
gJaccobi[a+1][b+1]=0;
gJaccobi[b][a]=0;
gJaccobi[b+1][a]=0;
gJaccobi[b][a+1]=0;
gJaccobi[b+1][a+1]=0;
//addyourcodes
voidGetRevised(int&
{inti,j,a,b,c;
a=2*nBus-2;
ob1.SetSize(a);
a+2;
if(gBus[i/2].Type==2)
{c=i;
break;
a;
{if(j>
=c&
i>
=c)
ob1.Data(i,j)=gJaccobi[i+2][j+2];
if(j>
c)
ob1.Data(i,j)=gJaccobi[i][j+2];
if(j<
c&
ob1.Data(i,j)=gJaccobi[i+2][j];
ob1.Data(i,j)=gJaccobi[i][j];
b=c/2;
nBus-1;
i++)
{if(i<
b)
{ob1.Value(i*2)=gDelta_P[i];
ob1.Value(i*2+1)=gDelta_Q[i];
if(i>
=b)
{ob1.Value(i*2)=gDelta_P[i+1];
ob1.Value(i*2+1)=gDelta_Q[i+1];
gDelta_fe[i]=ob1.Value(i);
(c+1))
{gDelta_fe[i]=ob1.Value(i-2);
gDelta_fe[c]=0;
gDelta_fe[c+1]=0;
//addyourcodesgetit
voidGetNewValue(int&
{inti,a;
a=2*i;
gf[i]+=gDelta_fe[a];
a+=1;
ge[i]+=gDelta_fe[a];
}
//addyourcodes
intmain(intargc,char*argv[])
inti,Count_Num;
floatmaxValue;
intnBus,nBranch;
intj,a;
floatGss=0,Bss=0,z,c,d,x=0,y=0;
floatdels[Bus_Num][Bus_Num],p[Bus_Num][Bus_Num],q[Bus_Num][Bus_Num],delp[Bus_Num][Bus_Num],delq[Bus_Num][Bus_Num];
//test();
GetData(nBus,nBranch);
GetYMatrix(nBus,nBranch);
SetInitial(nBus);
for(Count_Num=0;
Count_Num<
=20;
Count_Num++)
GetUnbalance(nBus);
GetJaccobi(nBus);
GetRevised(nBus);
GetNewValue(nBus);
maxValue=fabs(gDelta_fe[0]);
for(i=1;
=2*(nBus-1)-1;
if(maxValue<
fabs(gDelta_fe[i]))
maxValue=fabs(gDelta_fe[i]);
if(maxValue<
Precision)
break;
叠代次数:
%d\n"
Count_Num);
节点%d电压为:
%10.5f∠%f\n"
i+1,sqrt(ge[i]*ge[i]+gf[i]*gf[i]),atan(gf[i]/ge[i])/3.14159*180);
//添加
{if(gY_B[i][j]<
0)printf("
Y(%d,%d)=%f%fj\n"
i,j,gY_G[i][j],gY_B[i][j]);
elseprintf("
Y(%d,%d)=%f+%fj\n"
if(gBus[i].Type==2)
{a=i;
//qiubus2
{Gss+=ge[i]*gY_G[a][i]-gf[i]*gY_B[a][i];
Bss+=0-gf[i]*gY_G[a][i]-ge[i]*gY_B[a][i];
z=Gss;
Gss=Gss*ge[a]-Bss*gf[a];
Bss=gf[a]*z+ge[a]*Bss;
平衡节点功率:
%f+j%f\n"
Gss,Bss);
//xiaqiuxianlugonglv
{p[i][j]=0;
q[i][j]=0;
{x=0;
{for(a=0;
a<
a++)
{if(gBranch[a].No_I-1==i&
gBranch[a].No_J-1==j){if(gBranch[a].k==0){y=0;
x=gBranch[a].B;
}else{y=(1-gBranch[a].k)*gY_G[i][j];
x=(1-gBranch[a].k)*gY_B[i][j];
}break;
if(gBranch[a].No_I-1==j&
gBranch[a].No_J-1==i){if(gBranch[a].k==0){y=0;
}else{y=(1-1/gBranch[a].k)*gY_G[i][j];
x=(1-1/gBranch[a].k)*gBranch[a].B;
c=y*ge[i]-ge[i]*gY_G[i][j]-x*gf[i]+gf[i]*gY_B[i][j]+ge[j]*gY_G[i][j]-gf[j]*gY_B[i][j];
d=0-y*gf[i]-x*ge[i]+gY_B[i][j]*ge[i]+gf[i]*gY_G[i][j]-ge[j]*gY_B[i][j]-gf[j]*gY_G[i][j];
p[i][j]=ge[i]*c-gf[i]*d;
q[i][j]=gf[i]*c+ge[i]*d;
if(i==j)
for(a=0;
if((gBranch[a].No_I-1==i)&
(gBranch[a].No_J-1==i))
{x=(-1)/gBranch[a].X;
elsex=0;
p[i][j]=0;
q[i][j]=(ge[i]*ge[i]+gf[i]*gf[i])*x*(-1);
{c=0;
d=0;
{for(j=0;
{c=c+p[i][j];
d=d+q[i][j];
校验:
%f%f,%f%f\n"
gBus[i].GenP-gBus[i].LoadP,c,gBus[i].GenQ-gBus[i].LoadQ,d);
{if(i!
=j){delp[i][j]=p[i][j]+p[j][i];
delq[i][j]=q[i][j]+q[j][i];
else{delp[i][i]=p[i][i];
delq[i][i]=q[i][i];
潮流值\n"
线路潮流%d---%d%f+j%f\n"
i+1,j+1,p[i][j],q[i][j]);
线路损耗%d--%d%f+j%f\n"
i+1,j+1,delp[j][i],delq[j][i]);
c=0;
for(j=i;
{c+=2*delp[i][j];
d+=2*delq[i][j];
}
printf("
线路总损耗:
%f+j%f\n"
c,d);
//addyourcodes
//gBus[i].VoltagegY_G[bus1][bus1]gY_B[bus1][bus2]bus1=gBranch[i].No_I-1;
bus2=gBranch[i].No_J-1;
return0;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电力系统 稳态 潮流 上机 完整 运行 程序