潮流上机.docx

上传人:b****7 文档编号:25508028 上传时间:2023-06-09 格式:DOCX 页数:19 大小:23.55KB
下载 相关 举报
潮流上机.docx_第1页
第1页 / 共19页
潮流上机.docx_第2页
第2页 / 共19页
潮流上机.docx_第3页
第3页 / 共19页
潮流上机.docx_第4页
第4页 / 共19页
潮流上机.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

潮流上机.docx

《潮流上机.docx》由会员分享,可在线阅读,更多相关《潮流上机.docx(19页珍藏版)》请在冰豆网上搜索。

潮流上机.docx

潮流上机

课程设计报告

(2011--2012年度第1学期)

名称:

电力系统潮流上机

院系:

电气与电子工程学院

班级:

电网1101

学号:

学生姓名:

指导教师:

王莉丽

设计周数:

两周

成绩:

日期:

2014年1月

《电力系统综合仿真》课程设计

一、目的与要求

培养学生编程实现电力系统仿真计算的能力,掌握潮流计算、短路计算、暂态稳定计算的相关知识

二、主要内容

1.编写潮流计算程序,要求如下:

2.1据给定的潮流计算任务书整理潮流计算的基础数据:

节点的分类,线路模型,等值变压器模型,电压等级的归算,标幺值的计算;

2.2基础数据的计算机存储:

节点数据,支路数据(包括变压器);

2.3用牛顿-拉夫逊法计算;

2.4根据所选潮流计算方法画流程图,划分出功能模块,有数据输入模块,导纳阵形成模块,解线性方程组模块,计算不平衡功率模块,形成雅可比矩阵模块,解修正方程模块,计算线路潮流,网损,PV节点无功功率和平衡节点功率,数据输出模块;

2.5据上述模块编制程序并上机调试程序,得出潮流计算结果;

2.6源程序及其程序中的符号说明集、程序流图

2.利用潮流计算结果编写故障计算程序,要求如下:

2.1发电机参数一律为PN=200MW,cosφ=0.85,

2.2变压器一律为Yd11接线,其中三角形侧接发电机,星形侧都直接接地

2.3线路零序参数一律为

2.4负荷都采用Y/Y型变压器接入,中性点与系统相连侧部接地。

负荷按照对称负荷考虑,纯阻抗形式。

2.5计算5节点发生三相对称短路、单相接地短路、两相短路和两相接地短路时的故障电流,以及各支路电流和节点电压。

3.思考题

3.1潮流计算和短路电流计算的元件模型有哪些不同点?

节点导纳矩阵有哪些不同?

计算过程有哪些不同点?

3.2短路电流计算中进行了哪些假设?

3.3如果交给你一个任务,请你用已有的潮流计算软件计算北京城市电网的潮流,你应该做哪些工作?

(收集哪些数据,如何整理,计算结果如何分析)

3.4比较过去的计算机语言上机学习和本课程上机有哪些不同?

设计中遇到的问题和解决的办法。

三、进度计划

序号

设计内容

完成时间

备注

1

教师讲解本次设计的任务及相关知识

课程设计开始前

2

整理潮流计算的原始数据,完成数据的读入读出模块

一天

3

编写及调试形成导纳矩阵模块

一天

4

计算不平衡功率,形成雅可比矩阵

一天

5

解修正方程

一天

6

计算线路潮流,网损,PV节点无功功率和平衡节点功率

一天

7

读入故障计算需要的数据,计算三相短路

一天

8

计算不对称短路

一天

9

写设计报告

一天

10

验收

一天

四、设计成果要求

1.提交任务书

2.计算机计算潮流程序流程图;

3.计算机计算短路电流程序流程图;

4.完整的仿真程序(包括变量的定义,子程序的调用等,计算结果),并有程序注释。

5.回答思考题

五、考核方式

总成绩=考勤+设计报告+面试成绩

学生姓名:

指导教师:

2014年1月

附录:

1.手算:

2.计算机计算潮流程序流程图

3.程序

#include"stdafx.h"

#include"fstream"

#include"iostream"

#include"DataForm.h"

#include"NEquation.h"

#include"math.h"

usingnamespaceSystem;

usingnamespacestd;

#definePI3.1415926

voidDataRead();

voidFormY();

voidVoltageInitial();

voidSetUnbalance();

