1、潮流上机课程设计报告( 2011- 2012年度第1学期)名 称:电力系统潮流上机 院 系:电气与电子工程学院 班 级: 电网1101 学 号: 学生姓名: 指导教师: 王莉丽 设计周数: 两周 成 绩: 日期: 2014年1月电力系统综合仿真课程设计一、 目的与要求培养学生编程实现电力系统仿真计算的能力,掌握潮流计算、短路计算、暂态稳定计算的相关知识二、 主要内容1 编写潮流计算程序,要求如下:2.1据给定的潮流计算任务书整理潮流计算的基础数据:节点的分类,线路模型,等值变压器模型,电压等级的归算,标幺值的计算;2.2基础数据的计算机存储:节点数据,支路数据(包括变压器);2.3用牛顿-拉夫
2、逊法计算;2.4根据所选潮流计算方法画流程图,划分出功能模块,有数据输入模块,导纳阵形成模块,解线性方程组模块,计算不平衡功率模块,形成雅可比矩阵模块,解修正方程模块,计算线路潮流,网损,PV节点无功功率和平衡节点功率,数据输出模块;2.5据上述模块编制程序并上机调试程序,得出潮流计算结果;2.6源程序及其程序中的符号说明集、程序流图2 利用潮流计算结果编写故障计算程序,要求如下:2.1 发电机参数一律为PN=200MW,cos=0.85, ,2.2 变压器一律为Yd11接线,其中三角形侧接发电机,星形侧都直接接地2.3 线路零序参数一律为2.4 负荷都采用Y/Y型变压器接入,中性点与系统相连
3、侧部接地。负荷按照对称负荷考虑,纯阻抗形式。2.5 计算5节点发生三相对称短路、单相接地短路、两相短路和两相接地短路时的故障电流,以及各支路电流和节点电压。3思考题3.1潮流计算和短路电流计算的元件模型有哪些不同点?节点导纳矩阵有哪些不同?计算过程有哪些不同点?3.2 短路电流计算中进行了哪些假设?3.3如果交给你一个任务,请你用已有的潮流计算软件计算北京城市电网的潮流,你应该做哪些工作?(收集哪些数据,如何整理,计算结果如何分析)3.4比较过去的计算机语言上机学习和本课程上机有哪些不同?设计中遇到的问题和解决的办法。三、 进度计划序号设计内容完成时间备注1教师讲解本次设计的任务及相关知识课程
4、设计开始前2整理潮流计算的原始数据,完成数据的读入读出模块一天3编写及调试形成导纳矩阵模块一天4计算不平衡功率,形成雅可比矩阵一天5解修正方程一天6计算线路潮流,网损,PV节点无功功率和平衡节点功率一天7读入故障计算需要的数据,计算三相短路一天8计算不对称短路一天9写设计报告一天10验收一天四、 设计成果要求1 提交任务书2 计算机计算潮流程序流程图;3 计算机计算短路电流程序流程图;4 完整的仿真程序(包括变量的定义,子程序的调用等,计算结果),并有程序注释。5 回答思考题五、 考核方式 总成绩=考勤+设计报告+面试成绩 学生姓名: 指导教师: 2014年1月附录: 1.手算:2.计算机计算
5、潮流程序流程图3.程序#include stdafx.h#include fstream#include iostream#include DataForm.h#include NEquation.h#include math.husing namespace System;using namespace std;#define PI 3.1415926void DataRead();void FormY();void VoltageInitial();void SetUnbalance();void FormJacobi();void GetRevised();void GetNewVolt
6、ageValue();void BusBalance();void BranchPQ();void BranceLoss();int main(array args) DataRead(); FormY(); VoltageInitial(); for(int i=0;i=1e-5|(Nij)=1e-5|(Hij)=1e-5|(Jij)=1e-5|(Lij)=1e-5) BusBalance(); BranchPQ(); BranceLoss(); Console:WriteLine(LHello World); return 0;void DataRead() /节点、支路数据读入子程序 i
7、fstream infile1; infile1.open(BranchData2.txt); for(int i=0;iBranchi.NumBranchi.BusFirstBranchi.BusEndBranchi.RBranchi.XBranchi.BBranchi.K; infile1.close(); for(int i=0;iBranchNum;i+) coutBranchi.Num Branchi.BusFirst Branchi.BusEnd Branchi.R Branchi.X Branchi.B Branchi.Kendl; ifstream infile2; infil
8、e2.open(BusData2.txt); for(int i=0;iBusi.NumBusi.BusTypeBusi.VoltageBusi.PhaseBusi.PgBusi.QgBusi.PlBusi.Ql; infile2.close(); for(int i=0;iBusNum;i+) coutBusi.NumBusi.BusTypeBusi.VoltageBusi.PhaseBusi.PgBusi.QgBusi.PlBusi.Qlendl;void FormY() /形成节点导纳矩阵子程序 for(int i=0;iBusNum;i+) for(int j=0;jBusNum;j+
9、) Gij=0; Bij=0; int m,n;/设置两个变量分别存储之路手摸节点的编号 for(int i=0;iBranchNum;i+)/以支路循环 float GG,BB,B0,G1,G2,B1,B2; m=Branchi.BusFirst-1;/ n=Branchi.BusEnd-1; /以下为变压器变比不唯 Branchi.R=Branchi.K*Branchi.R; Branchi.X=Branchi.K*Branchi.X; /将变压器变比引起的对地之路转换成电哪里? G1=(1-Branchi.K)/(Branchi.K*Branchi.K)/(Branchi.R*Branc
10、hi.R+Branchi.X*Branchi.X)*Branchi.R; B1=-(1-Branchi.K)/(Branchi.K*Branchi.K)/(Branchi.R*Branchi.R+Branchi.X*Branchi.X)*Branchi.X; /将变压器变比引起的对地之路换成导纳 G2=(Branchi.K-1)/Branchi.K/(Branchi.R*Branchi.R+Branchi.X*Branchi.X)*Branchi.R; B2=-(Branchi.K-1)/Branchi.K/(Branchi.R*Branchi.R+Branchi.X*Branchi.X)*B
11、ranchi.X; /变压器非标准变比处理完毕 GG=Branchi.R/(Branchi.R*Branchi.R+Branchi.X*Branchi.X); BB=-Branchi.X/(Branchi.R*Branchi.R+Branchi.X*Branchi.X); B0=Branchi.B;/接地数据 Gmm+=GG+G1; Gmn-=GG; Gnm-=GG; Gnn+=GG+G2; Bmm+=BB+B0+B1; Bmn-=BB; Bnm-=BB; Bnn+=BB+B0+B2; /B+= ofstream outfile1(result.txt); for(int i=0;iBusNu
12、m;i+) for(int j=0;jBusNum;j+) outfile1GijtBijt; outfile1endl; outfile1.close();void VoltageInitial() /设置节点电压子程序 for(int i=0;iBusNum;i+) if(Busi.BusType=3) Uei=1.04; Ufi=0.0; else Uei=1.0; Ufi=0.0; coutUei Ufiendl; void SetUnbalance() /计算功率不平衡量子程序 for(int i=1;iBusNum;i+) Pi=0; Qi=0; for(int j=0;jBusN
13、um;j+) Pi=Pi+Uei*(Gij*Uej-Bij*Ufj)+Ufi*(Gij*Ufj+Bij*Uej); Qi=Qi+Ufi*(Gij*Uej-Bij*Ufj)-Uei*(Gij*Ufj+Bij*Uej); /coutPiendl; /coutQiendl; if(Busi.BusType=1) /PQ DeltaPi=Busi.Pg-Busi.Pl-Pi; DeltaQU2i=Busi.Qg-Busi.Ql-Qi; else if(Busi.BusType=2) /PV DeltaPi=Busi.Pg-Busi.Pl-Pi; DeltaQU2i=Busi.Voltage*Busi.
14、Voltage-(Uei*Uei+Ufi*Ufi); /coutDeltaPiendl; /coutDeltaQU2iendl; for(int i=0;iBusNum-1;i+) Delta2*i=DeltaPi+1; Delta2*i+1=DeltaQU2i+1; /形成delta值 ofstream outfile2(Delta2.txt); for(int j=0;j2*(BusNum-1);j+) outfile2Deltajendl; outfile2.close();void FormJacobi() /形成雅各比矩阵子程序float HBusNum-1BusNum-1,NBus
15、Num-1BusNum-1,JBusNum-1BusNum-1,LBusNum-1BusNum-1; float aBusNum,bBusNum; for(int i=1;iBusNum;i+) ai=Gii*Uei-Bii*Ufi; bi=Gii*Ufi+Bii*Uei; for(int j=0;jBusNum;j+) if(j!=i) ai=ai+(Gij*Uej-Bij*Ufj); bi=bi+(Gij*Ufj+Bij*Uej); for(int i=1;iBusNum;i+) for(int j=1;jBusNum;j+) if(i=j) Hii=-Bii*Uei+Gii*Ufi+bi
16、; Nii=Gii*Uei+Bii*Ufi+ai; if(Busi.BusType=1) Jii=-Gii*Uei-Bii*Ufi+ai; Lii=-Bii*Uei+Gii*Ufi-bi; else if(Busi.BusType=2) Jii=2*Ufi; Lii=2*Uei; else if(i!=j) Hij=-Bij*Uei+Gij*Ufi; Nij=Gij*Uei+Bij*Ufi; if(Busi.BusType=1) Jij=-Gij*Uei-Bij*Ufi; Lij=-Bij*Uei+Gij*Ufi; else if(Busi.BusType=2) Jij=0; Lij=0; f
17、or(int i=0;iBusNum-1;i+) for(int j=0;jBusNum-1;j+) Jacobi2*i2*j=Hi+1j+1; Jacobi2*i2*j+1=Ni+1j+1; Jacobi2*i+12*j=Ji+1j+1; Jacobi2*i+12*j+1=Li+1j+1; ofstream outfile4;outfile4.open(Jacobi2.txt);for(int i=0;i2*(BusNum-1);i+) for(int j=0;j2*(BusNum-1);j+) outfile4Jacobiijt ; outfile4endl;outfile4.close(
18、);void GetRevised() /求解修正方程得到电压增量子程序 NEquation Object;/建立一个对象 Object.SetSize(2*(BusNum-1);/设置矩阵的维数 ifstream infile1; infile1.open(Jacobi2.txt); for(int i=0;i2*(BusNum-1);i+) for(int j=0;jObject.Data(i,j); infile1.close(); ifstream infile2; infile2.open(Delta2.txt); for(int i=0;iObject.Value(i); infi
19、le2.close(); Object.Run(); for(int i=0;i2*(BusNum-1);i+) DeltaUi=Object.Value(i);/结果输出 ofstream outfile5(revised equation2.txt); for(int j=0;j2*(BusNum-1);j+) outfile5DeltaUjendl; outfile5.close();void GetNewVoltageValue() /得到新的电压子程序 for(int i=0;iBusNum;i+) if(Busi.BusType!=3) Uei+=DeltaU2*i-1; Ufi+
20、=DeltaU2*i-2; ofstream outfile6(new voltage value2.txt); for(int i=0;iBusNum;i+) /if(Busi.BusType=1|Busi.BusType=2) outfile6Uei Ufiendl; outfile6.close();void BusBalance() /计算平衡节点功率子程序 for(int i=0;iBusNum;i+) if(Busi.BusType=3) Pi=0.0; Qi=0.0; for(int j=0;jBusNum;j+) Pi+=Uei*(Gij*Uej-Bij*Ufj)+Ufi*(G
21、ij*Ufj+Bij*Uej);/有功 Qi+=Ufi*(Gij*Uej-Bij*Ufj)-Uei*(Gij*Ufj+Bij*Uej);/无功 ofstream outfile7(BusBalance2.txt); for(int i=0;iBusNum;i+) if(Busi.BusType=3) outfile7Pi tQiendl; outfile7.close(); /for(int i=0;iBusNum;i+) /if(Busi.BusType=3) / coutPi Qiendl;void BranchPQ() /计算支路功率子程序 float B0; for(int i=0;i
22、BusNum;i+) for(int j=0;jBusNum;j+) if(i!=j&(Gij)!=0&(Bij)!=0) B0=Branchi.B; BranchPij=Uei*(-Ufi*B0+Uei*0+(Uei-Uej)*Gij-(Ufi-Ufj)*Bij)+Ufi*(Uei*B0+Ufi*0+(Uei-Uej)*Bij+(Ufi-Ufj)*Gij); BranchQij=Ufi*(-Ufi*B0+Uei*0+(Uei-Uej)*Gij-(Ufi-Ufj)*Bij)-Uei*(Uei*B0+Ufi*0+(Uei-Uej)*Bij+(Ufi-Ufj)*Gij); BranchPji=Ue
23、j*(-Ufj*B0+Uej*0+(Uej-Uei)*Gji-(Ufj-Ufi)*Bji)+Ufj*(Uej*B0+Ufj*0+(Uej-Uei)*Bji+(Ufj-Ufi)*Gji); BranchQji=Ufj*(-Ufj*B0+Uej*0+(Uej-Uei)*Gji-(Ufj-Ufi)*Bji)-Uej*(Uej*B0+Ufj*0+(Uej-Uei)*Bji+(Ufj-Ufi)*Gji); ofstream outfile8(BranchPQ2.txt); for(int i=0;iBusNum;i+) for(int j=0;jBusNum;j+) /if(i!=j&(Gij)!=0&
24、(Bij)!=0) outfile8BranchPij tBranchQij t; outfile8endl; outfile8.close();void BranceLoss() /计算线路上损耗子程序 float LossPBusNumBusNum,LossQBusNumBusNum,LossPP,LossQQ; LossPP=0; LossQQ=0; for(int i=0;iBusNum;i+) for(int j=0;jBusNum;j+) if(i!=j&(Gij)!=0&(Bij)!=0) LossPij=BranchPij+BranchPji; LossQij=BranchQij+BranchQji; /coutLossPi LossQiendl
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1