电力系统潮流上机设计教学指导书061210.doc_第1页
电力系统潮流上机设计教学指导书061210.doc_第2页
电力系统潮流上机设计教学指导书061210.doc_第3页
电力系统潮流上机设计教学指导书061210.doc_第4页
电力系统潮流上机设计教学指导书061210.doc_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

电力系统潮流上机课程设计教学指导书电力系统潮流上机课程设计教学指导书(适用于Tc)一、基础知识的要求1 掌握一种解线性方程组的方法,如三角分解法,高斯消去法2 Tc的要求:变量的类型,变量的定义,数组或结构体的定义和赋值。各种条件判断语句,循环语句的使用。掌握“*.txt”文件的打开,读写,关闭的函数。掌握文件读写的格式。3 掌握子函数的声明,定义,调用的方法。4 对Tc环境的掌握:打开文件,保存文件(F2),另存文件,断点的设置(Ctrl+F8),调试变量的设置(Ctrl+F7),单步调试(F7),路径的设置。学会看帮助(F1),在调试过程中结束程序运行(Ctrl+F2)5 电力系统稳态分析教材中第四章涉及到的基本知识。二、设计注意事项1 变量和数组的定义要写在函数的开头。2 Tc是区分大小写的。3 Tc数组或结构体从0开始计数。4 循环语句只对它后面的第一语句起作用,如果想对多个语句起作用,则用括起来。5 同样的符号不能既定义成单独变量,又定义成数组,这样程序会出错。6 “Break”语句必须在一个循环体里。7 文件的读写目录用“”表示。8 建议用电力系统稳态分析书中的例4-3 来校验结果是否正确。9 不要在实验室吃东西三、程序设计指导1 .c和.h程序可以用记事本编辑。在C环境下也可以编辑查看*.txt文件。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。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,NumI,NumJ; float R,X,B,K; ;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,nB,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;struct Bus sBNBUS;struct Shunt sSHNBUS;float YGNBUSNBUS,YBNBUSNBUS;i1=i2=i3=0;d1=d2=d3=d4=d5=d6=ps=qs=0.0;e=0.00001;for(i=0;iNBUS;i+)/*Read the input data*/if(fp=fopen(in.txt,r)=NULL) printf(Can not open the file named in.txt n); exit(0); fscanf(fp,%d,%d,%d,&nB,&nL,&nSH);for(i=0;inB;i+) sBi.Num=sBi.Type=0;sBi.Volt=1.0; sBi.Phase=sBi.GenP=sBi.GenQ=sBi.LoadP=sBi.LoadQ=0.0; fscanf(fp,%d,%f,%f,%f,%f,%f,%f,%d,&i1,&d1,&d2,&d3,&d4,&d5,&d6,&i2); sBi.Num=i1;sBi.Volt=d1;sBi.Phase=d2;sBi.GenP=d3;sBi.GenQ=d4;sBi.LoadP=d5,sBi.LoadQ=d6;sBi.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;inB+1;i+)for(j=1;jnB+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*/ /* 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;inB+1;i+)for(j=1;j0.000001)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

提交评论