voidFormJacobi();

voidGetRevised();

voidGetNewVoltageValue();

voidBusBalance();

voidBranchPQ();

voidBranceLoss();

intmain(array

:

String^>^args)

{

DataRead();

FormY();

VoltageInitial();

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

{

SetUnbalance();

FormJacobi();

GetRevised();

GetNewVoltageValue();

//break()

//if(fabs(H[i][j])>=1e-5||(N[i][j])>=1e-5||(H[i][j])>=1e-5||(J[i][j])>=1e-5||(L[i][j])>=1e-5)

}

BusBalance();

BranchPQ();

BranceLoss();

Console:

:

WriteLine(L"HelloWorld");

return0;

}

voidDataRead()//节点、支路数据读入子程序

{ifstreaminfile1;

infile1.open("BranchData2.txt");

for(inti=0;i

infile1>>Branch[i].Num>>Branch[i].BusFirst>>Branch[i].BusEnd>>Branch[i].R>>Branch[i].X>>Branch[i].B>>Branch[i].K;

infile1.close();

for(inti=0;i

cout<

ifstreaminfile2;

infile2.open("BusData2.txt");

for(inti=0;i

infile2>>Bus[i].Num>>Bus[i].BusType>>Bus[i].Voltage>>Bus[i].Phase>>Bus[i].Pg>>Bus[i].Qg>>Bus[i].Pl>>Bus[i].Ql;

infile2.close();

for(inti=0;i

cout<

}

voidFormY()//形成节点导纳矩阵子程序

{

for(inti=0;i

{for(intj=0;j

{G[i][j]=0;

B[i][j]=0;

}

}

intm,n;//设置两个变量分别存储之路手摸节点的编号

for(inti=0;i

{

floatGG,BB,B0,G1,G2,B1,B2;

m=Branch[i].BusFirst-1;//

n=Branch[i].BusEnd-1;

//以下为变压器变比不唯

Branch[i].R=Branch[i].K*Branch[i].R;

Branch[i].X=Branch[i].K*Branch[i].X;

//将变压器变比引起的对地之路转换成电哪里?

G1=(1-Branch[i].K)/(Branch[i].K*Branch[i].K)/(Branch[i].R*Branch[i].R+Branch[i].X*Branch[i].X)*Branch[i].R;

B1=-(1-Branch[i].K)/(Branch[i].K*Branch[i].K)/(Branch[i].R*Branch[i].R+Branch[i].X*Branch[i].X)*Branch[i].X;

//将变压器变比引起的对地之路换成导纳

G2=(Branch[i].K-1)/Branch[i].K/(Branch[i].R*Branch[i].R+Branch[i].X*Branch[i].X)*Branch[i].R;

B2=-(Branch[i].K-1)/Branch[i].K/(Branch[i].R*Branch[i].R+Branch[i].X*Branch[i].X)*Branch[i].X;

//变压器非标准变比处理完毕

GG=Branch[i].R/(Branch[i].R*Branch[i].R+Branch[i].X*Branch[i].X);

BB=-Branch[i].X/(Branch[i].R*Branch[i].R+Branch[i].X*Branch[i].X);

B0=Branch[i].B;//接地数据

G[m][m]+=GG+G1;

G[m][n]-=GG;

G[n][m]-=GG;

G[n][n]+=GG+G2;

B[m][m]+=BB+B0+B1;

B[m][n]-=BB;

B[n][m]-=BB;

B[n][n]+=BB+B0+B2;

//B[][]+=

}

ofstreamoutfile1("result.txt");

for(inti=0;i

{for(intj=0;j

{outfile1<

outfile1<

}

outfile1.close();

}

voidVoltageInitial()//设置节点电压子程序

{

for(inti=0;i

{

if(Bus[i].BusType==3)

{Ue[i]=1.04;

Uf[i]=0.0;

}

else

{Ue[i]=1.0;

Uf[i]=0.0;

}

cout<

}

}

voidSetUnbalance()//计算功率不平衡量子程序

{

for(inti=1;i

{P[i]=0;

Q[i]=0;

for(intj=0;j

{P[i]=P[i]+Ue[i]*(G[i][j]*Ue[j]-B[i][j]*Uf[j])+Uf[i]*(G[i][j]*Uf[j]+B[i][j]*Ue[j]);

Q[i]=Q[i]+Uf[i]*(G[i][j]*Ue[j]-B[i][j]*Uf[j])-Ue[i]*(G[i][j]*Uf[j]+B[i][j]*Ue[j]);

}

//cout<

//cout<

if(Bus[i].BusType==1)//PQ

{DeltaP[i]=Bus[i].Pg-Bus[i].Pl-P[i];

DeltaQU2[i]=Bus[i].Qg-Bus[i].Ql-Q[i];

}

elseif(Bus[i].BusType==2)//PV

{DeltaP[i]=Bus[i].Pg-Bus[i].Pl-P[i];

DeltaQU2[i]=Bus[i].Voltage*Bus[i].Voltage-(Ue[i]*Ue[i]+Uf[i]*Uf[i]);

}

//cout<

//cout<

}

for(inti=0;i

{Delta[2*i]=DeltaP[i+1];

Delta[2*i+1]=DeltaQU2[i+1];

}//形成delta值

ofstreamoutfile2("Delta2.txt");

for(intj=0;j<2*(BusNum-1);j++)

{outfile2<

outfile2.close();

}

voidFormJacobi()//形成雅各比矩阵子程序

{floatH[BusNum-1][BusNum-1],N[BusNum-1][BusNum-1],J[BusNum-1][BusNum-1],L[BusNum-1][BusNum-1];

floata[BusNum],b[BusNum];

for(inti=1;i

{a[i]=G[i][i]*Ue[i]-B[i][i]*Uf[i];

b[i]=G[i][i]*Uf[i]+B[i][i]*Ue[i];

for(intj=0;j

{if(j!

=i)

{a[i]=a[i]+(G[i][j]*Ue[j]-B[i][j]*Uf[j]);

b[i]=b[i]+(G[i][j]*Uf[j]+B[i][j]*Ue[j]);

}

}

}

for(inti=1;i

{

for(intj=1;j

{if(i==j)

{H[i][i]=-B[i][i]*Ue[i]+G[i][i]*Uf[i]+b[i];

N[i][i]=G[i][i]*Ue[i]+B[i][i]*Uf[i]+a[i];

if(Bus[i].BusType==1)

{J[i][i]=-G[i][i]*Ue[i]-B[i][i]*Uf[i]+a[i];

L[i][i]=-B[i][i]*Ue[i]+G[i][i]*Uf[i]-b[i];

}

elseif(Bus[i].BusType==2)

{J[i][i]=2*Uf[i];

L[i][i]=2*Ue[i];

}

}

elseif(i!

=j)

{H[i][j]=-B[i][j]*Ue[i]+G[i][j]*Uf[i];

N[i][j]=G[i][j]*Ue[i]+B[i][j]*Uf[i];

if(Bus[i].BusType==1)

{J[i][j]=-G[i][j]*Ue[i]-B[i][j]*Uf[i];

L[i][j]=-B[i][j]*Ue[i]+G[i][j]*Uf[i];

}

elseif(Bus[i].BusType==2)

{J[i][j]=0;

L[i][j]=0;

}

}

}

}

for(inti=0;i

{for(intj=0;j

{Jacobi[2*i][2*j]=H[i+1][j+1];

Jacobi[2*i][2*j+1]=N[i+1][j+1];

Jacobi[2*i+1][2*j]=J[i+1][j+1];

Jacobi[2*i+1][2*j+1]=L[i+1][j+1];

}

}

ofstreamoutfile4;

outfile4.open("Jacobi2.txt");

for(inti=0;i<2*(BusNum-1);i++)

{

for(intj=0;j<2*(BusNum-1);j++)

{

outfile4<

}

outfile4<

}

outfile4.close();

}

voidGetRevised()//求解修正方程得到电压增量子程序

{

NEquationObject;//建立一个对象

Object.SetSize(2*(BusNum-1));//设置矩阵的维数

ifstreaminfile1;

infile1.open("Jacobi2.txt");

for(inti=0;i<2*(BusNum-1);i++)

{for(intj=0;j<2*(BusNum-1);j++)

{Object.Data(i,j)=Jacobi[i][j];

infile1>>Object.Data(i,j);

}

}

infile1.close();

ifstreaminfile2;

infile2.open("Delta2.txt");

for(inti=0;i<2*(BusNum-1);i++)

infile2>>Object.Value(i);

infile2.close();

Object.Run();

for(inti=0;i<2*(BusNum-1);i++)

{DeltaU[i]=Object.Value(i);}//结果输出

ofstreamoutfile5("revisedequation2.txt");

for(intj=0;j<2*(BusNum-1);j++)

{outfile5<

outfile5.close();

}

voidGetNewVoltageValue()//得到新的电压子程序

{

for(inti=0;i

if(Bus[i].BusType!

=3)

{Ue[i]+=DeltaU[2*i-1];

Uf[i]+=DeltaU[2*i-2];

}

ofstreamoutfile6("newvoltagevalue2.txt");

for(inti=0;i

{//if(Bus[i].BusType==1||Bus[i].BusType==2)

outfile6<

}

outfile6.close();

}

voidBusBalance()//计算平衡节点功率子程序

{

for(inti=0;i

{

if(Bus[i].BusType==3)

{

P[i]=0.0;

Q[i]=0.0;

for(intj=0;j

{

P[i]+=Ue[i]*(G[i][j]*Ue[j]-B[i][j]*Uf[j])+Uf[i]*(G[i][j]*Uf[j]+B[i][j]*Ue[j]);//有功

Q[i]+=Uf[i]*(G[i][j]*Ue[j]-B[i][j]*Uf[j])-Ue[i]*(G[i][j]*Uf[j]+B[i][j]*Ue[j]);//无功

}

}

}

ofstreamoutfile7("BusBalance2.txt");

for(inti=0;i

if(Bus[i].BusType==3)

{outfile7<

outfile7.close();

//for(inti=0;i

//if(Bus[i].BusType==3)

//{cout<

}

voidBranchPQ()//计算支路功率子程序

{floatB0;

for(inti=0;i

{

for(intj=0;j

{

if(i!

=j&(G[i][j])!

=0&(B[i][j])!

=0)

{B0=Branch[i].B;

BranchP[i][j]=Ue[i]*(-Uf[i]*B0+Ue[i]*0+(Ue[i]-Ue[j])*G[i][j]-(Uf[i]-Uf[j])*B[i][j])+Uf[i]*(Ue[i]*B0+Uf[i]*0+(Ue[i]-Ue[j])*B[i][j]+(Uf[i]-Uf[j])*G[i][j]);

BranchQ[i][j]=Uf[i]*(-Uf[i]*B0+Ue[i]*0+(Ue[i]-Ue[j])*G[i][j]-(Uf[i]-Uf[j])*B[i][j])-Ue[i]*(Ue[i]*B0+Uf[i]*0+(Ue[i]-Ue[j])*B[i][j]+(Uf[i]-Uf[j])*G[i][j]);

BranchP[j][i]=Ue[j]*(-Uf[j]*B0+Ue[j]*0+(Ue[j]-Ue[i])*G[j][i]-(Uf[j]-Uf[i])*B[j][i])+Uf[j]*(Ue[j]*B0+Uf[j]*0+(Ue[j]-Ue[i])*B[j][i]+(Uf[j]-Uf[i])*G[j][i]);

BranchQ[j][i]=Uf[j]*(-Uf[j]*B0+Ue[j]*0+(Ue[j]-Ue[i])*G[j][i]-(Uf[j]-Uf[i])*B[j][i])-Ue[j]*(Ue[j]*B0+Uf[j]*0+(Ue[j]-Ue[i])*B[j][i]+(Uf[j]-Uf[i])*G[j][i]);

}

}

}

ofstreamoutfile8("BranchPQ2.txt");

for(inti=0;i

{for(intj=0;j

//if(i!

=j&(G[i][j])!

=0&(B[i][j])!

=0)

{outfile8<

}

outfile8<

}

outfile8.close();

}

voidBranceLoss()//计算线路上损耗子程序

{floatLossP[BusNum][BusNum],LossQ[BusNum][BusNum],LossPP,LossQQ;

LossPP=0;

LossQQ=0;

for(inti=0;i

{

for(intj=0;j

{

if(i!

=j&(G[i][j])!

=0&(B[i][j])!

=0)

{

LossP[i][j]=BranchP[i][j]+BranchP[j][i];

LossQ[i][j]=BranchQ[i][j]+BranchQ[j][i];

//cout<

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

当前位置:首页 > 经管营销 > 公共行政管理

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

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