电力系统潮流上机设计教学指导书.doc_第1页
电力系统潮流上机设计教学指导书.doc_第2页
电力系统潮流上机设计教学指导书.doc_第3页
电力系统潮流上机设计教学指导书.doc_第4页
电力系统潮流上机设计教学指导书.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

电力系统潮流上机课程设计教学指导书电力系统潮流上机课程设计教学指导书1 .c和.h程序可以用记事本编辑。2 将我提供的程序拷贝到d:lx目录下,并将OptionsDirectories中的输出目录改为d:lx,就可以运行。(我提供的四个文件,lx0.c导纳阵形成文件;导纳阵形成文件需要的头文件,in.txt,潮流计算的原始数据;G0607.C,用高斯消去法解线方程组。GGBB.txt是lx0.c文件运行后生成的)3 数据的读入和读出:潮流计算的原始数据存放在in.txt,计算的最终结果存放在out.txt文件中。下面以形成导纳矩阵为例,说明数据的读写,导纳导纳矩阵存储在GGBB.txt中。以电力系统稳态分析教材124页例36题的数据存储格式,可以直接拷贝建立in.txt。示例系统数据:节点1为平衡节点,保持U1=1.06,其他4个节点为PQ节点,给定的注入功率分别为:,。G430.01+j0.030.08+j0.2410.02+j0.060.06+j0.180.08+j0.240.06+j0.18520.04+j0.12G数据文件:5,7,01,1.06000,0.00000,0.00000,0.00000,0.00000,0.00000,22,1.00000,0.00000,0.20000,0.20000,0.00000,0.00000,03,1.00000,0.00000,0.00000,0.00000,0.45000,0.15000,04,1.00000,0.00000,0.00000,0.00000,0.40000,0.05000,05,1.00000,0.00000,0.00000,0.00000,0.60000,0.10000,01 1 3 0.08000 0.24000 0.00000 1.000002 3 4 0.01000 0.03000 0.00000 1.000003 4 5 0.08000 0.24000 0.00000 1.000004 2 5 0.04000 0.12000 0.00000 1.000005 1 2 0.02000 0.06000 0.00000 1.000006 2 3 0.06000 0.18000 0.00000 1.000007 2 4 0.06000 0.18000 0.00000 1.000004 节点导纳矩阵的形成 程序名称lx0.cstruct Line int Num; /支路序号int NumI; /支路左节点名称int NumJ; /支路左节点名称 float R,X,B,K; /电阻,电抗,电导(B/2),变比(为1表示普通支路,不/为1为变压器支路 ;struct Bus int Num ; float Volt,Phase,GenP,GenQ,LoadP,LoadQ; int Type; ;struct Shunt int Num,NumI; float G,B; ; #includestdio.h#includestring.h#includemath.h#includestdlib.h#define NBUS 5#define NLINE 7/* Global variables */int nL,nSH,nBus,nVA;float XNBUS;int L;main() /主函数FILE *fp;FILE *fpout;int i,j,k,l,h;int i1,i2,i3,kp,kq;float d1,d2,d3,d4,d5,d6,r,x,g,b,tt,LL,e,ps,qs,shsh;struct Line sLNLINE+1;struct Bus sBusNBUS+1;struct Shunt sSHNBUS+1;float YGNBUS+1NBUS+1,YBNBUS+1NBUS+1;i1=i2=i3=0;d1=d2=d3=d4=d5=d6=ps=qs=0.0;e=0.000001; /潮流收敛精度if(fp=fopen(in.txt,r)=NULL) printf(Can not open the file named in.txt n);exit(0); fscanf(fp,%d,%d,%d,&nBus,&nL,&nSH);for(i=0;inBus;i+) /读入节点数据 sBusi.Num=sBusi.Type=0;sBusi.Volt=1.0; sBusi.Phase=sBusi.GenP=sBusi.GenQ=sBusi.LoadP=sBusi.LoadQ=0.0;fscanf(fp,%d,%f,%f,%f,%f,%f,%f,%d,&i1,&d1,&d2,&d3,&d4,&d5,&d6,&i2); sBusi.Num=i1;sBusi.Volt=d1;sBusi.Phase=d2;sBusi.GenP=d3;sBusi.GenQ=d4;sBusi.LoadP=d5,sBusi.LoadQ=d6;sBusi.Type=i2; ;for(i=0;inL;i+) /读入支路数据 sLi.Num=sLi.NumI=sLi.NumJ=0; sLi.R=sLi.X=sLi.B=0.0;sLi.K=1.0; fscanf(fp,%2d %3d %3d %f %f %f %f,&i1,&i2,&i3,&d1,&d2,&d3,&d4); sLi.Num=i1;sLi.NumI=i2;sLi.NumJ=i3;sLi.R=d1;sLi.X=d2;sLi.B=d3;sLi.K=d4; for(i=0;inSH;i+) /读入并联设备数据 sSHi.Num=sSHi.NumI=0;sSHi.G=sSHi.B=0.0; fscanf(fp,%2d %3d %f,&i1,&i2,&d1); sSHi.Num=i1;sSHi.NumI=i2;sSHi.B=d1; if(fp!=NULL) fclose(fp);/*Make Y Matrix*/for(i=1;inBus+1;i+)for(j=1;jnBus+1;j+) YGij=0.0; YBij=0.0;for(l=0; lnL; l+)i=sLl.NumI;j=sLl.NumJ;r=sLl.R;x=sLl.X;d1=r*r+x*x;g=r/d1;b=-x/d1;if(fabs(sLl.K-1.0)0.000001)/*Normal lines or transformers*/YGii=YGii+g;YGjj=YGjj+g;YBii=YBii+b+sLl.B;YBjj=YBjj+b+sLl.B;YGij=YGij-g;YGji=YGji-g;YBij=YBij-b;YBji=YBji-b;else/*abnormal transformer ratio*/ k= sLl.K; YGii= YGii+g/k+(k-1)/k*g; YBii= YBii+b/k+(k-1)/k*b; YGjj= YGjj+g/k+(1-k)/k/k*g; YBjj= YBjj+b/k+(1-k)/k/k*b; YGij= YGij-g/k; YGji= YGji-g/k; YBij= YBij-b/k; YBji= YBji-b/k; /* Check the Y matrix */if(fp=fopen(GGBB.txt,w)=NULL) printf(Can not open the file named GGBB.txt n);exit(0);fprintf(fp,-Y Matrix-n);for(i=1;inBus+1;i+)for(j=1;jnBus+1;j+)fprintf(fp,Y(%3d,%-3d)=(%10.5f,%10.5f)n,i,j,YGij,YBij);if(fp!=NULL) fclose(fp);3解修正方程组:这是用高斯主元素消去法解方程组。重点学习如何声明和调用子程序。在潮流计算中要把高斯消去法子程序放到潮流计算主程序后面。程序如下(可以直接拷贝到*.c文件中运行):#includestdio.h#includestring.h#includemath.h#define NBUS 3 /*节点数*/void Gauss(); /*高斯消去法是解线性方程组的一个方法,这里用列主元消去法*/main() float AA33=2,1,1,1,3,2,1,2,2; float BB3=4,6,5; int NN=3; Gauss(AA,BB,NN);void Gauss(float aNBUSNBUS, float bNBUS, int n) /*定义高斯法 */ int JSNBUS; int i,j,k; float d,t,xNBUS; FILE *fp; int L=1; for(i=0;iNBUS;i+) JSi=0; for(k=0;kn;k+) d=0.0; for(j=k;jd) /*在一行中找到一个最大值赋值d,并用JSK记住这个最大值所在的列号*/ d=fabs(akj); JSk=j; if(fabs(d)0.000001) /*如果d的数值太小,做为被除数将带来很大的误差 */ L=0; else if(JSk!=k)for(i=0;in;i+) t=aik; aik=aiJSk; /*进行列交换,让最大值始终在对角元上*/ aiJSk=t; if(L=0)break; for(j=k+1;jn;j+)akj=akj/akk; /*对角元上的元素消为1*/ bk=bk/akk; for(i=k+1;in;i+) for(j=k+1;j0.00001) /*用追赶法,解方程组,求未知数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论