ImageVerifierCode 换一换
格式:DOCX , 页数:28 ,大小:97.35KB ,
资源ID:5016401      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5016401.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(华电潮流上机课程设计报告+程序.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

华电潮流上机课程设计报告+程序.docx

1、华电潮流上机课程设计报告+程序 电力系统潮流上机课程设计报告 院 系:电气与电子工程学院 班 级: 学 号: 学生姓名: * * 设计周数: 成 绩: 日期:2012年1月5日一、课程设计的目的与要求培养学生的电力系统潮流计算机编程能力,掌握计算机潮流计算的相关知识二、设计正文(详细内容见附录)1手算2计算机计算3思考题3.1潮流计算的方法有哪些?各有何特点?答: 潮流计算的方法主要有高斯-赛德尔迭代法、牛顿-拉夫逊迭代法和P-Q分解法。它们各自的特点如下:(1)高斯-赛德尔迭代法分为以节点导纳矩阵为基础的高斯-赛德尔迭代法和以以节点阻抗矩阵为基础的高斯-赛德尔迭代法的原理比较简单,要求的数字

2、计算机的内存量也比较小,但收敛性差,当系统规模变大时,迭代次数急剧上升,往往出现迭代不收敛的情况;而阻抗法改善了电力系统潮流计算导纳法德收敛性问题,在当时获得了广泛的应用,但是,阻抗法的主要缺点是占用计算机的内存很大,每次迭代的计算量很大。当系统不断扩大时,这些缺点就更加突出。(2)牛顿-拉夫逊法是数学中求解非线性方程式的典型方法,有较好的收敛性。只要在迭代过程中尽可能保持方程式系数矩阵的稀疏性,就可以大大提高牛顿潮流计算程序的计算效率,牛顿法在收敛性、 内存要求、计算速度方面都超过了阻抗法,成为知道目前仍被广泛采用的方法。(3)P-Q分解法潮流计算派生于以极坐标表示时的牛顿-拉夫逊法,它根据

3、电力系统的特点,抓住主要矛盾,对纯数学的牛顿法进行了改造。与牛顿法相比,P-Q分解法的修正方程的系数矩阵B和B”分别是(n-1)和(m-1)的方阵,替代了原有的(n+m-2)阶系数矩阵J;B、B”在迭代过程中可以保持不变且为对称的系数矩阵,提高了计算速度,降低了对存储容量的要求。P-Q分解法在计算速度方面有显著地提高,迅速得到了推广。3.2如果交给你一个任务,请你用已有的潮流计算软件计算北京城市电网的潮流,你应该做哪些工作?(收集哪些数据,如何整理,计算结果如何分析)答:(1)在进行北京城市电网的潮流计算之前需要了解北京城市电网中所有的节点支路的相关数据,并对节点和支路分类。处理PQ节点时要了

4、解节点的注入有功和无功功率;PV节点要了解节点电压大小,注入有功功率及节点所能提供的最大和最小无功功率;对于平衡节点要了解节点的电压大小、相位及节点所能提供的最大和最小有功无功功率,此外还需的节点数据有:支路的电阻电抗电纳支路变压器的变比及线路所能传输的最大容量等。(3) 计算结果分析:应考虑PQ节点的电压是否过高或过低,分析PV节点的电压幅值是否正常及无功功率是否超出范围,分析平衡节点有功无功功率是否在节点所能提供的范围之内,分析各支路的功率,看是否超出线路传输的最大容量,分析整个系统的网损是否达到标准3.3设计中遇到的问题和解决的办法。开始时我们进行原始数据的读入和读出,这一部分的程序比较

5、简单,所以我们都很顺利都写出程序。接下来就是节点导纳矩阵的形成。编写这一部分程序时我刚开始没有考虑到变压器支路,所以当原始数据改为四节点四支路的数据时,节点导纳矩阵的结果就出错了。经过改正之后终于得出了正确的节点导纳矩阵。然后就是计算不平衡功率和雅可比矩阵。计算不平衡功率时候,为了方便计算,我将各节点的不平衡功率放到一个一维数组里面。雅可比矩阵的形成这一部分上我用了很长时间才将程序写出来。首先是对角线上的H,N,J,L的计算公式写的很复杂,与同学讨论之后我发现可以先将每个节点的注入电流放到一个数组里面,这样后面用来求H ,N ,J,L 时就比较方便。在这一模块的过程中,我没有注意到雅克比矩阵中

6、PQ节点和PV节点的对应关系,而且我没有将节点号取出来,以致出现了错误的编程思路和错误的结果,后来在同组同学的帮助下我又进行了第二次的编程,思路是正确的,但是运行出来的结果却是错误的,我想应该是我哪个公式出了错,最终经过反复检查后终于得到了正确结果,在编写雅克比矩阵还需要注意H、J、N、L四个矩阵的形成以及循环的顺序,然后就是如何将雅可比矩阵的各个元素放到一个二维数组里,这一部分看起来很简单,但是却很容易出错,经过和同组同学的认真思考和检查,终于得出来了正确的雅可比矩阵。 三、课程设计总结或结论两周的潮流上机计算已经结束了,虽然时间很短,可是我却学到了很多。潮流上机计算除了需要一定的电力系统稳

7、态知识以外,还要有良好的C语言基础。潮流上机的过程让我们巩固了潮流计算过程和方法, 以及稳态的基础知识。此外,从潮流数据的读入和写出,节点导纳矩阵的形成,功率不平衡量的计算,到形成雅克比矩阵和功率损耗的计算,我不断地进行编程和学习,在两周的潮流上机过程中,我完成了程序的编写,掌握了计算机潮流计算的基本方法与步骤,了解了计算机潮流计算的优点与重要性。潮流计算最关键的是进行C语言的编程,没有良好的C语言基础很难快速地编出潮流计算程序,编写时需要注意循环和嵌套的使用,我在编写的过程中由于循环没有用好以及粗心等原因,导致多次编出来的程序出现错误,这在潮流计算中都是不应该出现的。四、参考文献1.电力系统

8、稳态分析,陈珩,中国电力出版社,2007年,第三版;2.C语言程序设计,郑玲,中国电力出版社,2009年,第一版;附录(设计流程图、程序、表格、数据等)1、设计流程图 是 否2、程序数据输入模块struct 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.

9、h#includestdlib.h#define NBUS 4#define NLINE 4/* Global variables */int nL,nSH,nB,nVA;float XNBUS;int L;void main()FILE *fp;int i,j,k,l,h,c;int i1,i2,i3;float d1,d2,d3,d4,d5,d6,r,x,g,b,e;struct Line sLNLINE;struct Bus sBNBUS;struct Shunt sSHNBUS;float YGNBUSNBUS,YBNBUSNBUS;i1=i2=i3=0;d1=d2=d3=d4=d5=

10、d6=0.0;e=0.00001;for(i=0;iNBUS;i+)/*Read the input data*/if(fp=fopen(data.txt,r)=NULL) printf(Can not open the file named data.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

11、,%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;

12、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;

13、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) YGii=YGii+g/sLl.B/sLl.B; YGjj=YGjj+g; YBii=YBii+b/sLl.B/sLl.B; YBjj=YBjj+b; YGij=YGij-g/sLl.B; YGji=YGji-g/sLl.B; YBij=YBij-b/sLl.B; YBji=YBji-b/sLl.B; /* Check the Y matrix */if(fp=fopen(GGBB.txt,

14、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);/* 设定电压初值*/float VNBUSNBUS=0;for(i=1;iNBUS+1;i+) if(sBi-1.Type=0) Vi0=1.0; Vi1=0.0; for(i=1;iNBUS+

15、1;i+) if(sBi-1.Type=1) Vi0=sBi-1.Volt; Vi1=0.0; for(i=1;iNBUS+1;i+) if(sBi-1.Type=2) Vi0=(sBi-1.Volt)*cos(sBi-1.Phase);/es Vi1=(sBi-1.Volt)*sin(sBi-1.Phase);/fs /输出电压初值if(fp=fopen(电压初值.txt,w)=NULL) printf(Can not open the file named 电压初值.txt n); exit(0);fprintf(fp,-电压初值-n);for(i=1;iNBUS+1;i+) for(j=

16、1;j2;j+)fprintf(fp,Y(%2d )=(%10.5f,%10.5f)n,i,Vi0,Vi1);if(fp!=NULL) fclose(fp);for(c=1;c+)/* 计算偏移量*/float PQ1002=0,dV100=0,df100=0; for(i=1;iNBUS;i+) if(sBi-1.Type=0)/计算PQ节点 for(j=1;jNBUS+1;j+) PQi0-=Vi0*(YGij*Vj0-YBij*Vj1)+Vi1*(YGij*Vj1+YBij*Vj0); PQi1-=Vi1*(YGij*Vj0-YBij*Vj1)-Vi0*(YGij*Vj1+YBij*Vj

17、0); if(sBi-1.Type=1)/计算PV节点 for(j=1;jNBUS;j+) PQi0-=Vi0*(YGij*Vj0-YBij*Vj1)+Vi1*(YGij*Vj1+YBij*Vj0); dVi=Vi1*Vi1+Vi0*Vi0; h=1; for(i=1;iNBUS;i+) if(sBi-1.Type=0) dfh=PQi0+sBi-1.GenP-sBi-1.LoadP; h+; dfh=PQi1+sBi-1.GenQ-sBi-1.LoadQ; h+; if(sBi-1.Type=1) dfh=PQi0+sBi-1.GenP-sBi-1.LoadP; h+; dfh=sBi-1.

18、Volt*sBi-1.Volt-dVi; h+; /*输出偏移量*/ if(c=1) if(fp=fopen(第一次迭代偏移量.txt,w)=NULL) printf(Can not open the file named 第一次迭代偏移量.txt n); exit(0); fprintf(fp,- 第一次迭代偏移量-n); for(i=1;ih;i+) fprintf(fp,df(%2d )=(%10.5f)n,i,dfi); if(fp!=NULL) fclose(fp); /* 计算雅克比矩阵*/float ga2*(NBUS-1)=0,gb2*(NBUS-1)=0;float H2*(

19、NBUS-1)2*(NBUS-1)=0,J2*(NBUS-1)2*(NBUS-1)=0,L2*(NBUS-1)2*(NBUS-1)=0,N2*(NBUS-1)2*(NBUS-1)=0,JJ2*(NBUS-1)2*(NBUS-1)=0,R2*(NBUS-1)2*(NBUS-1)=0,S2*(NBUS-1)2*(NBUS-1)=0; for(i=1;iNBUS;i+) for(j=1;jNBUS;j+) if(i=j) gai=-(PQi0*Vi0+PQi1*Vi1)/(Vi0*Vi0+Vi1*Vi1); /计算a gbi=-(PQi0*Vi1-PQi1*Vi0)/(Vi0*Vi0+Vi1*Vi1

20、); /计算b Hii=-Vi0*YBii+YGii*Vi1+gbi; Nii=Vi0*YGii+YBii*Vi1+gai; Jii=-Vi0*YGii-YBii*Vi1+gai; Lii=Vi1*YGii-YBii*Vi0-gbi; Rii=2*Vi1; Sii=2*Vi0; else Hij=-Vi0*YBij+YGij*Vi1; /非对角线元素正确。 Nij=Vi0*YGij+YBij*Vi1; Jij=-Vi0*YGij-YBij*Vi1; Lij=-Vi0*YBij+YGij*Vi1; Rij=0.0; Sij=0.0; h=1; for(i=1;iNBUS;i+) l=1; if(

21、sBi-1.Type=0) for(j=1;jNBUS;j+) JJhl=Hij; l+; JJhl=Nij; l+; h+; l=1; for(j=1;jNBUS;j+) JJhl=Jij; l+; JJhl=Lij; l+; h+; l=1; if(sBi-1.Type=1) for(j=1;jNBUS;j+) JJhl=Hij; l+; JJhl=Nij; l+; h+; l=1; for(j=1;jNBUS;j+) JJhl=Rij; l+; JJhl=Sij; l+; h+; /* 输出雅克比矩阵*/if(c=1) if(fp=fopen(第一次迭代雅克比矩阵.txt,w)=NULL

22、) printf(Can not open the file named 雅克比矩阵.txt n); exit(0); fprintf(fp,- 第一次迭代雅克比矩阵-n,c); fprintf(fp, ); for(i=1;ih;i+) fprintf(fp, %dtt,i); fprintf(fp,n); for(i=1;ih;i+) fprintf(fp,%2d ,i); for(j=1;jh;j+) fprintf(fp,%10.5ft,JJij); fprintf(fp,n); if(fp!=NULL) fclose(fp); /*高斯法求解方程组*/ float U100=; in

23、t LH100=; float t,d; l=1; for(i=1;ih;i+) LHi=0; for(k=1;kh;k+) d=0.0; for(j=k;jd) d=fabs(JJkj); /在一行中找到一个最大值赋值d,并用JSK记住这个最大值所在的列号 LHk=j; if(fabs(d)0.000001) /如果d的数值太小,做为被除数将带来很大的误差 l=0; else if(LHk!=k) for(i=1;ih;i+) t=JJik; JJik=JJiLHk; /进行列交换,让最大值始终在对角元上 JJiLHk=t; if(l=0) break; for(j=k+1;jh;j+) JJkj=JJkj/JJkk; /对角元上的元素消为 dfk=dfk/JJkk; for(i=k+1;ih;i+) for(j=k+1;j0.00001) /用追赶法,解方程组,求未知数x

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

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