高压输电网潮流的计算机算法程序设计课程设计.doc
【精品文档】如有侵权,请联系网站删除,仅供学习与交流高压输电网潮流的计算机算法程序设计课程设计.精品文档.贵州大学电气工程学院电力系统分析课程设计报告书 题目: 高压输电网潮流的计算机算法程序设计 毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名: 日 期: 指导教师签名: 日期: 使用授权说明本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: 学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名: 日期: 年 月 日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名:日期: 年 月 日导师签名: 日期: 年 月 日指导教师评阅书指导教师评价:一、撰写(设计)过程1、学生在论文(设计)过程中的治学态度、工作精神 优 良 中 及格 不及格2、学生掌握专业知识、技能的扎实程度 优 良 中 及格 不及格3、学生综合运用所学知识和专业技能分析和解决问题的能力 优 良 中 及格 不及格4、研究方法的科学性;技术线路的可行性;设计方案的合理性 优 良 中 及格 不及格5、完成毕业论文(设计)期间的出勤情况 优 良 中 及格 不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格建议成绩: 优 良 中 及格 不及格(在所选等级前的内画“”)指导教师: (签名) 单位: (盖章)年 月 日评阅教师评阅书评阅教师评价:一、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格二、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格建议成绩: 优 良 中 及格 不及格(在所选等级前的内画“”)评阅教师: (签名) 单位: (盖章)年 月 日教研室(或答辩小组)及教学系意见教研室(或答辩小组)评价:一、答辩过程1、毕业论文(设计)的基本要点和见解的叙述情况 优 良 中 及格 不及格2、对答辩问题的反应、理解、表达情况 优 良 中 及格 不及格3、学生答辩过程中的精神状态 优 良 中 及格 不及格二、论文(设计)质量1、论文(设计)的整体结构是否符合撰写规范? 优 良 中 及格 不及格2、是否完成指定的论文(设计)任务(包括装订及附件)? 优 良 中 及格 不及格三、论文(设计)水平1、论文(设计)的理论意义或对解决实际问题的指导意义 优 良 中 及格 不及格2、论文的观念是否有新意?设计是否有创意? 优 良 中 及格 不及格3、论文(设计说明书)所体现的整体水平 优 良 中 及格 不及格评定成绩: 优 良 中 及格 不及格(在所选等级前的内画“”)教研室主任(或答辩小组组长): (签名)年 月 日教学系意见:系主任: (签名)年 月 日 目录第一章 课程设计概述3 1.1 设计目的3 1.3 设计题目4 1.4 设计内容4 1.5设计时间4第二章 潮流计算设计题目及思路5 2.1潮流计算题目52.2对题目的分析及设计思路5第三章 电力系统潮流计算概述63.1电力系统概述63.2潮流计算的意义63.3牛顿拉夫逊法潮流计算基本步骤7第四章程序流程图及程序代码74.1程序流程图74.2运用MATLAB编程程序代码84.3例题数据代码20第五章 运行结果分析215.1运用MATLAB运行结果215.2运用powerworld软件仿真305.2.1使用powerworld仿真潮流分布30第六章 总结31参考文献32第一章 课程设计概述1.1 设计目的1. 掌握电力系统潮流计算的基本原理和电力系统运行方式的变化;2. 掌握并能熟练运用一门计算机语言(MATLAB语言或C语言或C+语言);3. 采用计算机语言对潮流计算进行计算机编程计算。 1.2 设计要求1. 程序源代码; 2.选定算例的输入,输出文件; 3. 程序说明; 4. 选定算例的程序计算过程; 5. 选定算例的手算过程(至少迭代2次)(可选)。 1.3 设计题目高压输电网潮流的计算机算法程序设计(PQ分解法、牛顿-拉夫逊法)或中压配电网潮流的计算机算法程序设计(前推后代法、同伦延拓法等)或电力系统短路故障的计算机算法程序设计(要求不限)1.4 设计内容1.根据电力系统网络推导电力网络数学模型,写出节点导纳矩阵; 2.赋予各节点电压变量(直角坐标系形式)初值后,求解不平衡量;3.形成雅可比矩阵; 4.求解修正量后,重新修改初值,从2开始重新循环计算; 5.求解的电压变量达到所要求的精度时,再计算各支路功率分布、功率损耗和平衡节点功率; 6.上机编程调试;连调; 7.计算分析给定系统潮流分析并与手工计算结果作比较分析。 8.准备计算机演示答辩,书写该课程设计说明书(必须计算机打印)。1.5设计时间2012年春季第17周至第18周第二章 潮流计算设计题目及思路2.1潮流计算题目题目:设计原始资料网络接线如下图所示:其中已知:各支路阻抗表幺值参数分别为Z12=0.04+j00.25,Z13=0.10+j0.35,Z23=0.08+j0.30,ZT1=j0.015,ZT2=j0.03,K=1.05,L1、L2电纳为0.5。运用以极坐标表示的高斯塞德尔法、牛顿拉夫逊法、P-Q分解法计算该系统的潮流分布。计算精度要求各节点电压修正量不大于。2.2对题目的分析及设计思路此电力系统是一个5节点,3支路的电力网络。然后确定节点类型,由于一般无发电设备的变电所、功率固定的发电厂为PQ节点;有可调无功设备的变电所、有励磁储备的发电厂为PV节点;主调频电厂或出线多的发电厂为平衡节点。通过对此电力系统分析,我们很容易得以节点1、2、3为PQ节点,节点4为PV节点,节点5为平衡节点。综合比较牛顿拉夫逊法(直角坐标、极坐标)、PQ分解法等多种求解方法的特点,最后确定采用牛顿拉夫逊法(极坐标)。因为此方法所需解的方程组最少。第三章 电力系统潮流计算概述3.1电力系统概述电力工业发展初期,电能是直接在用户附近的发电站(或称发电厂)中生产的,各发电站孤立运行。随着工农业生产和城市的发展,电能的需要量迅速增加,而热能资源和水能资源丰富的地区又往往远离用电比较集中的城市和工矿区,为了解决这个矛盾,就需要在动力资源丰富的地区建立大型发电站,然后将电能远距离输送给电力用户。同时,为了提高供电的可靠性以及资源利用的综合经济性,又把许多分散的各种形式的发电站,通过送电线路和变电所联系起来。这种由发电机、升压和降压变电所,送电线路以及用电设备有机连接起来的整体,即称为电力系统。3.2潮流计算的意义 (1)在电网规划阶段,通过潮流计算,合理规划电源容量及接入点,合理规划网架,选择无功补偿方案,满足规划水平的大、小方式下潮流交换控制、调峰、调相、调压的要求。 (2)在编制年运行方式时,在预计负荷增长及新设备投运基础上,选择典型方式进行潮流计算,发现电网中薄弱环节,供调度员日常调度控制参考,并对规划、基建部门提出改进网架结构,加快基建进度的建议。 (3)正常检修及特殊运行方式下的潮流计算,用于日运行方式的编制,指导发电厂开机方式,有功、无功调整方案及负荷调整方案,满足线路、变压器热稳定要求及电压质量要求。 (4)预想事故、设备退出运行对静态安全的影响分析及作出预想的运行方式调整方案。 总结为在电力系统运行方式和规划方案的研究中,都需要进行潮流计算以比较运行方式或规划供电方案的可行性、可靠性和经济性。同时,为了实时监控电力系统的运行状态,也需要进行大量而快速的潮流计算。因此,潮流计算是电力系统中应用最广泛、最基本和最重要的一种电气运算。在系统规划设计和安排系统的运行方式时,采用离线潮流计算;在电力系统运行状态的实时监控中,则采用在线潮流计算。 3.3牛顿拉夫逊法潮流计算基本步骤牛顿拉夫逊法潮流计算的基本步骤不外乎有如下几步。1、 形成节点导纳矩阵。2、 设各节点电压的初始值 和 求出功率偏差3、根据公式算出雅可比矩阵。4、解如下线性方程组,得到依据如下公式计算修正量,并形成迭代公式:这样反复迭代计算,直至所有节点|U|<和|<为止。5、计算线路功率分布,PV节点无功功率和平衡节点注入功率。第四章程序流程图及程序代码4.1程序流程图根据牛顿拉夫逊法潮流计算的基本步骤可以得到如下程序流程图4.2运用MATLAB编程程序代码%*主程序开始*clc;clear allformat long;%*定义全局变量*global nSW nPQ nPV; %平衡节点,PQ节点,PV节点个数global nb; %节点个数global nl; %支路数 global bus; %bus:节点数据global line; %line:支路数据global Y; %Y:节点导纳矩阵global nodenum; %节点编号对应表global lPQ; %线路损耗矩阵global myf; %输出文件句柄%*子程序调用*openfile; %打开bus line数据文件 change; %节点重新编号 ybus; %建立节点导纳矩阵 NR; %牛顿拉夫逊法解非线性方程序组 PQ; %计算节点注入功率 flow; %计算线路功率及损耗 ret; %恢复原节点编号 output; %计算结果输出%*主程序结束*%*打开bus line的数据文件*function openfileglobal nb nl;global line;global bus;global myf; dfile,pathname=uigetfile('*.m','Select Data File'); %打开数据文件if pathname = 0 error(' you must select a valid data file')else lfile =length(dfile); % strip off .m eval(dfile(1:lfile-2); %执行数据文件中语句end nl,ml=size(line); %求线路数nlnb,mb=size(bus); %求节点数nb outfile=''for I=1:length(dfile) if dfile(I)='.' break; end outfile=strcat(outfile,dfile(I); endoutfile=strcat(outfile,'.txt'); %输出文件名形成myf=fopen(outfile,'w'); %打开输出文件%*给节点编号*function changeglobal nb;global nl;global nPQ;global bus;global line;global nodenum;nSW = 0; nPV = 0; nPQ = 0; for I = 1:nb, % nb为总节点数 type= bus(I,6); if type = 3, %求平衡节点数 nSW = nSW + 1; SW(nSW,:)=bus(I,:); elseif type = 2, %求PV节点数 nPV = nPV +1; PV(nPV,:)=bus(I,:);else %求PQ节点数 nPQ = nPQ + 1; PQ(nPQ,:)=bus(I,:); endendbus=PQ;PV;SW; %按PQ PV SW顺序排列的节点数据矩阵newbus=1:nb'nodenum=newbus bus(:,1); %形成节点号对应表bus(:,1)=newbus; for I=1:nl %根据节点号对应表重新排列线路矩阵节点编号 for J=1:2 for k=1:nb if line(I,J)=nodenum(k,2) line(I,J)=nodenum(k,1); break end end endend %*建立节点导纳矩阵*function Y = ybus(bus,line)global nl;global nb;global bus;global line;global Y;global myf;Y=zeros(nb,nb); %对导纳矩阵赋初值0 for k=1:nl I=line(k,1); %读入线路参数 J=line(k,2); Zt=line(k,3)+j*line(k,4); if J=0 %接地支路分母为零 Yt=1/Zt; %非接地支路为阻抗的倒数 end Ym=line(k,5)+j*line(k,6); %求Ym K=line(k,7); %求K if (K=0)&(J=0) % 普通线路: K=0; Y(I,I)=Y(I,I)+Yt+Ym; Y(J,J)=Y(J,J)+Yt+Ym; Y(I,J)=Y(I,J)-Yt; Y(J,I)=Y(I,J); end if (K=0)&(J=0) % 对地支路: K=0,J=0,R=X=0; Y(I,I)=Y(I,I)+Ym; end if K>0 % 变压器线路:Zt和Ym为折算到i侧的值,K在j侧 Y(I,I)=Y(I,I)+Yt+Ym; Y(J,J)=Y(J,J)+Yt/K/K; Y(I,J)=Y(I,J)-Yt/K; Y(J,I)=Y(I,J); end if K<0 % 变压器线路:Zt和Ym为折算到K所在侧的值,K在i侧 Y(I,I)=Y(I,I)+Yt+Ym; Y(J,J)=Y(J,J)+K*K*Yt; Y(I,J)=Y(I,J)+K*Yt; Y(J,I)=Y(I,J); endend %*牛顿拉夫逊法解非线性方程序组*function NRglobal nb;global nPQ;global bus;global line;global Y;global myf;max1=100; %最大迭代次数eps1=1.0e-10; %收敛精度eps2=1.0e-10;fprintf(myf, '-节点导纳矩阵Y-n'); %输出节点导纳矩阵for I=1:nb for J=1:nb fprintf(myf, '%10f+j*(%10f) ', real(Y(I,J),imag(Y(I,J); end fprintf(myf, 'n');endfor i=1:max1 angl(:,1)=bus(1:nb-1,3); u(:,1)=bus(1:nPQ,2); x=angl;u; %从bus矩阵中得到PQ PV节点的相角、PQ节点的电压形成的列向量作为x Jac=form_jac(bus,Y); %得到雅可比矩阵 del=dPQ(Y,bus); %得到功率偏差列向量 dx=Jacdel; %求得dx fprintf(myf,'-第%d次迭代结果-n',i); fprintf(myf,'-第%d次迭代的雅比矩阵J-n',i); for I=1:nb+nPQ-1 for J=1:nb+nPQ-1 fprintf(myf, '%10f ', Jac(I,J); %输出每次迭代的雅可比矩阵 end fprintf(myf, 'n'); end fprintf(myf,'-第%d次迭代的功率偏差dP和dQ-n',i); for I=1:nb+nPQ-1 fprintf(myf, '%10e ', del(I,1); %输出每次迭代的功率偏差 fprintf(myf, 'n'); end fprintf(myf,'-第%d次迭代的节点相角和电压的偏差dx-n',i); for I=1:nb+nPQ-1 fprintf(myf, '%10e ', dx(I,1); %输出每次迭代的节点相角和电压的偏差 fprintf(myf, 'n'); end for I=nb:nb+nPQ-1 dx(I,1)=dx(I,1)*x(I,1); %由于求得的是delU/U,故还需作相应处理 end x=x-dx; %修正 fprintf(myf,'-第%d次迭代的节点相角delta和电压U-n',i); angl=x(1:nb-1,1); %将合一起的x,拆成相角、电压两个列向量 u=x(nb:nb+nPQ-1,1); for I=1:nb-1 %输出修正的bus矩阵中PQ、PV结点的相角 bus(I,3)=angl(I,1); fprintf(myf, 'ang%d %10f n', I,angl(I,1); end for I=1:nPQ %输出修正的bus矩阵中PQ结点的电压 bus(I,2)=u(I,1); fprintf(myf, 'U%d %10f n', I,u(I,1); end if (max(abs(dx)<eps1)&(max(abs(dPQ(Y,bus)<eps2) %判断是否达到所指定的精度要求 break endendif i=max1 %超出最大迭代次数。出错指示 error('超过最大迭代次数,不收敛停机!');end%*计算节点注入功率*function PQglobal nb;global nPQ;global bus;global line;global Y;for I=nPQ+1:nb %求PV结点的Q,平衡节点的P,Q if bus(I,6)=3 %对于平衡节点,求其P sum=0; for J=1:nb ang=bus(I,3)-bus(J,3); A=real(Y(I,J)*cos(ang)+imag(Y(I,J)*sin(ang); sum=sum+bus(I,2)*bus(J,2)*(A); end bus(I,4)=sum; %求取的平衡节点的P存回bus矩阵 end sum=0; for J=1:nb ang=bus(I,3)-bus(J,3); B=real(Y(I,J)*sin(ang)-imag(Y(I,J)*cos(ang); sum=sum+bus(I,2)*bus(J,2)*B; end bus(I,5)=sum; %求取的PV、平衡节点的Q存回bus矩阵end%*计算线路功率及损耗*function flowglobal nl;global lPQ;global bus;global line;for k=1:nl I=line(k,1); %读入线路参数 J=line(k,2); lPQ(k,1)=I; %用lPQ矩阵第一、二列保存线路两端节点编号 lPQ(k,2)=J; if J=0 Zt=line(k,3)+j*line(k,4); Yt=1/Zt; end Ym=line(k,5)+j*line(k,6); K=line(k,7); Ui=bus(I,2)*(cos(bus(I,3)+j*sin(bus(I,3); %用复数表示Ui if J=0 Uj=bus(J,2)*(cos(bus(J,3)+j*sin(bus(J,3); %非接地节点,则表示Uj end if (K=0)&(J=0) %普通线路非接地支路; Iij=Ui*(Yt+Ym)-Uj*Yt; Iji=Uj*(Yt+Ym)-Ui*Yt; end if (K=0)&(J=0) %接地支路 Iij=Ui*Ym; Iji=0; end if K>0 %变压器线路: Zt和Ym为折算到i侧的值,K在j侧 Iij=(Ui-Uj)*Yt/K+Ui*(Ym+Yt*(K-1)/K); Iji=(Uj-Ui)*Yt/K+Uj*Yt*(1-K)/K2; end if K<0 %变压器线路: Zt和Ym为折算到K侧的值,K在i侧 K=-K; Iij=(Ui-Uj)*Yt*K+Ui*(Ym+Yt*(1-K); Iji=(Uj-Ui)*Yt*K+Uj*Yt*K*(K-1); end Sij=Ui*conj(Iij); %求取节点注入功率 Sji=Uj*conj(Iji);delS=Sij+Sji; %求线路损耗 lPQ(k,3:5)=Sij Sji delS; %保存到lPQ矩阵end%*恢复节点原编号*function retglobal nl;global nb;global bus;global line;global Y;global nodenum;global lPQ;for I=1:nb %bus矩阵中的节点号恢复原来的编号 for J=1:nb %查找其原编号 if nodenum(J,2)=I break; end end tem(I,:)=bus(nodenum(J,1),:);%bus矩阵中的节点号恢复原来的编号 tem(I,1)=I;endbus=tem;for I=1:nl %line矩阵中的节点号恢复原来的编号 for J=1:2 for k=1:nb if lPQ(I,J)=nodenum(k,1) lPQ(I,J)=nodenum(k,2); break end end endend *将计算结果输出*function output global nb;global nl;global bus;global lPQ;global myf; fprintf(myf, 'n-牛顿拉夫逊法潮流计算结果-n');fprintf(myf, ' 节点计算结果:n'); %输出节点计算结果到文件fprintf(myf, '节点 节点电压 节点相角(角度) 节点注入功率n');for I=1:nb, fprintf(myf, ' %2d %10f %10f %10f+j%10f n', bus(I,1),bus(I,2),bus(I,3)*180/pi,bus(I,4),bus(I,5);endfprintf(myf, 'n 线路计算结果:n'); %输出线路计算结果到文件fprintf(myf, '节点I 节点J 线路功率S(I,J) 线路功率S(J,I) 线路损耗dS(I,J)n');for I=1:nl, fprintf(myf, ' %2d %2d %10f+j%10f %10f+j%10f %10f+j%10fn', lPQ(I,1),lPQ(I,2),real(lPQ(I,3),imag(lPQ(I,3),real(lPQ(I,4),imag(lPQ(I,4),real(lPQ(I,5),imag(lPQ(I,5);endfclose(myf