电力系统分析实验DOC.docx

上传人:b****4 文档编号:3819822 上传时间:2022-11-25 格式:DOCX 页数:35 大小:234.71KB
下载 相关 举报
电力系统分析实验DOC.docx_第1页
第1页 / 共35页
电力系统分析实验DOC.docx_第2页
第2页 / 共35页
电力系统分析实验DOC.docx_第3页
第3页 / 共35页
电力系统分析实验DOC.docx_第4页
第4页 / 共35页
电力系统分析实验DOC.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

电力系统分析实验DOC.docx

《电力系统分析实验DOC.docx》由会员分享,可在线阅读,更多相关《电力系统分析实验DOC.docx(35页珍藏版)》请在冰豆网上搜索。

电力系统分析实验DOC.docx

电力系统分析实验DOC

电力系统分析实验报告

院系:

电气学院电气工程系

班级:

姓名:

学号:

联系方式:

 

实验一:

节点导纳阵和短路实验

1.1自导纳和互导纳的计算原理

1.1.1节电导纳矩阵的定义及物理意义:

节点导纳阵是一个稀疏的对称矩阵。

一般的,对于有n个独立节点的网络,可以列写n个节电方程,或用矩阵缩记写成YV=I的形式,其中矩阵Y称为节点导纳矩阵。

它的对角线元素Yii称为节点i的自导纳,其值等于接于节点i的所有支路导纳之和。

换句话说,自导纳Yii是节点i以外的所有节点都接地时节点i对地的总导纳。

非对角线元素Yij称为节点i、j之间的互导纳,它等于直接连接于节点i、j间的支路导纳的负值。

由此可见,若节点i、j之间不存在直接支路,则Yij=0。

1.1.2节点导纳矩阵的主要特点:

(1)导纳矩阵的元素很容易根据网络接线图和支路参数直观地求得,形成节点导纳矩阵的程序比较简单。

(2)导纳矩阵是稀疏矩阵,其对角线元素一般不为零,但在非对角线元素中则存在不少零元素。

在电力系统的接线图中,一半每个节点同平均3-4个其他节点有直接的支路连接,因此在导纳矩阵的非对角线元素中每行平均仅有3-4个非零元素,其余的都是零元素。

c.自导纳与互导纳的计算原理

一般网络:

一般地,对于有n个独立节点的网络,可以列写n个节电方程:

也可以用矩阵写成:

根据上述节点导纳矩阵的物理意义及定义特点,我们容易得出节点导纳矩阵中元素的计算方法和原理:

对于节点自导纳,有:

即Yii等于与节点i相接的所有支路的导纳之和。

对于节点间互导纳,有:

即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

{

fscanf(fp,"%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);

printf("%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<10;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>4)

{

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()

{FILE*fp;

fp=fopen("Ymatrix.txt","wb");

for(inti=1;i<=nNode;i++)

{

for(intj=1;j<=nNode;j++)

{

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语言程序代码:

#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

{fscanf(fp,"%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);

printf("%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<10;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>4)

{

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);

}

}

}

}

/*计算短路电流电压函数*/

voidShortcutCurrent()

{

floatZR[10],ZX[10],vr[10],vx[10];

floatvoltageR[10],voltageX[10];

floatIFR,IFX,temp;

inti;

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;i<=nNode;i++)

{

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;k

{

floattemp;

intii,jj,flag;

floatrr,xx,yb,yb1,yr;

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)

{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;

}

printf("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","wb");

for(intk=0;k<=4;k++)

{

fprintf(fp1,"%9.6f+j%9.6f",Branch[k].IR,Branch[k].IX);

fprintf(fp1,"\n");

}

fclose(fp1);

}

/*主函数*/

voidmain()

{

data_read();

ComputeYmatrix();

data_output();

ShortcutCurrent();

data_output2();

}

1.6短路实验相关计算结果:

实验二:

简单系统的牛顿法潮流计算的上机实验

2.1计算程序框图

 

2.2程序清单

(1)首先运用C语言程序计算已知网络参数计算节点导纳矩阵;

(2)构建函数给电压赋初值;

(3)构建函数计算迭代过程中节点不平衡量;

(4)构建函数计算雅可比矩阵元素;

(5)运用函数将雅克比矩阵变形,计算修正方程;

(6)构建函数按公式计算修正各节点的电压;

(7)在主函数中构建goto函数,进行迭代关系;

(8)结束迭代,计算平衡节点的功率和网络的功率分布;

2.3程序代码

#include"stdio.h"

/*定义节点支路结构体*/

structBranchInfo

{

inti;

intj;

floatr;

floatx;

floatyb;

intflag;

}Branch[10];

/*定义PQN结构体*/

structPQNode

{

inti;

floatp;

floatqv;

intflag;

}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;

/*数据读取函数*/

voiddata_read()

{

FILE*fp;

fp=fopen("node4.txt","rb");

fscanf(fp,"%d%d%d%d%d%f%f\n",&nNode,&nBranch,&pqsum,&pvsum,&SlackNo,&slackVoltage,&eps);

printf("%3d%3d%3d%3d%3d%f%f\n",nNode,nBranch,pqsum,pvsum,SlackNo,slackVoltage,eps);

for(intk=0;k

{

fscanf(fp,"%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);

printf("%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);

}

for(inti=0;i

{

fscanf(fp,"%d%f%f%d\n",&nodepq[i].i,&nodepq[i].p,&nodepq[i].qv,&nodepq[i].flag);

printf("%d%f%f%d\n",nodepq[i].i,nodepq[i].p,nodepq[i].qv,nodepq[i].flag);

}

fclose(fp);

}

/*计算导纳参数矩阵*/

voidcomputeYmatrix()

{

for(inti=0;i<10;i++)

for(intj=0;j<10;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

{

yb1=1/yb1;

YR[ii][jj]=0;

YR[jj][ii]=0;

YB[ii][jj]=1/(xx*yb1);

YB[jj][ii]=1/(xx*yb1);

 

if(ii==3)

{

YR[ii][ii]=0;

YB[ii][ii]=-(1/xx);

}

elseif(jj==3)

{

YR[jj][jj]=0;

YB[jj][jj]=-(1/xx);

}

if(ii==1)

{

YB[ii][ii]+=-1/(yb1*yb1*xx);

}

elseif(jj==1)

{

YB[jj][jj]+=-1/(yb1*yb1*xx);

}

}

}

}

/*数据输出函数,输出到Ymatrix.txt文本文档*/

voiddata_output()

{

FILE*fp;

fp=fopen("Ymatrix.txt","wb");

for(inti=1;i<=nNode;i++)

{

for(intj=1;j<=nNode;j++)

{

fprintf(fp,"%8.5f+j%8.5f",YR[i][j],YB[i][j]);

}

fprintf(fp,"\n");

}

fclose(fp);

}

 

/*电压初始化函数*/

voidinitializeVoltage()

{

intk,flag;

for(k=0;k

{flag=nodepq[k].flag;

if(flag)

{e0[nodepq[k].i]=1.0;

f0[nodepq[k].i]=0.0;

}

else

{

e0[nodepq[k].i]=nodepq[k].qv;

f0[nod

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1