电力系统分析实验DOCWord文档格式.docx
《电力系统分析实验DOCWord文档格式.docx》由会员分享,可在线阅读,更多相关《电力系统分析实验DOCWord文档格式.docx(35页珍藏版)》请在冰豆网上搜索。
![电力系统分析实验DOCWord文档格式.docx](https://file1.bdocx.com/fileroot1/2022-11/25/fa306d71-99e0-450a-a0b8-286899a05832/fa306d71-99e0-450a-a0b8-286899a058321.gif)
对于节点间互导纳,有:
即Yik等于节点k、i之间的支路导纳的负值。
对于含变压器的支路:
根据∏型等值电路,可以写出节点p、q的自导纳和节点间的互导纳分别为:
1.2给定计算条件及程序如何修改:
给定计算条件:
在2节点处增加一个发电机,其有功功率为5,无功功率为3j;
程序修改方法:
无需修改程序;
原因:
节点导纳矩阵反映了网络元件的结构特点,而与电源或负载无关。
自导纳反应了节点i以外的所有节点都接地时节点i对地的总导纳,互导纳反应了两节点之间的支路导纳负值。
因此,增加发电机,节点导纳矩阵无需修改。
1.3程序代码及计算结果:
程序代码:
#include"
stdio.h"
intnNode,nBranch;
/*定义结构体*/
structBranchInfo
{inti;
intj;
floatr;
floatx;
floatyb;
intflag;
floatIR;
floatIX;
}Branch[10];
/*读取数据函数*/
voiddata_read()
{FILE*fp;
fp=fopen("
node5.txt"
"
rb"
);
fscanf(fp,"
%d%d\n"
&
nNode,&
nBranch);
printf("
%3d%3d\n"
nNode,nBranch);
for(intk=0;
k<
nBranch;
k++)
{
%d%d%f%f%f%d\n"
Branch[k].i,&
Branch[k].j,&
Branch[k].r,&
Branch[k].x,&
Branch[k].yb,&
Branch[k].flag);
%d%d%f%f%f%d\n"
Branch[k].i,Branch[k].j,Branch[k].r,Branch[k].x,Branch[k].yb,Branch[k].flag);
}
fclose(fp);
}
floatYR[10][10],YB[10][10];
/*计算导纳参数矩阵*/
voidComputeYmatrix()
{
for(inti=0;
i<
10;
i++)
for(intj=0;
j<
j++)
{
YR[i][j]=0.0f;
YB[i][j]=0.0f;
}
floattemp;
intii,jj,flag;
floatrr,xx,yb,yb1,yr;
for(intk=0;
k<
ii=Branch[k].i;
jj=Branch[k].j;
rr=Branch[k].r;
xx=Branch[k].x;
yb1=Branch[k].yb;
flag=Branch[k].flag;
temp=rr*rr+xx*xx;
yr=rr/temp;
yb=-xx/temp;
if(flag)//line
{
YR[ii][ii]+=yr;
YR[jj][jj]+=yr;
YB[ii][ii]+=yb;
YB[jj][jj]+=yb;
YB[ii][ii]+=yb1;
YB[jj][jj]+=yb1;
YR[ii][jj]=-yr;
YR[jj][ii]=-yr;
YB[ii][jj]=-yb;
YB[jj][ii]=-yb;
else//transformer
YR[ii][jj]=0;
YR[jj][ii]=0;
YB[ii][jj]=1/(xx*yb1);
YB[jj][ii]=1/(xx*yb1);
if(ii<
2||ii>
4)
{
YR[ii][ii]=0;
YB[ii][ii]=-(1/xx);
}
elseif(jj<
2||jj>
YR[jj][jj]=0;
YB[jj][jj]=-(1/xx);
}
if(ii%2==0)
{YB[ii][ii]+=-1/(yb1*yb1*xx);
elseif(jj%2==0)
{YB[jj][jj]+=-1/(yb1*yb1*xx);
/*数据输出函数*/
voiddata_output()
Ymatrix.txt"
wb"
for(inti=1;
=nNode;
for(intj=1;
fprintf(fp,"
%8.5f+j%8.5f"
YR[i][j],YB[i][j]);
fprintf(fp,"
\n"
fclose(fp);
/*主函数*/
voidmain()
{
data_read();
ComputeYmatrix();
data_output();
计算结果:
1.4短路实验计算条件:
(1)短路实验计算基本原理和方法:
(2)程序框图:
(3)短路实验计算的条件:
短路实验计算的条件为,三号节点故障,过渡阻抗zf为1j。
1.5短路实验相关代码:
用MATLAB计算节点阻抗矩阵:
代码:
Y=[0.00000+-9.52381j,0.00000+9.07030j,0.00000+0.00000j,0.00000+0.00000j,0.00000+0.00000j;
0.00000+9.07030j,9.10855+-33.10012j,-4.99896+13.53885j,-4.10959+10.95890j,0.00000+0.00000j;
0.00000+0.00000j,-4.99896+13.53885j,11.37290+-31.21523j,-6.37394+17.70538j,0.00000+0.00000j;
0.00000+0.00000j,-4.10959+10.95890j,-6.37394+17.70538j,10.48353+-34.52840j,0.00000+5.66123j;
0.00000+0.00000j,0.00000+0.00000j,0.00000+0.00000j,0.00000+5.66123j,0.00000+-5.43478j]
Z=inv(Y)
运行结果:
相关C语言程序代码:
inti;
/*读数据函数*/
FILE*fp;
{fscanf(fp,"
YR[i][j]=0.0f;
/*计算短路电流电压函数*/
voidShortcutCurrent()
floatZR[10],ZX[10],vr[10],vx[10];
floatvoltageR[10],voltageX[10];
floatIFR,IFX,temp;
ZR[1]=-0.0026;
ZR[2]=-0.0027;
ZR[3]=0.0052;
ZR[4]=-0.0016;
ZR[5]=-0.0016;
ZX[1]=-9.7241;
ZX[2]=-10.2103;
ZX[3]=-10.1887;
ZX[4]=-10.2074;
ZX[5]=-10.6327;
ZX[3]+=1;
temp=ZR[3]*ZR[3]+ZX[3]*ZX[3];
IFR=1.0*ZR[3]/temp;
IFX=-1.0*ZX[3]/temp;
for(i=1;
{
vr[i]=ZR[i]*IFR-ZX[i]*IFX;
vx[i]=ZX[i]*IFR+ZR[i]*IFX;
voltageR[i]=1.0-vr[i];
voltageX[i]=-vx[i];
voltageR[3]=0;
voltageX[3]=0;
for(intk=0;
floattemp;
if(flag)
{Branch[k].IR=(vr[ii]-vr[jj])*yr-(vx[ii]-vx[jj])*yb;
Branch[k].IX=(vr[ii]-vr[jj])*yb+(vx[ii]-vx[jj])*yr;
else
Branch[k].IR=(yb1*vr[ii]-vr[jj])*yr-(yb1*vx[ii]-vx[jj])*yb;
Branch[k].IX=(yb1*vr[ii]-vr[jj])*yb+(yb1*vx[ii]-vx[jj])*yr;
I%d%d=%f%f\n"
Branch[k].i,Branch[k].j,Branch[k].IR,Branch[k].IX);
/*打印输出数据函数*/
voiddata_output2()
FILE*fp1;
fp1=fopen("
Branchcurrent.txt"
=4;
fprintf(fp1,"
%9.6f+j%9.6f"
Branch[k].IR,Branch[k].IX);
fclose(fp1);
ShortcutCurrent();
data_output2();
1.6短路实验相关计算结果:
实验二:
简单系统的牛顿法潮流计算的上机实验
2.1计算程序框图
2.2程序清单
(1)首先运用C语言程序计算已知网络参数计算节点导纳矩阵;
(2)构建函数给电压赋初值;
(3)构建函数计算迭代过程中节点不平衡量;
(4)构建函数计算雅可比矩阵元素;
(5)运用函数将雅克比矩阵变形,计算修正方程;
(6)构建函数按公式计算修正各节点的电压;
(7)在主函数中构建goto函数,进行迭代关系;
(8)结束迭代,计算平衡节点的功率和网络的功率分布;
2.3程序代码
/*定义节点支路结构体*/
/*定义PQN结构体*/
structPQNode
floatp;
floatqv;
}nodepq[10];
intpqsum,pvsum,SlackNo;
floatslackVoltage,eps;
doubleimb[10][2];
doubletempimb[10][2];
floatPP[10][1];
intnNode,nBranch;
floatYR[10][10],YB[10][10];
floate0[10],f0[10];
floatw[10][10];
floaterrorMax;
/*数据读取函数*/
node4.txt"
%d%d%d%d%d%f%f\n"
nBranch,&
pqsum,&
pvsum,&
SlackNo,&
slackVoltage,&
eps);
%3d%3d%3d%3d%3d%f%f\n"
nNode,nBranch,pqsum,pvsum,SlackNo,slackVoltage,eps);
fscanf(fp,"
printf("
for(inti=0;
nNode-1;
%d%f%f%d\n"
nodepq[i].i,&
nodepq[i].p,&
nodepq[i].qv,&
nodepq[i].flag);
%d%f%f%d\n"
nodepq[i].i,nodepq[i].p,nodepq[i].qv,nodepq[i].flag);
voidcomputeYmatrix()
yb1=1/yb1;
if(ii==3)
elseif(jj==3)
if(ii==1)
{
YB[ii][ii]+=-1/(yb1*yb1*xx);
elseif(jj==1)
YB[jj][jj]+=-1/(yb1*yb1*xx);
/*数据输出函数,输出到Ymatrix.txt文本文档*/
/*电压初始化函数*/
voidinitializeVoltage()
intk,flag;
for(k=0;
nNode;
{flag=nodepq[k].flag;
{e0[nodepq[k].i]=1.0;
f0[nodepq[k].i]=0.0;
else
e0[nodepq[k].i]=nodepq[k].qv;
f0[nod