潮流上机课程设计报告华电
电网潮流课程设计
电网潮流课程设计一、课程目标知识目标:1. 学生能理解电网潮流的基本概念,掌握电网潮流的计算方法和应用场景。
2. 学生能够运用电网潮流知识分析简单电网的运行状态,判断电网的稳定性。
3. 学生了解电网潮流与电力系统安全、经济运行的关系,认识到电网潮流分析的重要性。
技能目标:1. 学生能够运用所学知识,使用专业软件进行电网潮流计算,并分析计算结果。
2. 学生能够通过实际案例分析,提出改进电网运行的合理建议,提高电网运行效率。
3. 学生能够独立完成电网潮流相关实验,提高实际操作能力。
情感态度价值观目标:1. 学生通过学习电网潮流知识,增强对电力行业的认同感,激发学习兴趣。
2. 学生能够关注电网潮流在节能减排、环境保护等方面的意义,培养社会责任感和节能意识。
3. 学生在小组合作学习过程中,培养团队协作精神和沟通能力,提高自身综合素质。
本课程针对高中年级学生,结合电网潮流的学科特点,注重理论与实践相结合,培养学生的实际操作能力和解决问题的能力。
课程目标既关注学生对电网潮流知识的掌握,又注重提高学生的技能和情感态度价值观,为学生的全面发展奠定基础。
在教学过程中,教师需关注学生的个体差异,有针对性地进行教学设计和指导,确保课程目标的实现。
二、教学内容本章节教学内容主要包括以下三个方面:1. 电网潮流基本概念- 介绍电网潮流的定义、组成及作用。
- 分析电网潮流的计算方法,如牛顿-拉夫逊法、高斯-赛德尔法等。
2. 电网潮流计算与应用- 结合教材相关章节,讲解电网潮流计算的具体步骤和操作方法。
- 通过实例分析,使学生掌握电网潮流计算在实际工程中的应用。
3. 电网潮流与电力系统运行分析- 讲解电网潮流与电力系统安全、经济运行的关系。
- 分析电网潮流异常现象,如过负荷、电压越限等,并提出相应的改进措施。
教学安排与进度:1. 课时分配:共6课时,其中基本概念2课时,计算与应用2课时,运行分析2课时。
2. 教学内容与教材章节对应:- 基本概念:教材第3章第1节。
电力系统潮流上机课程设计教学指导书(适用于Vc
电力系统潮流上机课程设计教学指导书(适用于Vc)一、基础知识的要求1.掌握VC环境的建立,建立一个空的或者“hello world”的DOS工作平台。
2.掌握函数的定义,头文件的使用,函数调用方法。
了解类的概念,建立类对象,学会调用类成员函数。
3.掌握数据文件的打开和关闭,学会自己根据系统数据建立数据文件,并读取数据。
学会将计算结果写到文件中。
4.对VC环境的掌握:i.打开工作平台:file->open workspace(file->recent workspace)ii.打开工作平台中的文件:选择fileview页,在source file中双击想打开的.cpp文件,或者在header file中双击想打开的.h文件。
iii.保存文件:ctrl+siv.将已有文件加入当前工作平台中:如果是cpp文件,则选中source file,单击右键,选择add file to folder,加入希望加入的cpp文件。
如果是.h文件,则选中header file,单击右键,选择add file to folder,加入希望加入的头文件。
v.编译:所有的程序写完之后需要进行编译。
编译可以选择Build按钮,也可以用快捷键F7进行编译。
如果有语法错误,则会在output的build页显示出来,逐个双击定位,处理错误,解决问题。
vi.调试:设置断点(F9),进入调试状态或者执行至下一个断点(F5,或者点击界面上的“Go”按钮),单步执行(F10),进入子函数(F11),执行到鼠标所在位置(ctrl+F10),结束调试(shift+F5)。
vii.运行:运行可以点击界面上的“叹号”按钮,也可以使用快捷键ctrl+F5,使用这个命令时,所设置的断点是不起作用的。
5.《电力系统稳态分析》教材中第四章涉及到的基本知识。
二、设计注意事项1.变量和数组的定义要写在函数的开头。
2.语句的结尾需要用分号(;)3.注意英文字符和中文字符4.C++中大小写敏感。
电力系统潮流上机计算报告
电力系统潮流上机计算报告
系别:电力工程系
班级:
姓名:
学号:
课号课序号:0110361-2
选课顺序号:22
程序说明
包括:程序设计思想、程序流程图、程序使用说明。
给定题目的手算过程(迭代两次)
包括:原题目、节点导纳矩阵、雅克比矩阵、第一次和第二次迭代结果。
给定题目的程序计算结果
包括:原题目、节点导纳矩阵、雅克比矩阵、程序输入和输出文件(误差0.0001)。
编程特色与创新
包括:程序能够完成的基本功能;程序能够完成的高级功能(如:是否包括平行支路、接地支路、非标准变比变压器支路,是否采用了稀疏矩阵技术,是否增加了人机对话界面,程序的通用性和实用性如何)。
五、总结
包括:手算结果与程序计算结果的分析比较;本次上机体会,如:独立编程体会、跟踪调试技能的掌握情况,C语言中结构体、指针、文件输入输出的掌握情况等。
报告要求:
报告必须手写(最好使用黑色水笔)。
报告统一采用A4打印纸书写(留出页边距: 1.5~2厘米)。
不使用实验报告纸。
封面按上述格式书写。
装订统一在左侧1厘米,三个钉。
上述五部分内容必须齐全,各部分内容可以扩充。
报告书写要求字迹清楚,不得潦草。
报告必须与本人提交程序吻合,否则取消成绩。
报告不得有雷同,否则全部取消成绩。
电力系统潮流计算实验报告
电力系统潮流上机计算实验报告11.手算过程已知:节点1:PQ 节点,节点, s(1)= s(1)= -0.5000-j0.3500 节点2:PV 节点,节点, p(2)=0.4000 v(2)=1.0500 p(2)=0.4000 v(2)=1.0500 节点3:平衡节点,:平衡节点,U(3)=1.0000U(3)=1.0000U(3)=1.0000∠∠0.0000 网络的连接图:0.0500+j0.2000 1 0.0500+j0.2000231)计算节点导纳矩阵由2000.00500.012j Z +=Þ71.418.112j y -=; 2000.00500.013j Z +=Þ71.418.113j y -=;\导纳矩阵中的各元素:42.936.271.418.171.418.1131211j j j y y Y -=-+-=+=;71.418.11212jy Y +-=-=; 71.418.11313j y Y +-=-=; =21Y71.418.11212j y Y +-=-=; 71.418.12122j y Y -==; 002323j y Y +=-=;=31Y 71.418.11313j y Y +-=-=; =32Y 002323j y Y +=-=; 71.418.13133j y Y -==;\形成导纳矩阵B Y :úúúûùêêêëé-++-+-+-+-+--=71.418.10071.418.10071.418.171.418.171.418.171.418.142.936.2j j j j j j j j j Y B 2)计算各PQ PQ、、PV 节点功率的不平衡量,及PV 节点电压的不平衡量:取:000.0000.1)0(1)0(1)0(1j jf e U +=+=000.0000.1)0(2)0(2)0(2j jf e U +=+=节点3是平衡节点,保持000.0000.1333j jf e U +=+=为定值。
华北电力大学潮流上机课程设计报告
课程设计报告( 2014—2015年度第一学期) 名称:电力系统潮流上机院系:电气与电子工程学院班级:电气1215 学号:学生姓名:指导教师:王莉丽设计周数:两周成绩:日期: 2015年1月4日一、课程设计的目的与要求培养学生的电力系统潮流计算机编程能力,掌握计算机潮流计算的相关知识二、设计正文(详细内容见附录)1.手算2.计算机计算3.思考题三、课程设计总结或结论四、参考文献1.《电力系统分析基础》,李庚银,机械工业出版社,2011年,第一版;2.《电力系统稳态分析》,陈珩,中国电力出版社,2007年,第三版;附录(包括:1.手算过程及结果;2.计算机计算流程图、表格、数据;3.思考题答案)附录1.手算过程及结果2.计算机计算流程图3.完整的潮流程序头文件(定义变量):#define Bus_Num 9#define Line_Num 9#define Precision 1e-5struct Bus{int No ;float Voltage,Phase,GenP,GenQ,LoadP,LoadQ;int Type;}gBus[Bus_Num];struct Line{int No,No_I,No_J;float R,X,B,k;}gLine[Line_Num];float gY_G[Bus_Num][Bus_Num],gY_B[Bus_Num][Bus_Num];float gDelta_P[Bus_Num-1],gDelta_Q[Bus_Num-1],gDelta_PQ[2*(Bus_Num-1)]; float gJaccobi[2*(Bus_Num-1)][2*(Bus_Num-1)];float gDelta_f[Bus_Num-1],gDelta_e[Bus_Num-1],gDelta_fe[2*(Bus_Num-1)]; float gf[Bus_Num],ge[Bus_Num];主程序:// flow.cpp: 主项目文件#include"stdafx.h"#include"NEquation.h"#include"math.h"#include"stdio.h"#include"config.h"using namespace System;void test(){NEquation ob1;ob1.SetSize(2);ob1.Data(0,0)=1;ob1.Data(0,1)=2;ob1.Data(1,0)=2;ob1.Data(1,1)=1;ob1.Value(0)=4;ob1.Value(1)=6;ob1.Run();printf("x1=%f\n",ob1.Value(0));printf("x2=%f\n",ob1.Value(1));}void GetData()//Read the data{FILE *fp;int i;fp=fopen("E:\\1121960726\\flow\\data\\data.txt","r");if(fp==NULL){printf("Can not open the file named 'data.txt' \n");return;}for(i=0;i<=Bus_Num-1;i++){fscanf(fp,"%d,%f,%f,%f,%f,%f,%f,%d",&gBus[i].No,&gBus[i].Voltage,&gBus[i].Phase, &gBus[i].GenP,&gBus[i].GenQ,&gBus[i].LoadP,&gBus[i].LoadQ,&gBus[i].Type);}for(i=0;i<=Line_Num-1;i++){fscanf(fp,"%d,%d,%d,%f,%f,%f,%f",&gLine[i].No,&gLine[i].No_I,&gLine[i].No_J, &gLine[i].R,&gLine[i].X,&gLine[i].B,&gLine[i].k);}fclose(fp);}void GetYMatrix(){int i,j,bus1,bus2;float r,x,d,g,b,g1,b1,g2,b2,g3,b3;FILE *fp;for(i=0;i<=Bus_Num-1;i++){for(j=0;j<=Bus_Num-1;j++){gY_G[i][j]=0;gY_B[i][j]=0;}}for(i=0; i<=Line_Num-1; i++){if(gLine[i].k==0){bus1=gLine[i].No_I-1;bus2=gLine[i].No_J-1;r=gLine[i].R;x=gLine[i].X;d=r*r+x*x;g=r/d;b=-x/d;gY_G[bus1][bus1]=gY_G[bus1][bus1]+g;gY_G[bus2][bus2]=gY_G[bus2][bus2]+g;gY_G[bus1][bus2]=gY_G[bus1][bus2]-g;gY_G[bus2][bus1]=gY_G[bus2][bus1]-g;gY_B[bus1][bus1]=gY_B[bus1][bus1]+b+gLine[i].B;gY_B[bus2][bus2]=gY_B[bus2][bus2]+b+gLine[i].B;gY_B[bus1][bus2]=gY_B[bus1][bus2]-b;gY_B[bus2][bus1]=gY_B[bus2][bus1]-b; }else{bus1=gLine[i].No_I-1;bus2=gLine[i].No_J-1;x=gLine[i].X;d=r*r+x*x;g=r/d;b=-x/d;g1=g/gLine[i].k;b1=b/gLine[i].k;g2=g*(1-gLine[i].k)/(gLine[i].k*gLine[i].k);b2=b*(1-gLine[i].k)/(gLine[i].k*gLine[i].k);g3=g*(gLine[i].k-1)/gLine[i].k;b3=b*(gLine[i].k-1)/gLine[i].k;gY_G[bus1][bus1]=gY_G[bus1][bus1]+g1+g2;gY_G[bus2][bus2]=gY_G[bus2][bus2]+g1+g3;gY_G[bus1][bus2]=gY_G[bus1][bus2]-g1;gY_G[bus2][bus1]=gY_G[bus2][bus1]-g1;gY_B[bus1][bus1]=gY_B[bus1][bus1]+b1+b2;gY_B[bus2][bus2]=gY_B[bus2][bus2]+b1+b3;gY_B[bus1][bus2]=gY_B[bus1][bus2]-b1;gY_B[bus2][bus1]=gY_B[bus2][bus1]-b1;}}// output the Y matrixfp=fopen("E:\\1121960726\\flow\\data\\ymatrix.txt","w");if(fp==NULL){printf("Can not open the file named 'ymatrix.txt' \n");return ;}fprintf(fp,"---Y Matrix---\n");for(i=0;i<=Bus_Num-1;i++){for(j=0;j<=Bus_Num-1;j++){fprintf(fp,"Y(%d,%d)=(%10.5f,%10.5f)\n",i+1,j+1,gY_G[i][j],gY_B[i][j]);}}fclose(fp);}void SetInitial(){int i;for(i=0;i<=Bus_Num-1;i++){if(gBus[i].Type==3){gf[i]=gBus[i].Voltage*sin(gBus[i].Phase);ge[i]=gBus[i].Voltage*cos(gBus[i].Phase);}else{gf[i]=0;ge[i]=1;}}}void GetUnbalance(){int i,j;FILE *fp;for(i=0;i<=Bus_Num-2;i++){gDelta_P[i]=gBus[i+1].GenP-gBus[i+1].LoadP;if(gBus[i+1].Type==2) //PV节¨2点ì?gDelta_Q[i]=gBus[i+1].Voltage*gBus[i+1].Voltage-(ge[i+1]*ge[i+1]+gf[i+1]*gf[i+1]);elsegDelta_Q[i]=gBus[i+1].GenQ-gBus[i+1].LoadQ;for(j=0;j<=Bus_Num-1;j++){gDelta_P[i]=gDelta_P[i]-ge[i+1]*(gY_G[i+1][j]*ge[j]-gY_B[i+1][j]*gf[j])-gf[i+1]*(gY_G[i+1][j]*gf[j]+gY_B[i+1][j]*ge[j]);if(gBus[i+1].Type==1) //PQ节¨2点ì?gDelta_Q[i]=gDelta_Q[i]-gf[i+1]*(gY_G[i+1][j]*ge[j]-gY_B[i+1][j]*gf[j])+ge[i+1]*(gY_G[i+1][j]*gf[j]+gY_B[i+1][j]*ge[j]);}}for(i=0;i<=Bus_Num-2;i++) //合?并?é{gDelta_PQ[2*i]=gDelta_P[i];gDelta_PQ[2*i+1]=gDelta_Q[i];}fp=fopen("E:\\1121960726\\flow\\data\\unbalance.txt","w");if(fp==NULL){printf("无法打开文件:”'unbalance.txt' \n");return ;}fprintf(fp,"---Unbalance---\n");for(i=0;i<=2*Bus_Num-3;i++){fprintf(fp,"Unbalance[%d]=%10.5f\n",i+1,gDelta_PQ[i]);}fclose(fp);}void GetJaccobi(){int i,j;float ga[Bus_Num-1],gb[Bus_Num-1];FILE *fp;for(i=0;i<=Bus_Num-2;i++) //计算注入电流{ga[i]=0;gb[i]=0;for(j=0;j<=Bus_Num-1;j++){ga[i]=ga[i]+gY_G[i+1][j]*ge[j]-gY_B[i+1][j]*gf[j];gb[i]=gb[i]+gY_G[i+1][j]*gf[j]+gY_B[i+1][j]*ge[j];}}for(i=0;i<=Bus_Num-2;i++){for(j=0;j<=Bus_Num-2;j++){if(i!=j){gJaccobi[2*i][2*j]=-gY_B[i+1][j+1]*ge[i+1]+gY_G[i+1][j+1]*gf[i+1];gJaccobi[2*i][2*j+1]=gY_G[i+1][j+1]*ge[i+1]+gY_B[i+1][j+1]*gf[i+1];if(gBus[i+1].Type==2) //PV节¨2点ì?{gJaccobi[2*i+1][2*j]=0;gJaccobi[2*i+1][2*j+1]=0;}else//PQ{gJaccobi[2*i+1][2*j]=-gJaccobi[2*i][2*j+1];gJaccobi[2*i+1][2*j+1]=gJaccobi[2*i][2*j];}}else{gJaccobi[2*i][2*j]=-gY_B[i+1][j+1]*ge[i+1]+gY_G[i+1][j+1]*gf[i+1]+gb[i];gJaccobi[2*i][2*j+1]=gY_G[i+1][j+1]*ge[i+1]+gY_B[i+1][j+1]*gf[i+1]+ga[i];if(gBus[i+1].Type==2) //PV节¨2点ì?{gJaccobi[2*i+1][2*j]=2*gf[i+1];gJaccobi[2*i+1][2*j+1]=2*ge[i+1];}else//PQ节点{gJaccobi[2*i+1][2*j]=-gY_G[i+1][j+1]*ge[i+1]-gY_B[i+1][j+1]*gf[i+1]+ga[i];gJaccobi[2*i+1][2*j+1]=-gY_B[i+1][j+1]*ge[i+1]+gY_G[i+1][j+1]*gf[i+1]-gb[i];}}}}fp=fopen(,"w");if(fp==NULL){printf("无法打开文件:” 'jaccobi.txt' \n");return ;}fprintf(fp,"---Jaccobi Matrix---\n");for(i=0;i<=2*Bus_Num-3;i++){for(j=0;j<=2*Bus_Num-3;j++){fprintf(fp,"jaccobi(%d,%d)=%10.5f\n",i+1,j+1,gJaccobi[i][j]);}}fclose(fp);}void GetRevised(){int i,j;FILE *fp;NEquation ob1; //解矩阵方程ob1.SetSize(2*(Bus_Num-1));for(i=0;i<=2*Bus_Num-3;i++)for(j=0;j<=2*Bus_Num-3;j++)ob1.Data(i,j)=gJaccobi[i][j];for(i=0;i<=2*Bus_Num-3;i++)ob1.Value(i)=gDelta_PQ[i];ob1.Run();for(i=0;i<=Bus_Num-2;i++){gDelta_f[i]=ob1.Value(2*i);gDelta_e[i]=ob1.Value(2*i+1);gDelta_fe[2*i]=gDelta_f[i];gDelta_fe[2*i+1]=gDelta_e[i];}fp=fopen("E:\\1121960726\\flow\\data\\revised.txt","w");if(fp==NULL){printf("无法打开文件:” 'revised.txt' \n");return ;}fprintf(fp,"---Revised---\n");for(i=0;i<=2*Bus_Num-3;i++){fprintf(fp,"revised[%d]=%10.5f\n",i+1,gDelta_fe[i]);}fclose(fp);}void GetNewValue(){int i;FILE *fp;for(i=0;i<=Bus_Num-2;i++){gf[i+1]=gf[i+1]+gDelta_f[i];ge[i+1]=ge[i+1]+gDelta_e[i];}fp=fopen("E:\\1121960726\\flow\\data\\newvalue.txt","w");if(fp==NULL){printf("无法打开文件:”'newvalue.txt' \n");return ;}fprintf(fp,"---New Value---\n");for(i=0;i<=Bus_Num-2;i++){fprintf(fp,"f(%d)=%10.5f,e(%d)=%10.5f\n",i+1,gf[i+1],i+1,ge[i+1]); }fclose(fp);}int main(array<System::String ^> ^args){int i,Count_Num;float maxValue;//test();GetData();GetYMatrix();SetInitial();for(Count_Num=0;Count_Num<=100;Count_Num++) {GetUnbalance();GetJaccobi();GetRevised();GetNewValue();maxValue=fabs(gDelta_fe[0]);for(i=1;i<=2*(Bus_Num-1)-1;i++){if(maxValue<fabs(gDelta_fe[i])){maxValue=fabs(gDelta_fe[i]);}}if(maxValue<Precision){break;}}printf("%d\n",Count_Num);for(i=0;i<=Bus_Num-1;i++){printf("%10.5f\n",sqrt(ge[i]*ge[i]+gf[i]*gf[i]));}while(true){}return 0;}计算结果:(1)原始数据:(2)节点导纳矩阵:(3)Jacobi矩阵:(4)NewVoltageValue:(5)不平衡量:(6)修正量:(6)结果:3.回答思考题1.潮流计算的方法有哪些?各有何特点?2. 如果交给你一个任务,请你用已有的潮流计算软件计算北京城市电网的潮流,你应该做哪些工作?(收集哪些数据,如何整理,计算结果如何分析)3. 设计中遇到的问题和解决的办法。
王超的潮流上机课程设计报告-推荐下载
3.3 设计中遇到的问题和解决的办法。 1.在设计最开始遇到的问题就是由于以前 C++语言所学习的知识遗忘较多,对于程序的使 用不太熟练,通过老师讲解、看书、询问同学逐渐扫除了这个障碍。 2.设计的时候对于电力系统整体的知识脉络不是很清晰,编写程序时所定义的变量容易 弄混淆,编写的程序产生了较多的错误,经过仔细学习和对每一排程序的排查,找出 了产生错误的地方。同时也对潮流计算的过程有了更清楚的认识。
元旦过后,正式进入状态,开始大规模编写程序。在课本和老师的指导下,从文件的读入,到形成 节点导纳矩阵,都花费了很长时间,在形成雅克比矩阵中,我的程序出现了错误,结果查明是下表没有 对应。
最后一部分就是计算线路功率和损耗。这部分老师没有给出例子。但是经过这样一个时间的训练, 在课本公式的推导下,我把公式分解成实部和虚部,分别计算。在输入时,还是要十分注意下标的对应。 最后部分的编写解释主程序,主要是负责把几个已经编号的子程序调用,还要同时编写控制循环精度和 次数的条件。这部分主要是应用 Break 语句和循环,让迭代过程收敛。
《电力系统潮流上机》课程设计报告
院 系:电气与电子工程学院
班 级: 电网 1102
学 号:
学生姓名:
指导教师:
设计周数:
成 绩:
24
Байду номын сангаас王超
王莉丽
两周
日期:2013 年 12 月 30 日
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电通,力1根保过据护管生高线产中0不工资仅艺料可高试以中卷解资配决料置吊试技顶卷术层要是配求指置,机不对组规电在范气进高设行中备继资进电料行保试空护卷载高问与中题带资2负料2,荷试而下卷且高总可中体保资配障料置各试时类卷,管调需路控要习试在题验最到;大位对限。设度在备内管进来路行确敷调保设整机过使组程其高1在中正资,常料要工试加况卷强下安看与全22过,22度并22工且22作尽22下可护都能1关可地于以缩管正小路常故高工障中作高资;中料对资试于料卷继试连电卷接保破管护坏口进范处行围理整,高核或中对者资定对料值某试,些卷审异弯核常扁与高度校中固对资定图料盒纸试位,卷置编工.写况保复进护杂行层设自防备动腐与处跨装理接置,地高尤线中其弯资要曲料避半试免径卷错标调误高试高等方中,案资要,料求编试技5写、卷术重电保交要气护底设设装。备备置管4高调、动线中试电作敷资高气,设料中课并技3试资件且、术卷料中拒管试试调绝路包验卷试动敷含方技作设线案术,技槽以来术、及避管系免架统不等启必多动要项方高方案中式;资,对料为整试解套卷决启突高动然中过停语程机文中。电高因气中此课资,件料电中试力管卷高壁电中薄气资、设料接备试口进卷不行保严调护等试装问工置题作调,并试合且技理进术利行,用过要管关求线运电敷行力设高保技中护术资装。料置线试做缆卷到敷技准设术确原指灵则导活:。。在对对分于于线调差盒试动处过保,程护当中装不高置同中高电资中压料资回试料路卷试交技卷叉术调时问试,题技应,术采作是用为指金调发属试电隔人机板员一进,变行需压隔要器开在组处事在理前发;掌生同握内一图部线纸故槽资障内料时,、,强设需电备要回制进路造行须厂外同家部时出电切具源断高高习中中题资资电料料源试试,卷卷线试切缆验除敷报从设告而完与采毕相用,关高要技中进术资行资料检料试查,卷和并主检且要测了保处解护理现装。场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
电力系统潮流上机设计教学指导书
电力零售仿真实验教学指导书一、综合实验的概述1.目的:培养学生对电力销售环节的分析能力,把握电力零售的相关知识。
2.使用的工具:零售市场仿真实验软件3.全然要求:把握电力销售环节的交易模型;销售电价的分类;电费计算;分析不同负荷特性的电力用户执行不同电价类不的差异。
4.考核方法:总成绩=出勤情况+设计报告+面试成绩5.参考教材:区域电力市场电价机制张粒子、郑华北京:中国电力出版社,2004二、综合实验的要求1.依据各类用户负荷数据,把握用户负荷特性分析方法。
2.把握销售电价中的电价结构。
3.把握各类电价制度的电费结算模型。
4.把握各类电价制度的特点、适用的用户范围。
5.对EXCEL的把握:翻开文件、维持文件、另存文件;读取计算数据;制作分析表格;依据分析数据制作展示图。
三、综合实验的内容实验一:电力用户负荷特性分析〔一〕根底理论知识预备:电力用户负荷特性1)电力用户用电负荷曲曲折折曲曲折折折折曲曲折折曲曲折折折折折折线:将电力用户的有功负荷,按时刻序列绘制成的图形,称为负荷曲曲折折曲曲折折折折曲曲折折曲曲折折折折折折线。
(1) 日负荷曲曲折折曲曲折折折折曲曲折折曲曲折折折折折折线:标示出一天内每小时〔每半小时、每15分钟〕的负荷值,反映一天内负荷动态。
(2) 年负荷曲曲折折曲曲折折折折曲曲折折曲曲折折折折折折线:标示出一年内每月的最高负荷值,反映一年内各月负荷动态。
2)要紧的负荷特性指标及计算(1) 最高负荷:报告期〔日、月、季、年〕内记录的负荷中,数值最大的一个。
(2) 最低负荷:报告期〔日、月、季、年〕内记录的负荷中,数值最小的一个。
(3) 平均负荷:报告期内瞬间负荷的平均值,即负荷时刻数列时序平均数。
(4) 负荷率:平均负荷与最高负荷的比率。
负荷率〔%〕=⨯)k k W W 报告期最高负荷()报告期平均负荷(100% (5) 最小负荷率:报告期最低负荷与最高负荷的比率。
最小负荷率〔%〕=⨯)报告期最高负荷()报告期最低负荷(W W k k 100%(6) 峰谷差:最高负荷与最低负荷之差。
电力系统潮流上机 (2)剖析
头文件和命名空间的引用
根据C语言标准,所有类和函数都是使用头 文件进行定义和说明的。在程序的开始需 要加入必需的头文件(.h)。C++类库还增 加了命名空间(namespace),程序所用到的 大多数类都包含在“std”命名空间中,这 些都需要在程序中加以说明。
文件输入输出程序测试
• 文件输入输出命令推荐采 用fstream的标准类库方式。 ifstream infile; ofstream outfile;
• ifstream与ofstream的程序 测试,如右图:
解方程程序测试
这一部分主要掌握如何添加头 文件,并在主程序中学会调用。 添加头文件:打开在F盘下所建 的以学号命名的文件夹 “1061181324”->打开 “TEST”文件下->再打开 “TEST”文件->将已建好的头 文件复制粘贴,(在这次潮流 上机中可使用老师编好的头文 件“NEquation.h”) 再回到C++主程序界面,在 “解决方案管理器窗口”处右 击“头文件”->添加->现有项>NEquation.h->确定:
printf函数的使用
点击“调试”->开始 调试(不执行)即可 输出运行结果。(快 捷键是Ctrl+F5)
iostream类的使用
在C语言中,用printf和scanf进行输入输出,通过 以前的学习,我们知道用这两个函数进行输入输 出时,必须指明输出和输入的数据的格式和类型 (如,“%d”表示整型,“%f”表示浮点型。) 这不仅使编程繁琐复杂,而且还容易出错。C++ 为了和C兼容,保留了printf和scanf函数,但C++ 通过提供I/O类库来实现丰富的I/O功能。iostream 是C++种提供的用于输入输出的类库,意为输入 输出流。 常用到的命令语句有以下: cin>>a: 把一个数输入给变量a; cout<<a: 把变量a的值输出;
电力系统潮流上机设计教学指导书(适用于VC)
电力系统潮流上机课程设计教学指导书(适用于VC)一、基础知识的要求1.掌握VC环境的建立,建立一个空的或者“hello world”的DOS工作平台。
2.掌握函数的定义,头文件的使用,函数调用方法。
了解类的概念,建立类对象,学会调用类成员函数。
3.掌握数据文件的打开和关闭,学会自己根据系统数据建立数据文件,并读取数据。
学会将计算结果写到文件中。
4.对VC环境的掌握:i.打开工作平台:file->open workspace(file->recent workspace)ii.打开工作平台中的文件:选择fileview页,在source file中双击想打开的.cpp文件,或者在header file中双击想打开的.h文件。
iii.保存文件:ctrl+siv.将已有文件加入当前工作平台中:如果是cpp文件,则选中source file,单击右键,选择add file to folder,加入希望加入的cpp文件。
如果是.h文件,则选中header file,单击右键,选择add file to folder,加入希望加入的头文件。
v.编译:所有的程序写完之后需要进行编译。
编译可以选择Build按钮,也可以用快捷键F7进行编译。
如果有语法错误,则会在output的build页显示出来,逐个双击定位,处理错误,解决问题。
vi.调试:设置断点(F9),进入调试状态或者执行至下一个断点(F5,或者点击界面上的“Go”按钮),单步执行(F10),进入子函数(F11),执行到鼠标所在位置(ctrl+F10),结束调试(shift+F5)。
vii.运行:运行可以点击界面上的“叹号”按钮,也可以使用快捷键ctrl+F5,使用这个命令时,所设置的断点是不起作用的。
5.《电力系统稳态分析》教材中第四章涉及到的基本知识。
二、设计注意事项1.变量的定义要写在变量被使用之前,变量不能被重复定义。
2.VC是区分大小写的。
关于潮流计算的课程设计
关于潮流计算的课程设计一、课程目标知识目标:1. 理解潮流计算的基本概念,掌握电力系统潮流的基本方程和算法;2. 学习并掌握使用相关软件工具进行潮流计算的方法;3. 了解潮流计算在电力系统运行中的应用及其重要性。
技能目标:1. 能够运用所学的潮流计算方法,解决实际的电力系统平衡问题;2. 培养学生运用计算机软件进行电力系统分析的能力;3. 通过团队协作,提高学生的问题分析、数据解读和报告撰写技巧。
情感态度价值观目标:1. 培养学生对电力系统的兴趣,激发他们探索电力科学领域的热情;2. 强化学生的安全意识,认识到电力系统运行安全的重要性;3. 增强学生的环保意识,理解潮流计算在节能减排中的作用;4. 通过团队合作,培养学生的沟通能力和集体荣誉感。
课程性质分析:本课程旨在帮助学生建立电力系统潮流计算的基本理论框架,并通过实践操作,使学生掌握相关技能,为后续专业课程打下坚实基础。
学生特点分析:考虑到学生所在年级的知识深度,课程设计将结合学生的理论基础和实际应用能力,以引导式教学为主,鼓励学生主动探索和思考。
教学要求:1. 教学内容与课本紧密相关,注重理论与实践相结合;2. 采用案例教学,提高课程的实用性和针对性;3. 教学过程中注重培养学生的创新能力和实际操作能力。
二、教学内容1. 潮流计算基本概念:介绍潮流计算的定义、作用以及在电力系统运行中的重要性;教材章节:第一章第三节。
2. 潮流计算基本方程:讲解电力系统的基本潮流方程,包括功率方程、电压方程和相角方程;教材章节:第二章第一节。
3. 潮流计算算法:介绍常用的潮流计算算法,如牛顿-拉夫逊法、快速分解法和PQ分解法;教材章节:第二章第二节。
4. 潮流计算软件应用:指导学生使用相关软件(如PSS/E、DIgSILENT PowerFactory等)进行潮流计算;教材章节:第三章。
5. 潮流计算案例分析:分析实际电力系统潮流计算案例,使学生了解潮流计算在实际工程中的应用;教材章节:第四章。
华电潮流上机课程设计报告程序..doc
院系:电气与电子工程学院班级:学号:学生姓名:指导教师:刘宝柱设计周数:成绩:日期:2012年1月5日课程课程设计报告一、课程设计的目的与要求培养学生的电力系统潮流计算机编程能力,掌握计算机潮流计算的相关知识二、设计正文(详细内容见附录)1.手算2.计算机计算3.思考题3.1潮流计算的方法有哪些?各有何特点?答:潮流计算的方法主要有高斯-赛德尔迭代法、牛顿-拉夫逊迭代法和P-Q分解法。
它们各自的特点如下:(1)高斯-赛德尔迭代法分为以节点导纳矩阵为基础的高斯-赛德尔迭代法和以以节点阻抗矩阵为基础的高斯-赛德尔迭代法的原理比较简单,要求的数字计算机的内存量也比较小,但收敛性差,当系统规模变大时,迭代次数急剧上升,往往出现迭代不收敛的情况;而阻抗法改善了电力系统潮流计算导纳法德收敛性问题,在当时获得了广泛的应用,但是,阻抗法的主要缺点是占用计算机的内存很大,每次迭代的计算量很大。
当系统不断扩大时,这些缺点就更加突出。
(2)牛顿-拉夫逊法是数学中求解非线性方程式的典型方法,有较好的收敛性。
只要在迭代过程中尽可能保持方程式系数矩阵的稀疏性,就可以大大提高牛顿潮流计算程序的计算效率,牛顿法在收敛性、内存要求、计算速度方面都超过了阻抗法,成为知道目前仍被广泛采用的方法。
(3)P-Q分解法潮流计算派生于以极坐标表示时的牛顿-拉夫逊法,它根据电力系统的特点,抓住主要矛盾,对纯数学的牛顿法进行了改造。
与牛顿法相比,P-Q分解法的修正方程的系数矩阵B’和B”分别是(n-1)和(m-1)的方阵,替代了原有的(n+m-2)阶系数矩阵J;B’、B”在迭代过程中可以保持不变且为对称的系数矩阵,提高了计算速度,降低了对存储容量的要求。
P-Q分解法在计算速度方面有显著地提高,迅速得到了推广。
3.2如果交给你一个任务,请你用已有的潮流计算软件计算北京城市电网的潮流,你应该做哪些工作?(收集哪些数据,如何整理,计算结果如何分析)答:(1)在进行北京城市电网的潮流计算之前需要了解北京城市电网中所有的节点支路的相关数据,并对节点和支路分类。
离线潮流计算课程设计(华北电力大学,李燕华老师)
离线潮流计算课程设计(华北电力大学、刘燕华老师)班级学号姓名一、课程设计的目的离线潮流计算课程设计是“电力系统稳态分析”课程教学的重要实践环节,目的是使学生加深理解所学知识,锻炼应用理论解决实际问题的能力。
二、课程设计内容1、手算算例1(精度取10 -2),求潮流计算结果。
2、编写潮流计算程序,计算算例2 。
三、课程设计要求1、计算机语言:编程语言可任选,建议使用C语言,使用VC6.0平台。
2、潮流计算方法:牛顿—拉夫逊法和P-Q分解法。
3、编写潮流计算程序,并在计算机上调试通过,运行结果正确。
4、要求潮流计算程序具有一定的通用性,基础数据以数据文件的形式输入。
5、撰写课程设计报告,内容包括:1)潮流计算的意义2)潮流计算几种主要方法的比较3)手算算例1的计算过程及结果4)程序框图、源程序及符号说明5)算例及计算结果四、验收方式以答辩的形式进行验收,演示程序并回答有关问题。
五、算例1、节点①为平衡节点,U1=1∠0°,节点②为PV节点,P2=0.4,U2=1.1,节点③为PQ节点,S3 = 0.8+ j 0.6,网络结构和参数如图1所示。
2、GN1节点为平衡节点,V9=1.04,δ9=0.0,GEN2和GEN3为PV节点,V7=1.025,P7=1.63,V8=1.025,P8=0.85,其它节点为PQ节点,S1=1.25+j0.5,S3=0.9+j0.3,S5=1.0+j0.35,ε=0.0001,网络结构如图2所示。
①②③P 2=0.4U 2=1.1U 1=1∠0°S 3 = 0.8+j 0.6y 12=1.17 - j 4.71y 13=5.88 - j 23.5图1 算例1图2 算例2Txt 文档 原始数据GEN1⑨j 0.058 ②S 3③①S 1⑦ ⑥⑤ ④⑧GEN3GEN2 0.01+j0.085B/2=0.0880.017+j0.092 B/2=0.079 0.039+j0.17 B/2=0.1790.032+j0.161 B/2=0.153 j0.0630.019+j0.072 B/2=0.075S 50.012+j0.101B/2=0.105j0.059Line1 1 1 12 0.01 0.085000001 0.0882 1 1 1 6 0.032000002 0.160999998 0.1529999973 1 1 2 3 0.017000001 0.092 0.0790000044 2 1 2 9 0 0.057999998 15 1 1 3 4 0.039000001 0.170000002 0.1790000056 1 1 4 5 0.012 0.101000004 0.1049999977 2 1 4 8 0 0.059 18 1 1 5 6 0.018999999 0.071999997 0.0750000039 2 1 6 7 0 0.063000001 1Node1 1 -1.25 -0.52 1 0.000000 0.0000003 1 -0.9 -0.34 1 0.000000 0.0000005 1 -1.000000 -0.356 1 0.000000 0.0000007 2 1.63 1.0258 2 0.85 1.0259 0 1.04 0.000000上机程序:编程#include<stdafx.h>#include<string.h>#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<float.h>#include<math.h>using namespace System;#define LINE_TOTAL_NUM 9#define NODE_TOTAL_NUM 9#define NODE_DATA_FILENAME "node.txt"#define LINE_DATA_FILENAME "line.txt"#define B "B.txt"#define G "G.txt"#define deltaPQ "deltapq.txt"#define JACCOBI "jaccobi.txt"#define PQ "pq.txt"#define line_S "linedeltaS.txt"#define U "u.txt"#define line_pq "lineS.txt"struct NodeData{unsigned int Index; //node indexunsigned int Type; //node type: PQ:1,PV:2,balance point:0float FirstInput; //PQ or PV:active power,balance point:Vfloat SecondInput; //PQ:reactive power,PV:V,balance point:angle};struct NodeData gNodeData[NODE_TOTAL_NUM]; // define a global variable of node 确定节点读入结构体struct LineData{unsigned int Index; //line indexunsigned int Type; //line type: Line:1,tranformer:2,line connected to ground:3unsigned int Status; //line status: on:1,off:0unsigned int SrcNode; //source node index of this lineunsigned int DestNode;//destination node index of this linefloat Resistance; //resistance of the linefloat Reactance; //reactance of the linefloat Conductance; //Line: conductance B/2,transformer:change ratio};struct LineData gLineData[LINE_TOTAL_NUM]; //确定支路节点导纳结钩体struct NodeV oltage{float V oltage;float Angle;};struct NodeV oltage gNodeV oltage[NODE_TOTAL_NUM];struct DeltaPQ{ //定义不平衡功率的结构体float DeltaP; //有功float DeltaQ; //无功};struct DeltaPQ gDeltaPQ[NODE_TOTAL_NUM]; //定义不平衡功率数组gUnbPowervoid SolveEquation(unsigned int Dimension,float** FactorMatrix,float* ConstV ector);//void SolveEquation(unsigned int Dimension,float** FactorMatrix,float* ConstV ector);float gY_G[NODE_TOTAL_NUM][NODE_TOTAL_NUM];float gY_B[NODE_TOTAL_NUM][NODE_TOTAL_NUM];int main(array<System::String ^> ^args){Console::WriteLine(L"Hello World");float node_P[9],node_Q[9],line_deltap[9],line_deltaq[9];unsigned int i,j,k,n,m; //cycle variable;FILE* fp; //file structureunsigned int PVNum=0; //the number of PV nodefp=fopen(NODE_DATA_FILENAME,"r"); //open and read the node datafor(i=0;i<NODE_TOTAL_NUM;i++){fscanf(fp," %d %d %f %f ",&gNodeData[i].Index,&gNodeData[i].Type,&gNodeData[i].FirstInput,&gNodeData[i].SecondInput);//initiate the NodeV oltage according to node type 读入节点数据PQ或PVswitch(gNodeData[i].Type){case 1: //PQ nodegNodeV oltage[i].V oltage = 1.0;gNodeV oltage[i].Angle = 0.0;break;case 2: //PV nodegNodeV oltage[i].V oltage = gNodeData[i].SecondInput;gNodeV oltage[i].Angle = 0.0;PVNum++;break;case 0: //balance nodegNodeV oltage[i].V oltage = gNodeData[i].FirstInput;gNodeV oltage[i].Angle = gNodeData[i].SecondInput;break;default:printf("there is no such a node type, data has mistake");return 0;}}fclose(fp);fp=fopen(LINE_DATA_FILENAME,"r"); //open and read the line data 读节点导纳数据for(i=0;i<LINE_TOTAL_NUM;i++){fscanf(fp," %u %u %u %u %u %f %f %f", &gLineData[i].Index,&gLineData[i].Type,&gLineData[i].Status,&gLineData[i].SrcNode,&gLineData[i].DestNode,&gLineData[i].Resistance,&gLineData[i].Reactance,&gLineData[i].Conductance);}fclose(fp);float line_g[9], line_b[9],line_g0[9], line_b0[9];for(i=0;i<NODE_TOTAL_NUM;i++){ line_g[i]=0;line_b[i]=0;line_g0[i]=0;line_b0[i]=0;for(j=0;j<NODE_TOTAL_NUM;j++){gY_G[i][j] = 0.0;gY_B[i][j] = 0.0;}}for(i=0;i<LINE_TOTAL_NUM;i++){float tAbs;float LineG,LineB;unsigned int tSrcNode,tDestNode;tSrcNode = gLineData[i].SrcNode - 1;//counting from zerotDestNode = gLineData[i].DestNode - 1;tAbs = pow(gLineData[i].Resistance,2)+pow(gLineData[i].Reactance,2);//由阻抗求导纳LineG = gLineData[i].Resistance/tAbs;LineB = (-1)*gLineData[i].Reactance/tAbs;if(gLineData[i].Type){if(gLineData[i].Type == 1)//it means Line 线路{gY_G[tSrcNode][tSrcNode]+= LineG;gY_B[tSrcNode][tSrcNode] += LineB + gLineData[i].Conductance;gY_G[tDestNode][tDestNode] += LineG;gY_B[tDestNode][tDestNode] += LineB + gLineData[i].Conductance;gY_G[tSrcNode][tDestNode] += (-1)*LineG;gY_B[tSrcNode][tDestNode] += (-1)*LineB;gY_G[tDestNode][tSrcNode] += (-1)*LineG;gY_B[tDestNode][tSrcNode] += (-1)*LineB;line_g[i]=LineG;line_b[i]=LineB;line_b0[i]=gLineData[i].Conductance;}else if(gLineData[i].Type == 2) //it means Transformer 变压器{float V olRatio = gLineData[i].Conductance;gY_G[tSrcNode][tSrcNode] += LineG/pow(V olRatio,2);gY_B[tSrcNode][tSrcNode] += LineB/pow(V olRatio,2);gY_G[tDestNode][tDestNode] += LineG;gY_B[tDestNode][tDestNode] += LineB;gY_G[tSrcNode][tDestNode] += (-1)*LineG/V olRatio;gY_B[tSrcNode][tDestNode] += (-1)*LineB/V olRatio;gY_G[tDestNode][tSrcNode] += (-1)*LineG/V olRatio;gY_B[tDestNode][tSrcNode] += (-1)*LineB/V olRatio;line_g[i]=LineG/V olRatio;line_b[i]=LineB/V olRatio;}else if(gLineData[i].Type == 3)//it means line connected to ground{unsigned int tNotZeroNode;if(gLineData[i].SrcNode != 0)tNotZeroNode = gLineData[i].SrcNode-1;elsetNotZeroNode = gLineData[i].DestNode-1;;gY_G[tNotZeroNode][tNotZeroNode] += LineG;gY_B[tNotZeroNode][tNotZeroNode] += LineB;}elsereturn 0;}}//form deltaPQ//form Jacobin Matrix//N-R methodfp=fopen(G,"w"); //write the ymatrix data to filefor(i=0;i<9;i++){for(j=0;j<9;j++)fprintf(fp," %f ",gY_G[i][j]);fprintf(fp,"\n");}fprintf(fp,"\n\n");fclose(fp);fp=fopen(B,"w"); //write the ymatrix data to filefor(i=0;i<9;i++){for(j=0;j<9;j++)fprintf(fp," %f ",gY_B[i][j]);fprintf(fp,"\n");}fprintf(fp,"\n\n");fclose(fp);for(m=0;m<5;m++){unsigned int tSrcNode,tDestNode;float p1,p2,q1,q2,line_p[9][9],line_q[9][9];for(i=0;i<9;i++)for(j=0;j<9;j++){line_p[i][j]=line_q[i][j]=0;}fp=fopen(line_S,"w");fprintf(fp,"------ 线上的网损功率----- ");fprintf(fp,"\n\n");for(i=0;i<LINE_TOTAL_NUM;i++){tSrcNode = gLineData[i].SrcNode - 1;//counting from zerotDestNode = gLineData[i].DestNode - 1;p1=line_g[i]*(gNodeV oltage[tSrcNode].V oltage*gNodeV oltage[tSrcNode].V oltage-gNodeV oltage[tSrcNode].V oltage* gNodeV oltage[tDestNode].V oltage*cos(gNodeV oltage[tSrcNode].Angle-gNodeV oltage[tDestNode].Angle))-gNodeV oltage[tSrcNode].V oltage*gNodeV oltage[tDestNode].V oltage*line_b[i]*sin(gNodeV oltage[tSrcNode].Angle-gNodeV oltage[tDestNode].Angle);q1=-(line_b[i]*(gNodeV oltage[tSrcNode].V oltage*gNodeV oltage[tSrcNode].V oltage-gNodeV oltage[tSrcNode].V oltage *gNodeV oltage[tDestNode].V oltage*cos(gNodeV oltage[tSrcNode].Angle-gNodeV oltage[tDestNode].Angle))+gNo deV oltage[tSrcNode].V oltage*gNodeV oltage[tDestNode].V oltage*line_g[i]*sin(gNodeV oltage[tSrcNode].Angle-gNodeV oltage[tDestNode].Angle)+gNodeV oltage[tSrcNode].V oltag e*gNodeV oltage[tSrcNode].V oltage* line_b0[i]);p2=line_g[i]*(gNodeV oltage[tDestNode].V oltage*gNodeV oltage[tDestNode].V oltage-gNodeV oltage[tSrcNode].V oltag e*gNodeV oltage[tDestNode].V oltage*cos(gNodeV oltage[tDestNode].Angle-gNodeV oltage[tSrcNode].Angle))-gN odeV oltage[tSrcNode].V oltage*gNodeV oltage[tDestNode].V oltage*line_b[i]*sin(gNodeV oltage[tDestNode].Angle-gNodeV oltage[tSrcNode].Angle);q2=-(line_b[i]*(gNodeV oltage[tDestNode].V oltage*gNodeV oltage[tDestNode].V oltage-gNodeV oltage[tSrcNode].V olta ge*gNodeV oltage[tDestNode].V oltage*cos(gNodeV oltage[tDestNode].Angle-gNodeV oltage[tSrcNode].Angle))+g NodeV oltage[tSrcNode].V oltage*gNodeV oltage[tDestNode].V oltage*line_g[i]*sin(gNodeV oltage[tDestNode].Angle-gNodeV oltage[tSrcNode].Angle)+gNodeV oltage[tDestNode].V olta ge*gNodeV oltage[tDestNode].V oltage* line_b0[i]);line_deltap[i]=p1+p2;line_deltaq[i]=q1+q2;line_p[tSrcNode][tDestNode]=p1;line_p[tDestNode][tSrcNode]=p2;line_q[tSrcNode][tDestNode]=q1;line_q[tDestNode][tSrcNode]=q2;fprintf(fp," 第%d 条%6.3f + j%6.3f ",i+1,line_deltap[i],line_deltaq[i]);fprintf(fp,"\n");}fprintf(fp,"\n\n");fclose(fp);fp=fopen(line_pq,"w");fprintf(fp,"------ 线路潮流----- ");fprintf(fp,"\n\n");fprintf(fp,"有功 1 2 3 4 5 6 7 8 9\n");for(i=0;i<9;i++){fprintf(fp," %d ", i+1 );for(j=0;j<9;j++){fprintf(fp," %6.3f ",line_p[i][j]);}fprintf(fp,"\n");}fprintf(fp,"\n\n");fprintf(fp," 无功 1 2 3 4 5 6 7 8 9\n");for(i=0;i<9;i++){fprintf(fp," %d ", i+1 );for(j=0;j<9;j++){fprintf(fp," %6.3f ",line_q[i][j]);}fprintf(fp,"\n");}fprintf(fp,"\n\n");fclose(fp);float tempP[NODE_TOTAL_NUM]={0.0},tempQ[NODE_TOTAL_NUM]={0.0};//设两个变量数组用于存储两个累加和for(i=0;i<9;i++){for(j=0;j<9;j++){tempP[i]+=gNodeV oltage[j].V oltage*(gY_G[i][j]*cos(gNodeV oltage[i].Angle-gNodeV oltage[j].Angle)+gY_B[i][j]*sin(gNodeV oltage[i].Angle-gNodeV oltage[j].Angle));tempQ[i]+=gNodeV oltage[j].V oltage*(gY_G[i][j]*sin(gNodeV oltage[i].Angle-gNodeV oltage[j].Angle)- gY_B[i][j]*cos(gNodeV oltage[i].Angle-gNodeV oltage[j].Angle));}}for(i=0;i<9;i++) //利用公式求解每个节点的不平衡功率{if(gNodeData[i].Type == 1) //如果是PQ节点则△P和△Q都要求{gDeltaPQ[i].DeltaP=gNodeData[i].FirstInput-gNodeV oltage[i].V oltage*tempP[i];gDeltaPQ[i].DeltaQ=gNodeData[i].SecondInput-gNodeV oltage[i].V oltage*tempQ[i];node_P[i]=gNodeData[i].FirstInput;node_Q[i]=gNodeData[i].SecondInput;}if(gNodeData[i].Type==2) //如果是PV节点只需求△P{gDeltaPQ[i].DeltaP=gNodeData[i].FirstInput-gNodeV oltage[i].V oltage*tempP[i];node_P[i]=gNodeData[i].FirstInput;node_Q[i]=gNodeV oltage[i].V oltage*tempQ[i];}if(gNodeData[i].Type==0){node_P[i]=gNodeV oltage[i].V oltage*tempP[i];node_Q[i]=gNodeV oltage[i].V oltage*tempQ[i];}}float B_Array[14];for(i=0;i<NODE_TOTAL_NUM;i++) //向数组中放入不平衡功率的值{if(gNodeData[i].Type==1) //PQ节点两个都要输入{B_Array[i]=gDeltaPQ[i].DeltaP;B_Array[i+NODE_TOTAL_NUM-1]=gDeltaPQ[i].DeltaQ;}if(gNodeData[i].Type==2) //PV节点只输入△PB_Array[i]=gDeltaPQ[i].DeltaP;if(gNodeData[i].Type==0) //平衡节点不输入数据{}}fp=fopen(deltaPQ,"w");for(i=0;i<14;i++){fprintf(fp," %f ",B_Array[i]);fprintf(fp,"\n");}fprintf(fp,"\n\n");fclose(fp);float gJaccobi[14][14];float H[8][8],N[8][6],J[6][8],L[6][6];float s;for(i=0;i<8;i++)for(j=0;j<8;j++){{ s=0;for(k=0;k<9;k++)s=s+gNodeV oltage[k].V oltage*(gY_G[i][k]*sin(gNodeV oltage[i].Angle-gNodeV oltage[k].Angle)-gY_B[i][k]*cos( gNodeV oltage[i].Angle-gNodeV oltage[k].Angle));}if(i==j){H[i][i]=gNodeV oltage[i].V oltage*(s-gNodeV oltage[i].V oltage*(gY_G[i][i]*sin(gNodeV oltage[i].Angle-gNodeV olt age[i].Angle)-gY_B[i][i]*cos(gNodeV oltage[i].Angle-gNodeV oltage[i].Angle)));}elseH[i][j]=-gNodeV oltage[i].V oltage*gNodeV oltage[j].V oltage*(gY_G[i][j]*sin(gNodeV oltage[i].Angle-gNodeV oltag e[j].Angle)-gY_B[i][j]*cos(gNodeV oltage[i].Angle-gNodeV oltage[j].Angle));}for(i=0;i<8;i++)for(j=0;j<6;j++){s=0;for(k=0;k<9;k++){s=s+gNodeV oltage[k].V oltage*(gY_G[i][k]*cos(gNodeV oltage[i].Angle-gNodeV oltage[k].Angle)+gY_B[i][k]*sin (gNodeV oltage[i].Angle-gNodeV oltage[k].Angle));}if(i==j){N[i][i]=-gNodeV oltage[i].V oltage*(s-gNodeV oltage[i].V oltage*(gY_G[i][i]*cos(gNodeV oltage[i].Angle-gNodeV ol tage[i].Angle)+gY_B[i][i]*sin(gNodeV oltage[i].Angle-gNodeV oltage[i].Angle)))-2*gNodeV oltage[i].V oltage*gNo deV oltage[i].V oltage*gY_G[i][i];elseN[i][j]=-gNodeV oltage[i].V oltage*gNodeV oltage[j].V oltage*(gY_G[i][j]*cos(gNodeV oltage[i].Angle-gNodeV oltag e[j].Angle)+gY_B[i][j]*sin(gNodeV oltage[i].Angle-gNodeV oltage[j].Angle));}for(i=0;i<6;i++)for(j=0;j<8;j++){s=0;for(k=0;k<9;k++){s=s+gNodeV oltage[k].V oltage*(gY_G[i][k]*cos(gNodeV oltage[i].Angle-gNodeV oltage[k].Angle)+gY_B[i][k]*sin (gNodeV oltage[i].Angle-gNodeV oltage[k].Angle));}if(i==j){J[i][i]=-gNodeV oltage[i].V oltage*(s-gNodeV oltage[i].V oltage*(gY_G[i][i]*cos(gNodeV oltage[i].Angle-gNodeV olt age[i].Angle)+gY_B[i][i]*sin(gNodeV oltage[i].Angle-gNodeV oltage[i].Angle)));}elseJ[i][j]=gNodeV oltage[i].V oltage*gNodeV oltage[j].V oltage*(gY_G[i][j]*cos(gNodeV oltage[i].Angle-gNodeV oltage [j].Angle)+gY_B[i][j]*sin(gNodeV oltage[i].Angle-gNodeV oltage[j].Angle));}for(i=0;i<6;i++)for(j=0;j<6;j++)s=0;for(k=0;k<9;k++){s=s+gNodeV oltage[k].V oltage*(gY_G[i][k]*sin(gNodeV oltage[i].Angle-gNodeV oltage[k].Angle)-gY_B[i][k]*cos( gNodeV oltage[i].Angle-gNodeV oltage[k].Angle));}if(i==j){L[i][i]=-gNodeV oltage[i].V oltage*(s-gNodeV oltage[i].V oltage*(gY_G[i][i]*sin(gNodeV oltage[i].Angle-gNodeV olt age[i].Angle)-gY_B[i][i]*cos(gNodeV oltage[i].Angle-gNodeV oltage[i].Angle)))+2*gNodeV oltage[i].V oltage*gNo deV oltage[i].V oltage*gY_B[i][i];}elseL[i][j]=-gNodeV oltage[i].V oltage*gNodeV oltage[j].V oltage*(gY_G[i][j]*sin(gNodeV oltage[i].Angle-gNodeV oltag e[j].Angle)-gY_B[i][j]*cos(gNodeV oltage[i].Angle-gNodeV oltage[j].Angle));}for(i=0;i<8;i++){for(j=0;j<8;j++)gJaccobi[i][j]=H[i][j];}for(i=0;i<8;i++){for(j=8;j<14;j++)gJaccobi[i][j]=N[i][j-8];}for(i=8;i<14;i++){for(j=0;j<8;j++)gJaccobi[i][j]=J[i-8][j];}for(i=8;i<14;i++){for(j=8;j<14;j++)gJaccobi[i][j]=L[i-8][j-8];}fp=fopen(JACCOBI,"w"); //write the Jmatrix data to filefprintf(fp," ----------%d 次迭代之后的雅各比---------- ", m+1);fprintf(fp,"\n");for(i=0;i<14;i++){for(j=0;j<14;j++)fprintf(fp," %f ", gJaccobi[i][j]);fprintf(fp,"\n");}fclose(fp);fp=fopen(U,"w");fprintf(fp,"----- %d次迭代之后的节点电压和相角-----",m+1);fprintf(fp,"\n\n");for(i=0;i<9;i++){fprintf(fp," %6.3f ,%6.3f ",gNodeV oltage[i].V oltage,gNodeV oltage[i].Angle*180/3.14 );fprintf(fp,"\n");}fclose(fp);float *Jgb[14]={0};for(i=0;i<14;i++)Jgb[i]=gJaccobi[i];SolveEquation(14,Jgb,B_Array);for(i=0;i<8;i++)gNodeV oltage[i].Angle=gNodeV oltage[i].Angle-B_Array[i];for(i=0;i<6;i++)gNodeV oltage[i].V oltage=gNodeV oltage[i].V oltage-gNodeV oltage[i].V oltage*B_Array[i+8];}fp=fopen(PQ,"w");fprintf(fp,"----- %d次迭代之后的节点注入功率-----",m);fprintf(fp,"\n\n");for(i=0;i<9;i++){fprintf(fp," %6.3f + j%6.3f ",node_P[i],node_Q[i] );fprintf(fp,"\n");}fclose(fp);return 0;}void SolveEquation(unsigned int Dimension,float** FactorMatrix, float* ConstV ector){unsigned int i,j,k;//消元过程for(i=0;i<Dimension;i++){//规格化过程:(每次消元前,先规格化,以便以下各行消元时,消元系数直接取待消//列元素的值即可,也便于回代过程,而运算量并不增加)for( j = i+1; j < Dimension; j++ ){FactorMatrix[i][j] = FactorMatrix[i][j] / FactorMatrix[i][i];}ConstV ector[i] = ConstV ector[i]/FactorMatrix[i][i];for( j = i+1; j < Dimension; j++ ) //消去第i列(从i+1行到最后一行){if( FactorMatrix[j][i] != 0 ) //如果第j行第i列元素本就是,则不需本列对应的消元过程{for( k = i + 1; k < Dimension; k++ ) //当FactorMatrix[i][k]=0,a[j][k]值不变,可省去运算if( FactorMatrix[i][k] != 0 )FactorMatrix[j][k] = FactorMatrix[j][k] - FactorMatrix[j][i] * FactorMatrix[i][k];}//常数项的消元ConstV ector[j] = ConstV ector[j] - FactorMatrix[j][i]* ConstV ector[i];}}//回代过程for( i = Dimension-1; i > 0; i-- ) //Dimension-2:最后一个变量可直接获得,从n-1个变量求起{for(j = Dimension-1; j > i-1 ; j-- ){if( FactorMatrix[i-1][j] != 0 )ConstV ector[i-1] = ConstV ector[i-1] - FactorMatrix[i-1][j] * ConstV ector[j];//a[i][k]=0时可以不算}}return;}结果数据:B-17.338230 11.604095 0.000000 0.000000 0.000000 5.975134 0.000000 0.000000 0.00000011.604095 -39.189156 10.510682 0.000000 0.000000 0.000000 0.000000 0.000000 17.2413810.000000 10.510682 -15.840926 5.588245 0.000000 0.000000 0.000000 0.000000 0.0000000.000000 0.000000 5.588245 -32.016567 9.763170 0.000000 0.000000 16.949152 0.0000000.000000 0.000000 0.000000 9.763170 -22.567842 12.984672 0.000000 0.000000 0.0000005.975134 0.000000 0.000000 0.000000 12.984672 -34.604820 15.8730150.000000 0.0000000.000000 0.000000 0.000000 0.000000 0.000000 15.873015 -15.873015 0.000000 0.0000000.000000 0.000000 0.000000 16.949152 0.000000 0.000000 0.000000 -16.949152 0.0000000.000000 17.241381 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 -17.241381G2.552792 -1.365188 0.000000 0.000000 0.000000 -1.187604 0.000000 0.000000 0.000000-1.365188 3.307379 -1.942191 0.000000 0.000000 0.000000 0.000000 0.000000 0.0000000.000000 -1.942191 3.224200 -1.282009 0.000000 0.000000 0.000000 0.000000 0.0000000.000000 0.000000 -1.282009 2.441990 -1.159981 0.000000 0.000000 0.000000 0.0000000.000000 0.000000 0.000000 -1.159981 4.586491 -3.426511 0.000000 0.000000 0.000000-1.187604 0.000000 0.000000 0.000000 -3.426511 4.614115 0.000000 0.000000 0.0000000.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.0000000.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.0000000.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000Pq----- 5次迭代之后的节点注入功率------1.250 + j-0.5000.000 + j 0.000-0.900 + j-0.3000.000 + j 0.000-1.000 + j-0.3500.000 + j 0.0001.630 + j 0.0440.850 + j-0.0830.722 + j 0.269Lines------ 线路潮流-----有功 1 2 3 4 5 6 7 8 91 0.000 -0.408 0.000 0.000 0.000 -0.842 0.000 0.000 0.0002 0.411 0.000 0.311 0.000 0.000 0.000 0.000 0.000 -0.7223 0.000 -0.310 0.000 -0.590 0.000 0.000 0.000 0.000 0.0004 0.000 0.000 0.604 0.000 0.246 0.000 0.000 -0.850 0.0005 0.000 0.000 0.000 -0.245 0.000 -0.755 0.000 0.000 0.0006 0.865 0.000 0.000 0.000 0.765 0.000 -1.630 0.000 0.0007 0.000 0.000 0.000 0.000 0.000 1.630 0.000 0.000 0.0008 0.000 0.000 0.000 0.850 0.000 0.000 0.000 0.000 0.0009 0.000 0.722 0.000 0.000 0.000 0.000 0.000 0.000 0.000无功 1 2 3 4 5 6 7 8 91 0.000 -0.380 0.000 0.000 0.000 -0.120 0.000 0.000 0.0002 0.222 0.000 0.015 0.000 0.000 0.000 0.000 0.000 -0.2373 0.000 -0.170 0.000 -0.130 0.000 0.000 0.000 0.000 0.0004 0.000 0.000 -0.185 0.000 0.061 0.000 0.000 0.124 0.0005 0.000 0.000 0.000 -0.271 0.000 -0.079 0.000 0.000 0.0006 -0.079 0.000 0.000 0.000 -0.037 0.000 0.115 0.000 0.0007 0.000 0.000 0.000 0.000 0.000 0.044 0.000 0.000 0.0008 0.000 0.000 0.000 -0.083 0.000 0.000 0.000 0.000 0.0009 0.000 0.269 0.000 0.000 0.000 0.000 0.000 0.000 0.000Linedeltas------ 线上的网损功率-----第1 条0.003 + j-0.158第2 条0.023 + j-0.198第3 条0.002 + j-0.155第4 条0.000 + j 0.032第5 条0.013 + j-0.315第6 条0.001 + j-0.210第7 条0.000 + j 0.041第8 条0.011 + j-0.116第9 条0.000 + j 0.159Deltapq0.000000-0.000000-0.0000000.0000000.000000-0.0000000.000000-0.000000-0.000001-0.000001-0.0000010.0000000.0000000.000000Jaccobi----------5 次迭代之后的雅各比-----------17.706173 11.808823 0.000000 0.000000 0.000000 5.897350 0.000000 0.000000 -1.283349 1.763017 -0.000000 -0.000000 -0.000000 2.020332 11.895562 -41.236431 10.961612 0.000000 0.000000 0.000000 0.0000000.000000 1.025734 -3.480160 1.732301 -0.000000 -0.000000 -0.000000 -0.000000 10.856828 -16.528721 5.671892 0.000000 0.000000 0.000000 0.000000 -0.000000 2.299367 -2.403131 1.903763 -0.000000 -0.000000 -0.000000 -0.000000 5.934539 -34.030075 10.204877 0.000000 0.000000 17.890657 -0.000000 -0.000000 0.758889 -2.595565 0.986676 -0.000000-0.000000 -0.000000 -0.000000 10.151972 -23.438147 13.286174 0.000000 0.000000 -0.000000 -0.000000 -0.000000 1.431959 -3.692233 4.2602746.221704 -0.000000 -0.000000 -0.000000 13.658310 -36.512653 16.632639 0.000000 0.388424 -0.000000 -0.000000 -0.000000 2.850076 -4.868500-0.000000 -0.000000 -0.000000 -0.000000 -0.000000 16.632639 -16.632639 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 -1.630000-0.000000 -0.000000 -0.000000 17.890657 -0.000000 -0.000000 0.000000 -17.890657 -0.000000 -0.000000 -0.000000 -0.850000 -0.000000 -0.0000003.783349 -1.763017 0.000000 0.000000 0.000000 -2.020332 0.000000 0.000000 -16.706175 11.808823 0.000000 0.000000 0.000000 5.897350 -1.025734 3.480160 -1.732301 0.000000 0.000000 0.000000 0.000000 0.000000 11.895562 -41.236435 10.961612 0.000000 0.000000 0.000000 0.000000 -2.2993674.203131 -1.903763 0.000000 0.000000 0.000000 0.000000 -0.000000 10.856828 -15.928721 5.671892 0.000000 0.000000 0.000000 0.000000 -0.758889 2.595565 -0.986676 0.000000 0.000000 -0.850000 -0.000000 -0.000000 5.934539 -34.030071 10.204877 0.000000 0.000000 0.000000 0.000000 -1.431959 5.692233 -4.260274 0.000000 0.000000 -0.000000 -0.000000 -0.000000 10.151972 -22.738146 13.286174-0.388424 0.000000 0.000000 0.000000 -2.850076 4.868500 -1.630000 0.000000 6.221704 -0.000000 -0.000000 -0.000000 13.658310 -36.512653 U----- 5次迭代之后的节点电压和相角-----0.996 ,-4.0341.026 ,-2.2511.012 ,-3.7411.031 , 1.8961.011 , 0.6421.027 , 3.6391.025 , 9.2391.025 , 4.617 1.040 , 0.000。
华电潮流上机课程设计报告(程序最终无误版)
《电力系统潮流上机》课程设计报告院系:电气与电子工程学院班级:电气1108学号: 1111550112学生:龙日尚指导教师:宝柱设计周数:两周成绩:日期:2014年1月10日一、课程设计的目的与要求培养学生的电力系统潮流计算机编程能力,掌握计算机潮流计算的相关知识二、设计正文(详细容见附录)1.手算2.计算机计算3.思考题三、课程设计总结或结论(详细容见附录)四、参考文献1.《电力系统计算:电子数字计算机的应用》,交通大学等合编。
北京:水利电力;2.《现代电力系统分析》,王锡凡主编,科学;3.《电力系统稳态分析》,珩,中国电力,1995年,第三版;附录(设计流程图、程序、表格、数据等)4.机算潮流程序及结果// dierti.cpp : 定义控制台应用程序的入口点。
//#include "stdafx.h"struct Line //线路结构体{int Num,NumI,NumJ; //线路号左节点名右节点名float R,X,B,K; //电阻电抗电纳变比(K等于1为普通支路,不等于1为变压器支路的变比) };struct Bus //节点结构体{int Num ;float Volt,Phase,GenP,GenQ,LoadP,LoadQ;int Type;};#include"stdio.h"#include"string.h"#include"math.h"#include"stdlib.h"#define NBUS 4#define NLINE 4/* Global variables */int nL,nB,nVA,nSH;float X[NBUS];int L;double def[2*NBUS];double mn[50];void Gauss(double a[50][50],double b[50], int n) /*定义高斯法 */{int JS[50];int i,j,k;float d,t,x[50];FILE *fp;int L=1;for(i=0;i<50;i++) JS[i]=0;for(k=0;k<n;k++){d=0.0;for(j=k;j<n;j++)if(fabs(a[k][j])>d){ /*在一行中找到一个最大值赋值d,并用JS[K]记住这个最大值所在的列号*/ d=fabs(a[k][j]);JS[k]=j;}if(fabs(d)<0.000001) /*如果d的数值太小,做为被除数将带来很大的误差 */L=0;else {if(JS[k]!=k)for(i=0;i<n;i++){t=a[i][k];a[i][k]=a[i][JS[k]]; /*进行列交换,让最大值始终在对角元上*/a[i][JS[k]]=t;}}if(L==0)break;for(j=k+1;j<n;j++)a[k][j]=a[k][j]/a[k][k]; /*对角元上的元素消为1*/b[k]=b[k]/a[k][k];for(i=k+1;i<n;i++){for(j=k+1;j<n;j++)a[i][j]=a[i][j]-a[i][k]*a[k][j]; /*使下三角阵的元素为0*/b[i]=b[i]-a[i][k]*b[k];}}if(fabs(a[n-1][n-1])>0.00001){ /*用追赶法,解方程组,求未知数x*/ x[n-1]=b[n-1];for(i=n-2;i>=0;i--){t=0.0;for(j=i+1;j<n;j++)t=t+a[i][j]*x[j];x[i]=(b[i]-t);}}if((fp=fopen("gauss.txt","w"))==NULL) /*将结果写到TXT文件中*/{printf("err");exit(0);}for(i=0;i<n;i++){fprintf(fp,"%lf",x[i]);mn[i]=x[i];fprintf(fp,"\n");}fclose(fp);if(fp!=NULL) fclose(fp);}int _tmain(int argc, _TCHAR* argv[]){FILE *fp;FILE *fpout;int i,j,k,l,h,n,v;int i1,i2,i3,kp,kq;float d1,d2,d3,d4,d5,d6,r,x,g,b,tt,LL,e,ps,qs,shsh,m;struct Line sL[NLINE];struct Bus sB[NBUS];float YG[NBUS+1][NBUS+1],YB[NBUS+1][NBUS+1];double u[50][2];i1=i2=i3=0;d1=d2=d3=d4=d5=d6=ps=qs=0.0;for(i=0;i<NBUS;i++)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;i<nB;i++){sB[i].Num=sB[i].Type=0;sB[i].Volt=1.0;sB[i].Phase=sB[i].GenP=sB[i].GenQ=sB[i].LoadP=sB[i].LoadQ=0.0;fscanf(fp,"%d,%f,%f,%f,%f,%f,%f,%d",&i1,&d1,&d2,&d3,&d4,&d5,&d6,&i2);sB[i].Num=i1;sB[i].Volt=d1;sB[i].Phase=d2;sB[i].GenP=d3;sB[i].GenQ=d4;sB[i].LoadP=d5,sB[i].LoadQ=d6;sB[i].T ype=i2;};for(i=0;i<nL;i++){sL[i].Num=sL[i].NumI=sL[i].NumJ=0;sL[i].R=sL[i].X=sL[i].B=0.0;sL[i].K=1.0;fscanf(fp,"%2d %3d %3d %f %f %f %f",&i1,&i2,&i3,&d1,&d2,&d3,&d4);sL[i].Num=i1;sL[i].NumI=i2;sL[i].NumJ=i3;sL[i].R=d1;sL[i].X=d2;sL[i].B=d3;sL[i].K=d4;}if(fp!=NULL) fclose(fp);/*Make Y Matrix*/for(i=1;i<nB+1;i++)for(j=1;j<nB+1;j++){YG[i][j]=0.0;YB[i][j]=0.0;};for(l=0; l<nL; l++){i=sL[l].NumI;j=sL[l].NumJ;r=sL[l].R;x=sL[l].X;d1=r*r+x*x;g=r/d1;b=-x/d1;m=sL[l].K;if(fabs(sL[l].K-1.0)<0.000001) //普通支路 {YG[i][i]=YG[i][i]+g;YG[j][j]=YG[j][j]+g;YB[i][i]=YB[i][i]+b+sL[l].B;YB[j][j]=YB[j][j]+b+sL[l].B;YG[i][j]=YG[i][j]-g;YG[j][i]=YG[j][i]-g;YB[i][j]=YB[i][j]-b;YB[j][i]=YB[j][i]-b;}else //变压器支路{YG[i][i]=YG[i][i]+g/m+g*(m-1)/m;YG[j][j]=YG[j][j]+g/m+g*(1-m)/m/m;YB[i][i]=YB[i][i]+b/m+b*(m-1)/m;YB[j][j]=YB[j][j]+b/m+b*(1-m)/m/m;YG[i][j]=YG[i][j]-g/m;YG[j][i]=YG[j][i]-g/m;YB[i][j]=YB[i][j]-b/m;YB[j][i]=YB[j][i]-b/m; }}/* 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;i<nB+1;i++)for(j=1;j<nB+1;j++)if(fabs(YB[i][j]-0.0)>0.000001) fprintf(fp,"Y(%3d,%-3d)=(%10.5f,%10.5f)\n",i,j,YG[i][j],YB[i][j]);if(fp!=NULL) fclose(fp);/* 节点电压附初值 */for(i=1;i<nB+1;i++){if(sB[i-1].Type==0){u[i][0]=0.0;u[i][1]=1.0;}else if(sB[i-1].Type==1){u[i][1]=sB[i-1].Volt;u[i][0]=0.0;}else if(sB[i-1].Type==2){u[i][1]=sB[i-1].Volt;u[i][0]= sB[i-1].Phase;}for(v=1;;v++)/* 迭代次数可以无限大 */{/* 节点电压附初值 */printf("迭代第%d次赋予的电压初值为e+jf:\n",v); for(i=1;i<nB+1;i++)printf("%lf,%lf\n",u[i][1],u[i][0]);printf("\n");printf("\n");/* 求偏移量 */double P_P[10];double P_Q[10];double P_UU[10];for(i=1;i<nB+1;i++){if(sB[i-1].Type==2){P_P[i]=0.0;P_Q[i]=0.0;P_UU[i]=1.05;}if(sB[i-1].Type==0){double tempP=0.0;double tempQ=0.0;for(j=1;j<nB+1;j++){tempP+=YG[i][j]*u[j][1]-YB[i][j]*u[j][0]; tempQ+=YG[i][j]*u[j][0]+YB[i][j]*u[j][1];P_P[i]=(sB[i-1].GenP-sB[i-1].LoadP)-tempP*u[i][1]-tempQ*u[i][0]; P_Q[i]=(sB[i-1].GenQ-sB[i-1].LoadQ)-tempP*u[i][0]+tempQ*u[i][1]; P_UU[i]=0.0;}if(sB[i-1].Type==1){double tempP=0.0;double tempQ=0.0;for(j=1;j<nB+1;j++){tempP+=YG[i][j]*u[j][1]-YB[i][j]*u[j][0];tempQ+=YG[i][j]*u[j][0]+YB[i][j]*u[j][1];P_P[i]=(sB[i-1].GenP-sB[i-1].LoadP)-tempP*u[i][1]-tempQ*u[i][0]; }P_UU[i]=sB[i-1].Volt*sB[i-1].Volt-u[i][1]*u[i][1]-u[i][0]*u[i][0]; P_Q[i]=0.0;}}/* 偏移量阵 */double P_PQ[6];int a=0;for(i=1;i<3;i++){P_PQ[a]=P_P[i];a=a+2;}a=1;for(i=1;i<3;i++){P_PQ[a]=P_Q[i];a=a+2;}P_PQ[4]=P_P[3];P_PQ[5]=P_UU[3];printf("迭代第%d次的偏移量为:\n",v);for(i=0;i<6;i++){printf("%f",P_PQ[i]);printf("\n");}printf("\n");printf("\n");/* 雅可比矩阵 */double H[6][6],N[6][6],J[6][6],L[6][6],R[6][6],S[6][6],aa[6],bb[6]; for(i=1;i<5;i++){ if(fabs(sB[i-1].Type-2.0)<0.000001)continue;else{for(j=1;j<5;j++)if(i!=j){H[i][j]=-YB[i][j]*u[i][1]+YG[i][j]*u[i][0];N[i][j]=YG[i][j]*u[i][1]+YB[i][j]*u[i][0];J[i][j]=-N[i][j];L[i][j]=H[i][j];R[i][j]=0;S[i][j]=0;}else{aa[i]=bb[i]=0.0;for(n=1;n<5;n++)aa[i]+=YG[i][n]*u[n][1]-YB[i][n]*u[n][0];bb[i]+=YG[i][n]*u[n][0]+YB[i][n]*u[n][1];}H[i][i]=-YB[i][i]*u[i][1]+YG[i][i]*u[i][0]+bb[i]; N[i][i]=YG[i][i]*u[i][1]+YB[i][i]*u[i][0]+aa[i]; J[i][i]=-YG[i][i]*u[i][1]-YB[i][i]*u[i][0]+aa[i]; L[i][i]=YG[i][i]*u[i][0]-YB[i][i]*u[i][1]-bb[i]; R[i][i]=2*u[i][0];S[i][i]=2*u[i][1];}}}double ss[50][50];for(i=0;i<6;i++)for(j=0;j<6;j++)ss[i][j]=0.0;for(i=1;i<3;i++)for(j=1;j<4;j++){ss[2*i-2][2*j-2]=H[i][j];ss[2*i-2][2*j-1]=N[i][j];ss[2*i-1][2*j-2]=J[i][j];ss[2*i-1][2*j-1]=L[i][j];}i=3;for(j=1;j<4;j++){ss[2*i-2][2*j-2]=H[i][j];ss[2*i-2][2*j-1]=N[i][j];ss[2*i-1][2*j-2]=R[i][j];ss[2*i-1][2*j-1]=S[i][j];}printf("迭代第%d次的雅可比矩阵为:\n",v);for(i=0;i<6;i++){for(j=0;j<6;j++)printf("%10f",ss[i][j]);printf("\n");}printf("\n");printf("\n");Gauss(ss,P_PQ,6);for(i=1;i<nB;i++){u[i][0]=u[i][0]+mn[2*(i-1)];u[i][1]=u[i][1]+mn[2*i-1];}double max;max=fabs(P_PQ[0]);for(i=0;i<=5;i++)if (max<fabs(P_PQ[i]))max=fabs(P_PQ[i]);if(fabs(max)<0.0001){printf("满足精度要求,迭代终止,迭代次数为%d\n",v); printf("\n");printf("\n");}/* 叠代循环的括号 */printf("最终求得的节点电压值为e+jf:\n");for(i=1;i<nB+1;i++)printf("%lf,%lf\n",u[i][1],u[i][0]);printf("\n");printf("\n");double uu[5],Phase[5];for(i=1;i<nB+1;i++){uu[i]=sqrt(u[i][1]*u[i][1]+u[i][0]*u[i][0]); Phase[i]=atan(u[i][0]/u[i][1]);}for(i=1;i<nB+1;i++)printf("%lf,%lf\n",uu[i],Phase[i]);*计算线路功率和平衡节点 PV节点功率*/double P[5],Q[5];double tempP=0.0;double tempQ=0.0;for(i=1;i<nB+1;i++){for(j=1;j<nB+1;j++){tempP+=YG[i][j]*u[j][1]-YB[i][j]*u[j][0]; tempQ+=YG[i][j]*u[j][0]+YB[i][j]*u[j][1];}P[i]=tempP*u[i][1]+tempQ*u[i][0];Q[i]=tempP*u[i][0]-tempQ*u[i][1];tempP=0.0;for(i=1;i<nB+1;i++)printf("节点%d注入功率为%lf,%lf\n",i,P[i],Q[i]);/* 支路功率 */double V[4][2];for(i=1;i<5;i++)for(j=0;j<3;j++)V[i][j]=u[i][j];double sP[5][5],sQ[5][5];double dsq,dsp,dp,sumgen;for(i=1;i<NBUS+1;i++){for(j=1;j<NBUS+1;j++){sP[i][j]=0.0;sQ[i][j]=0.0;}}for(l=0; l<nL; l++){i=sL[l].NumI;j=sL[l].NumJ;r=sL[l].R;x=sL[l].X;d1=r*r+x*x;g=r/d1;if(fabs(sL[l].K-1.0)<0.000001){/*Normal lines or transformers*/sP[i][j]=V[i][1]*V[i][1]*g-V[i][1]*V[j][1]*(g*cos(V[i][0]-V[j][0])+b*sin(V[i][0]-V[j][0]));sQ[i][j]=-(V[i][1]*V[i][1]*sL[l].B+V[i][1]*V[i][1]*b+V[i][1]*V[j][1]*(g*sin(V[i][0]-V[j][0])-b*cos(V[i ][0]-V[j][0])));sP[j][i]=V[j][1]*V[j][1]*g-V[i][1]*V[j][1]*(g*cos(V[j][0]-V[i][0])+b*sin(V[j][0]-V[i][0]));sQ[j][i]=-(V[j][1]*V[j][1]*sL[l].B+V[j][1]*V[j][1]*b+V[i][1]*V[j][1]*(g*sin(V[j][0]-V[i][0])-b*cos(V[j ][0]-V[i][0])));}else{/*abnormal transformer ratio*/sP[i][j]=V[i][1]*V[i][1]*g/sL[l].B/sL[l].B-V[i][1]*V[j][1]*(g*cos(V[i][0]-V[j][0])/sL[l].B+b*sin(V[i][ 0]-V[j][0])/sL[l].B);sQ[i][j]=-(V[i][1]*V[i][1]*b/sL[l].B/sL[l].B+V[i][1]*V[j][1]*(g*sin(V[i][0]-V[j][0])/sL[l].B-b*cos(V[i ][0]-V[j][0])/sL[l].B));sP[j][i]=V[j][1]*V[j][1]*g-V[i][1]*V[j][1]*(g*cos(V[j][0]-V[i][0])/sL[l].B+b*sin(V[j][0]-V[i][0])/sL[l ].B);sQ[j][i]=-(V[i][1]*V[i][1]*b+V[i][1]*V[j][1]*(g*sin(V[j][0]-V[i][0])/sL[l].B-b*cos(V[j][0]-V[i][0])/sL [l].B));}}/* 输电效率 */dsp=P[4];dsq=Q[4];for(i=0;i<NBUS;i++){dsp+=sB[i].GenP-sB[i].LoadP;dsq+=sB[i].GenQ-sB[i].LoadQ;sumgen+=sB[i].GenP;}dp=dsp/sumgen*100;/* 输出功率情况 */if((fp=fopen("功率情况.txt","w"))==NULL){printf("Can not open the file named '功率情况.txt' \n");exit(0);}fprintf(fp,"---功率情况---\n");fprintf(fp,"平衡节点功率S=%10.5f+ j%10.5f\n",P[4],Q[4]);for(i=1;i<NBUS+1;i++)for(j=1;j<NBUS+1;j++)if(fabs(sP[i][j]-0.0)>0.000001)fprintf(fp,"S(%3d,%-3d)=(%10.5f,j%10.5f)\n",i,j,sP[i][j],sQ[i][j]); fprintf(fp,"网损为%10.5f+j%10.3f,输电效率为%10.3f\n",dsp,dsq,100-dp);if(fp!=NULL) fclose(fp);return 0;}1.导纳阵Y( 1,1 )=( 1.01534, -8.19201) Y( 1,2 )=( -0.56148, 2.30208) Y( 1,3 )=( 0.00000, 3.66667) Y( 1,4 )=( -0.45386, 1.89107) Y( 2,1 )=( -0.56148, 2.30208) Y( 2,2 )=( 1.04225, -4.67651) Y( 2,4 )=( -0.48077, 2.40385) Y( 3,1 )=( 0.00000, 3.66667) Y( 3,3 )=( 0.00000, -3.33333) Y( 4,1 )=( -0.45386, 1.89107) Y( 4,2 )=( -0.48077, 2.40385) Y( 4,4 )=( 0.93463, -4.26159)2.设定电压初值01.1;01;01)0(3)0(3)0(2)0(2)0(1)0(1j jf e j jf e j jf e +=++=++=+ 3.计算功率和电压偏移;27731.0])()([41)0(11)0(1)0(141)0(11)0(1)0(11)0(11)0(1-=++--=-=∆∑∑==jj j j jj jj s s e B f G ff B e G e P P P P0.05097])()([41)0(11)0(1)0(141)0(11)0(1)0(11)0(11)0(1-=----=-=∆∑∑==j j j j j j jj s s e B f G ef B eG f Q Q Q Q同理可算出52596.0)0(22)0(2-=-=∆P P P s ,0196.0)0(22)0(2=-=∆Q Q Q s5.0)0(33)0(3=-=∆P P P s ,0.02)0(3232)0(3=-=∆U U U s4.根据求的第一次迭代时雅可比矩阵各元素的公式计算雅可比矩阵各个元素的具体值:⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤-----------⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡20000.200000066667.300003334.40052691.406629.130208.256148.00001821.182612.456148.030208.266667.3030208.256148.006298.803803.1066667.356148.030208.299265.032104.8 5.求高斯计算后的修正量:⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡∆∆∆∆∆∆=⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡∆∆∆∆∆∆-0.0000000.1276520.023566-0.108546-0.006511-0.007919-2)0(3)0(3)0(2)0(2)0(1)0(11)0()0(3)0(3)0(2)0(2)0(1)0(1U P Q P Q P e f e f e f J 6.计算各节点电压的一次近似值:12765.010855.000792.010000.197643.099349.0)0(3)0(3)1(3)0(2)0(2)1(2)0(1)0(1)1(1)0(3)0(3)1(3)0(2)0(2)1(2)0(1)0(1)1(1=∆+=-=∆+=-=∆+==∆+==∆+==∆+=f f f f f f fffe e e e e e e e e返回第三步重新迭代,并校验收敛与否,令410-=ε。
华北电力大学潮流上机课程设计报告
课程设计报告( 2011-- 2012年度第一学期)名称:电力系统潮流上机院系:电气与电子工程学院班级:电管0902学号:1091140202 学生:指导教师:麻秀设计周数:两周成绩:日期:2011年1月6日一、课程设计的目的与要求培养学生的电力系统潮流计算机编程能力,掌握计算机潮流计算的相关知识二、设计正文(详细容见附录)1、手算在此我们同样采取计算机计算这种方便快捷的方法。
具体的方法及结果见附录。
2、计算机计算通过计算机编程,我们可以很方便的求解出相关量,其具体计算方法及计算结果见附录。
3、思考题答案见附录。
三、课程设计总结或结论潮流计算是研究电力系统稳态运行的一种基本运算方法,通过对于潮流的计算,实现对潮流的控制,维护电力系统稳定,防止出现超过约束条件的情况,从而使电力系统免遭崩溃的危险。
最初求解电力系统潮流时大多是用手算,这种计算方法不但耗费时间长,精度差,而且对于大容量的电力系统无法做到很好的控制。
随着电力系统结构日趋复杂,计算量也越来越大,仅靠手算难以求解一些复杂网络的潮流。
计算机作为一种处理数据的工具,其计算速度快,准确率高,存储量大,因此它广泛的应用于大规模复杂化的电力系统网络中。
为了能使计算机能进行潮流计算,就必须编制相应的程序,使其能按照人们在程序中设定的计算流程一步一步的执行,直到计算结果达到要求的精度,得到最终想要的结果。
C语言是一种简单实用的语言,利用它进行程序设计可以大大提高电力系统潮流控制的自动化程度。
本次的潮流上机,就是要求我们利用C语言编程,进行计算机潮流计算。
这既是对我们电力系统潮流计算知识的考验,也是对我们C语言编程能力的考验。
是一次各种知识的交汇综合的运用。
通过这次潮流上机,我对电力系统潮流计算有了更深刻的认识,同时,我的C语言编程能力也得到了提高。
我明白了学习不能仅限于课本,还要做到“学以致用”的道理。
在这次潮流设计中,我遇到了由于多问题,其中既包括由于对潮流知识掌握不牢而导致的问题,也包括由于C语言编程能力有限而导致的问题。
电力系统潮流上机课程设计报告
课程设计报告一、课程设计的目的与要求培养学生的电力系统潮流计算机编程能力,掌握计算机潮流计算的相关知识二、设计正文(详细内容见附录)总体步骤如下:读入相关数据 -> 构造节点导纳阵Y -> 计算ΔP,ΔQ,构造Δf -> 构造雅克比矩阵 -> 计算潮流分布(包括迭代修正数据) -> 输出结果3 2 1母线数据1 3 1.0 0 0 0 0 02 1 1.0 0 0.8 0.6 0 03 2 1.1 0 0 0 0.4 0支路数据1 1 3 1 0.0497 0.2000 0 02 1 2 1 0.0100 0.0400 0 0接地支路1 3 0 0.33迭代数量:iteration = 3计算结果:电压相角(弧度)相角1 0 00.96653 -0.0269036 -1.541461.1 0.05205522.98255母线上的P和Q注入:编号 P Q1 0.425894 0.2458942 -0.8 -0.63 0.4 0.0587502线路潮流分布:编号 I J Sij Sji1 1 3 -0.38481+j-0.396925 -0.139061+j0.5920072 1 2 0.810705+j0.642819 0.423529+j-0.905883功率损耗:Ploss = 0.0258945 Qloss = -0.2953569 9 0母线数据1 3 1.04 0. 0. 0. 71.641 27.045922 2 1.025 0. 0. 0. 163. 6.653663 2 1.025 0. 0. 0. 85. -10.85974 1 1. 0. 0. 0. 0. 0.5 1 1. 0. 125. 50. 0. 0.6 1 1. 0. 90. 30. 0. 0.7 1 1. 0. 0. 0. 0. 0.8 1 1. 0. 100. 35. 0. 0.9 1 1. 0. 0. 0. 0. 0. 支路数据1 4 12 0. 0.0576 0. 1.2 7 2 2 0. 0.0625 0. 1.3 9 3 2 0. 0.0586 0. 1.4 7 8 1 0.0085 0.072 0.149 05 9 8 1 0.0119 0.1008 0.209 06 7 5 1 0.032 0.161 0.306 07 9 6 1 0.039 0.17 0.358 08 5 4 1 0.01 0.085 0.176 09 6 4 1 0.017 0.092 0.158 0迭代数量:iteration = 4计算结果:电压相角(弧度)相角1.04 0 01.025 0.165578 9.486941.025 0.0833249 4.774171.0105 -0.039445 -2.260050.9727 -0.070866 -4.060350.9890 -0.064734 -3.709031.0113 0.067145 3.847140.9972 0.013673 0.783421.0180 0.0355712.03811母线上的P和Q注入:编号 P Q1 0.71641 0.5468462 1.63 0.3040183 0.85 0.1424344 0 05 -1.25 -0.56 -0.9 -0.37 0 08 -1 -0.359 0 0线路潮流分布:编号 I J Sij Sji1 4 1 -0.719499+j-0.503352 -0.719499+j0.5468462 7 2 -1.63+j-0.140465 -1.63+j0.3040183 9 3 -0.85+j-0.101004 -0.85+j0.1424344 7 8 0.763816+j0.0521904 0.717905+j-0.3345885 9 8 0.242231+j0.0755265 0.193826+j-0.3301066 7 5 0.866184+j-0.0280722 0.775227+j-0.4739837 9 6 0.607769+j-0.121426 0.533117+j-0.436418 5 4 -0.407805+j-0.461515 -0.305617+j0.4004949 6 4 -0.306286+j-0.248276 -0.222811+j0.200074功率损耗:Ploss = 0.0494989 Qloss = -0.156702三、课程设计总结或结论本次课程实验有如下的收获:1.学会使用基本的c++语法进行程序编写,掌握了指针与数组的关系与其应用。
潮流上机课程设计报告华电
《电力系统潮流上机》课程设计报告院系班级:学号:学生姓名:指导教师:设计周数成绩:日期:年月日一、课程设计的目的与要求培养学生的电力系统潮流计算机编程能力,掌握计算机潮流计算的相关知识二、设计正文(详细内容见附录)1.手算: 要求应用牛顿-拉夫逊法或P-Q 分解法手算求解,要求精度为0.001MW 。
节点1为平衡节点,电压︒∠=00.11U ,节点2为PQ 节点,负荷功率6.08.0~2j S +=,节点3是PV 节点,1.1,4.033==U P ,两条支路分别为04.001.013j Z +=,2.005.012j Z +=,对地支路33.030j y =。
2.计算机计算:编写潮流计算程序,要求如下:2.1据给定的潮流计算任务书整理潮流计算的基础数据:节点的分类,线路模型,等值变压器模型,电压等级的归算,标幺值的计算;2.2基础数据的计算机存储:节点数据,支路数据(包括变压器); 2.3用牛顿-拉夫逊法计算;2.4根据所选潮流计算方法画流程图,划分出功能模块,有数据输入模块,导纳阵形成模块,解线性方程组模块,计算不平衡功率模块,形成雅可比矩阵模块,解修正方程模块,计算线路潮流,网损,PV 节点无功功率和平衡节点功率,数据输出模块; 2.5据上述模块编制程序并上机调试程序,得出潮流计算结果; 2.6源程序及其程序中的符号说明集、程序流图简单系统如下图所示,支路数据如下:41.01.012j z +=,3.013j z =,5.012.014j z +=,40.008.024j z +=01528.01,202,10j y y ==,0192.01,404,10j y y ==,01413.02,404,20j y y ==1.1=k节点数据如下:18.030.01j S --= ,13.055.02j S --= , 5.03=S ,10.13=U ,o U 005.14∠= 324,10y 1,40y1)节点导纳阵#include <stdio.h> #include <math.h> #include <fstream.h> #include "LF.h"//form node conductance matrixintMakeY( intnB, intnL, Line* sL, double** YG, double** YB ) {inti,j,l;double r,x,d1,g,b,t;for(i=0;i<nB;i++)for(j=0;j<nB;j++){ YG[i][j]=0.0;YB[i][j]=0.0;}for(i=0;i<nL;i++){r=sL[i].R;x=sL[i].X;g=r/(r*r+x*x);b=-x/(r*r+x*x);switch(sL[i].Type){case 1://Linebreak;case 2://Transformerg*=1/sL[i].K;b*=1/sL[i].K;break;}YG[sL[i].NumI][sL[i].NumI]+=g;YG[sL[i].NumJ][sL[i].NumJ]+=g;YG[sL[i].NumI][sL[i].NumJ]-=g;YG[sL[i].NumJ][sL[i].NumI]-=g;YB[sL[i].NumI][sL[i].NumI]+=b+sL[i].B;YB[sL[i].NumJ][sL[i].NumJ]+=b+sL[i].B;YB[sL[i].NumI][sL[i].NumJ]-=b;YB[sL[i].NumJ][sL[i].NumI]-=b; }printf("实部:\n");for(i=0;i<nB;i++){for(j=0;j<nB;j++)printf("%lf\t",YG[i][j]);printf("\n");}printf("虚部:\n");for(i=0;i<nB;i++){for(j=0;j<nB;j++)printf("%lf\t",YB[i][j]);printf("\n");}/* Check the Y matrix */ofstreamfout("out.txt");fout<< "--------------Y Matrix--------------------" <<endl;for(i=0;i<nB;i++){for(j=0;j<nB;j++)fout<< YG[i][j] << "+j" << YB[i][j] << "\t";fout<<endl;}fout.close();return 0;}2)计算功率不平衡量#include <stdio.h>#include <math.h>#include <fstream.h>#include "LF.h"//form delta p and delta qintCalDeltaPQ( intnpv, intnpq, Bus* bus, double** YG, double** YB, int* p_Jtobus, double* deltaf ){intk,i,j;for(k=0;k<npv+npq*2;k++){ i=p_Jtobus[k];if(k<npv){ deltaf[k]=bus[i].GenP-bus[i].LoadP;for(j=0;j<npv+npq+1;j++){deltaf[k]-=bus[i].Volt*bus[j].Volt*(YG[i][j]*cos(bus[i].Phase-bus[j].Phase)+YB[i][j ]*sin(bus[i].Phase-bus[j].Phase));}printf("PV节点%d的有功功率是%lf\n",i,deltaf[k]);}if(k<npq+npv&&k>=npv){ deltaf[k]=bus[i].GenP-bus[i].LoadP;for(j=0;j<npv+npq+1;j++){deltaf[k]-=bus[i].Volt*bus[j].Volt*(YG[i][j]*cos(bus[i].Phase-bus[j].Phase)+YB[i][j ]*sin(bus[i].Phase-bus[j].Phase));}printf("PQ节点%d的有功功率是%lf\n",i,deltaf[k]);}if(k<npq*2+npv&&k>=npv+npq){deltaf[k]=bus[i].GenQ-bus[i].LoadQ;for(j=0;j<npv+npq+1;j++){deltaf[k]-=bus[i].Volt*bus[j].Volt*(YG[i][j]*sin(bus[i].Phase-bus[j].Phase)-YB[i][j ]*cos(bus[i].Phase-bus[j].Phase));}printf("PQ节点%d的无功功率是 %lf\n",i,deltaf[k]);}}return 0;}3)雅各比矩阵的计算/*Purpose: for undergraduate courseTask: Load FlowCopyright @ NCEPU, Liu Chongru*/#include <stdio.h>#include <math.h>#include <fstream.h>#include "LF.h"//form Jacobian matrixintFormJacobian( intnpv, intnpq, Bus* bus, double** YG, double** YB, int* p_Jtobus, double** Jac ){ intnp = npv+npq,j,k,i,m;//TODOdouble a[14],q[14];for(k=0;k<npv+npq*2;k++){i=p_Jtobus[k];a[i]=0;q[i]=0;if(k<np)//H N{for(j=0;j<np+1;j++)if(j!=i){a[i]+=bus[j].Volt*(YG[i][j]*sin(bus[i].Phase-bus[j].Phase)-YB[i][j]*cos(bus[i].Phase-bu s[j].Phase));q[i]+=bus[j].Volt*(YG[i][j]*cos(bus[i].Phase-bus[j].Phase)+YB[i][j]*sin(bus[i].Phase-bu s[j].Phase));}for(m=0;m<npv+npq*2;m++){j=p_Jtobus[m];if(j!=i){if(m<np)Jac[k][m]=bus[i].Volt*bus[j].Volt*(YG[i][j]*sin(bus[i].Phase-bus[j].Phase)-YB[i][j]*cos (bus[i].Phase-bus[j].Phase));//Form HelseJac[k][m]=bus[i].Volt*bus[j].Volt*(YG[i][j]*cos(bus[i].Phase-bus[j].Phase)+YB[i][j]*sin (bus[i].Phase-bus[j].Phase));//Form N}else if(j==i){if(m<np)Jac[k][m]=-bus[i].Volt*a[i];//Form HelseJac[k][m]=bus[i].Volt*q[i]+2*bus[i].Volt*bus[i].Volt*YG[i][j];//Form N}}}else{for(j=0;j<np+1;j++)if(j!=i){a[i]+=bus[j].Volt*(YG[i][j]*sin(bus[i].Phase-bus[j].Phase)-YB[i][j]*cos(bus[i].Phase-bu s[j].Phase));q[i]+=bus[j].Volt*(YG[i][j]*cos(bus[i].Phase-bus[j].Phase)+YB[i][j]*sin(bus[i].Phase-bu s[j].Phase));}for(m=0;m<npv+npq*2;m++){j=p_Jtobus[m];if(j!=i){if(m<np)Jac[k][m]=-bus[i].Volt*bus[j].Volt*(YG[i][j]*cos(bus[i].Phase-bus[j].Phase)+YB[i][j]*si n(bus[i].Phase-bus[j].Phase)); //Form JelseJac[k][m]=bus[i].Volt*bus[j].Volt*(YG[i][j]*sin(bus[i].Phase-bus[j].Phase)-YB[i][j] *cos(bus[i].Phase-bus[j].Phase)); //Form L }else if(j==i){ if(m<np)Jac[k][m]=bus[i].Volt*q[i];elseJac[k][m]=bus[i].Volt*a[i]-2*bus[i].Volt*bus[i].Volt*YB[i][j];} }}}for(i=0;i<np+npq;i++){for(int j=0;j<np+npq;j++){printf("%d %d %f ",i,j,Jac[i][j]);}printf("\n");}//Output the matrix to check the Jacobian matrixofstreamfout("out.txt",ios::app);fout<< "--------------Jacobian Matrix--------------------" <<endl;for(i=0; i<np+npq;i++ ){for(j=0; j<np+npq; j++ )fout<<Jac[i][j] << "\t";fout<<endl;}fout.close();return 0;}4)线路损耗//8.calculate the power flowdouble* p_Pij, *p_Qij, *p_Pji, *p_Qji;p_Pij = new double[nL];p_Qij = new double[nL];p_Pji = new double[nL];p_Qji = new double[nL];int x1,x2;for( i=0; i<nL; i++ ){ x1=line[i].NumI;x2=line[i].NumJ;if(line[i].Type==1){p_Pij[i]=bus[x1].Volt*bus[x1].Volt*(-YG[x1][x2])-bus[x1].Volt*bus[x2].Volt*((-YG[x1][x2 ])*cos(bus[x1].Phase-bus[x2].Phase)+(-YB[x1][x2])*sin(bus[x1].Phase-bus[x2].Phase));p_Qij[i]=-bus[x1].Volt*bus[x1].Volt*(line[i].B+(-YB[x1][x2]))-bus[x1].Volt*bus[x2]. Volt*((-YG[x1][x2])*sin(bus[x1].Phase-bus[x2].Phase)-(-YB[x1][x2])*cos(bus[x1].Phase-bu s[x2].Phase));p_Pji[i]=bus[x2].Volt*bus[x2].Volt*(-YG[x2][x1])-bus[x2].Volt*bus[x1].Volt*((-YG[x2][x1 ])*cos(bus[x2].Phase-bus[x1].Phase)+(-YB[x2][x1])*sin(bus[x2].Phase-bus[x1].Phase));p_Qji[i]=-bus[x2].Volt*bus[x2].Volt*(line[i].B+(-YB[x2][x1]))-bus[x2].Volt*bus[x1]. Volt*((-YG[x2][x1])*sin(bus[x2].Phase-bus[x1].Phase)-(-YB[x2][x1])*cos(bus[x2].Phase-bu s[x1].Phase));}else{p_Pij[i]=bus[x1].Volt*bus[x1].Volt*(-YG[x1][x2])/line[i].K-bus[x1].Volt*bus[x2].Vol t*((-YG[x1][x2])*cos(bus[x1].Phase-bus[x2].Phase)+(-YB[x1][x2])*sin(bus[x1].Phase-bus[x 2].Phase));p_Qij[i]=-bus[x1].Volt*bus[x1].Volt*((-YB[x1][x2])/line[i].K+line[i].B)-bus[x1].Volt*bu s[x2].Volt*((-YG[x1][x2])*sin(bus[x1].Phase-bus[x2].Phase)-(-YB[x1][x2])*cos(bus[x1].Ph ase-bus[x2].Phase));p_Pji[i]=bus[x2].Volt*bus[x2].Volt*(-YG[x2][x1]*line[i].K)-bus[x2].Volt*bus[x1].Volt*(( -YG[x2][x1])*cos(bus[x2].Phase-bus[x1].Phase)+(-YB[x2][x1])*sin(bus[x2].Phase-bus[x1].P hase));p_Qji[i]=-bus[x2].Volt*bus[x2].Volt*((-YB[x2][x1])*line[i].K+line[i].B)-bus[x2].Volt*bu s[x1].Volt*((-YG[x2][x1])*sin(bus[x2].Phase-bus[x1].Phase)-(-YB[x2][x1])*cos(bus[x2].Ph ase-bus[x1].Phase));}}//p and q of PH bus and PV busint s=0;double p[9],q[9],Ps[9],Qs[9],PS=0,QS=0;for( i=0; i<nB; i++ ){p[i]=0;q[i]=0;for(int j=0; j<nB; j++ ){p[i]+=(bus[j].Volt*(YG[i][j])*cos(bus[j].Phase)-bus[j].Volt*(YB[i][j])*sin(bus[j].Phas e));q[i]-=(bus[j].Volt*(YG[i][j])*sin(bus[j].Phase)+bus[j].Volt*(YB[i][j])*cos(bus[j].Phase ));}Ps[i]=bus[i].Volt*cos(bus[i].Phase)*p[i]-bus[i].Volt*sin(bus[i].Phase)*q[i]; Qs[i]=bus[i].Volt*cos(bus[i].Phase)*q[i]+bus[i].Volt*sin(bus[i].Phase)*p[i];} for(i=0;i<nB;i++){ PS+=Ps[i];QS+=Qs[i];}printf("PS=%7.7f,QS=%7.7f\n",PS,QS);}//lossdoublePloss=0, Qloss=0;for( i=0; i<nB; i++ ){Ploss+=p_Pij[i]+p_Pji[i];Qloss+=p_Qij[i]+p_Qji[i];}5)程序流图如下6--------------Y Matrix--------------------0+j-17.3611 0+j0 0+j0 0+j17.3611 0+j0 0+j0 0+j0 0+j0 0+j00+j0 0+j-16 0+j0 0+j0 0+j0 0+j0 0+j16 0+j0 0+j00+j0 0+j0 0+j-17.0648 0+j0 0+j0 0+j0 0+j0 0+j0 0+j17.06480+j17.3611 0+j0 0+j0 3.30738+j-39.3089 -1.36519+j11.6041 -1.94219+j10.5107 0+j0 0+j0 0+j00+j0 0+j0 0+j0 -1.36519+j11.6041 2.55279+j-17.3382 0+j0 -1.1876+j5.97513 0+j0 0+j00+j0 0+j0 0+j0 -1.94219+j10.5107 0+j0 3.2242+j-15.8409 0+j0 0+j0 -1.28201+j5.588240+j0 0+j16 0+j0 0+j0 -1.1876+j5.97513 0+j0 2.80473+j-35.4456 -1.61712+j13.698 0+j00+j0 0+j0 0+j0 0+j0 0+j0 0+j0 -1.61712+j13.698 2.77221+j-23.3032 -1.15509+j9.784270+j0 0+j0 0+j17.0648 0+j0 0+j0 -1.28201+j5.58824 0+j0 -1.15509+j9.78427 2.4371+j-32.1539--------------Jacobian Matrix--------------------16.4 0 0 0 0 -16.4 0 0 0 0 0 0 0 00 17.4915 0 0 0 0 0 -17.4915 0 0 0 0 0 00 0 40.1703 -11.6041 -10.5107 0 0 0 3.30738 -1.36519 -1.94219 0 0 00 0 -11.6041 17.5792 0 -5.97513 0 0 -1.36519 2.55279 0 -1.1876 0 00 0 -10.5107 0 16.0989 0 0 -5.58824 -1.94219 0 3.2242 0 0 -1.28201-16.4 0 0 -5.97513 0 36.0731 -13.698 0 0 -1.1876 0 2.80473 -1.61712 00 0 0 0 0 -13.698 23.4822 -9.78427 0 0 0 -1.61712 2.77221 -1.155090 -17.4915 0 0 -5.58824 0 -9.78427 32.864 0 0 -1.28201 0 -1.15509 2.43710 0 -3.30738 1.36519 1.94219 0 0 0 38.4474 -11.6041 -10.5107 0 0 00 0 1.36519 -2.55279 0 1.1876 0 0 -11.6041 17.0972 0 -5.97513 0 00 0 1.94219 0 -3.2242 0 0 1.28201 -10.5107 0 15.5829 0 0 -5.588240 0 0 1.1876 0 -2.80473 1.61712 0 0 -5.97513 0 34.8181 -13.698 00 0 0 0 0 1.61712 -2.77221 1.15509 0 0 0 -13.698 23.1242 -9.784270 0 0 0 1.28201 0 1.15509 -2.4371 0 0 -5.58824 0 -9.78427 31.4437--------------Jacobian Matrix--------------------16.9269 0 0 0 0 -16.9269 0 0 0 0 0 1.68793 0 00 18.1691 0 0 0 0 0 -18.1691 0 0 0 0 0 0.8836270 0 41.9297 -12.1301 -11.1536 0 0 0 3.54272 -1.0628 -1.76646 0 0 00 0 -12.0455 18.0609 0 -6.01539 0 0 -1.78138 1.30819 0 -2.10262 0 00 0 -11.0484 0 16.8144 0 0 -5.76607 -2.33608 0 2.42598 0 0 -1.97778-16.9269 0 0 -6.36224 0 37.9476 -14.6585 0 0 -0.357534 0 3.05959 -0.930027 00 0 0 0 0 -14.4721 24.8873 -10.4152 0 0 0 -2.509 1.86088 -1.473890 -18.1691 0 0 -6.05157 0 -10.4721 34.6928 0 0 -0.733327 0 -0.9919732.66270 0 -3.52149 1.0628 1.76646 0 0 0 42.0299 -12.1301 -11.1536 0 0 00 0 1.78138 -3.884 0 2.10262 0 0 -12.0455 17.2037 0 -6.01539 0 00 0 2.33608 0 -4.31386 0 0 1.97778 -11.0484 0 16.2993 0 0 -5.766071.68793 0 0 0.357534 0 -2.97549 0.930027 0 0 -6.36224 0 38.3226 -14.6585 00 0 0 0 0 2.509 -3.98289 1.47389 0 0 0 -14.4721 24.2355 -10.41520 0.883627 0 0 0.733327 0 0.991973 -2.60893 0 0 -6.05157 0 -10.4721 34.8585 --------------Jacobian Matrix--------------------16.7457 0 0 0 0 -16.7457 0 0 0 0 0 1.63043 0 00 18.0388 0 0 0 0 0 -18.0388 0 0 0 0 0 0.8501960 0 41.3695 -11.8919 -10.9686 0 0 0 3.48069 -1.02775 -1.73712 0 0 00 0 -11.8057 17.6918 0 -5.8861 0 0 -1.7602 1.28091 0 -2.0217 0 00 0 -10.8651 0 16.5476 0 0 -5.68251 -2.29737 0 2.40655 0 0 -1.91027-16.7457 0 0 -6.21183 0 37.3041 -14.3465 0 0 -0.382862 0 2.95313 -0.937485 00 0 0 0 0 -14.1704 24.4052 -10.2348 0 0 0 -2.42909 1.86079 -1.433530 -18.0388 0 0 -5.94693 0 -10.2872 34.273 0 0 -0.757656 0 -0.9892082.598470 0 -3.48089 1.02775 1.73712 0 0 0 41.3703 -11.8919 -10.9686 0 0 00 0 1.7602 -3.78189 0 2.0217 0 0 -11.8057 16.6941 0 -5.8861 0 00 0 2.29737 0 -4.20764 0 0 1.91027 -10.8651 0 15.9488 0 0 -5.682511.63043 0 0 0.382862 0 -2.95077 0.937485 0 0 -6.21183 0 37.3083 -14.3465 00 0 0 0 0 2.42909 -3.86262 1.43353 0 0 0 -14.1704 23.7059 -10.23480 0.850196 0 0 0.757656 0 0.989208 -2.59706 0 0 -5.94693 0 -10.2872 34.2743 --------------Jacobian Matrix--------------------16.7435 0 0 0 0 -16.7435 0 0 0 0 0 1.63 0 00 18.0374 0 0 0 0 0 -18.0374 0 0 0 0 0 0.850 0 41.3625 -11.8888 -10.9664 0 0 0 3.48016 -1.02713 -1.73662 0 0 00 0 -11.8026 17.6871 0 -5.8845 0 0 -1.76008 1.28053 0 -2.02045 0 00 0 -10.8628 0 16.5444 0 0 -5.68158 -2.29703 0 2.40632 0 0 -1.90929-16.7435 0 0 -6.20987 0 37.296 -14.3426 0 0 -0.383399 0 2.95114 -0.937742 00 0 0 0 0 -14.1667 24.3994 -10.2326 0 0 0 -2.42794 1.86097 -1.433020 -18.0374 0 0 -5.94567 0 -10.285 34.2681 0 0 -0.758139 0 -0.9892032.597340 0 -3.48016 1.02713 1.73662 0 0 0 41.3625 -11.8888 -10.9664 0 0 00 0 1.76008 -3.78053 0 2.02045 0 0 -11.8026 16.6871 0 -5.8845 0 00 0 2.29703 0 -4.20632 0 0 1.90929 -10.8628 0 15.9444 0 0 -5.681581.63 0 0 0.383399 0 -2.95114 0.937742 0 0 -6.20987 0 37.296 -14.3426 00 0 0 0 0 2.42794 -3.86097 1.43302 0 0 0 -14.1667 23.6994 -10.23260 0.85 0 0 0.758139 0 0.989203 -2.59734 0 0 -5.94567 0 -10.285 34.2681--------------iteration---------------iteration = 4--------------voltage magnitude and angle--------------------1.04 0 01.025 0.161967 9.280011.025 0.0814153 4.664761.02579 -0.0386902 -2.216790.995631 -0.0696178 -3.988811.01265 -0.0643572 -3.68741.02577 0.064921 3.71971.01588 0.0126979 0.7275371.03235 0.0343257 1.96672-------------bus P and Q------------------1 0.71641 0.2704592 1.63 0.06653663 0.85 -0.1085974 0 05 -1.25 -0.56 -0.9 -0.37 0 08 -1 -0.359 0 0----------------line flow--------------------NUM------i-------j-----------begin------------end--------------1 4 1 -0.71641+j-0.239232 0.71641+j0.270462 7 2 -1.63+j0.0917816 1.63+j0.06653653 9 3 -0.85+j0.149553 0.85+j-0.1085974 7 8 0.763799+j-0.00797398 -0.759046+j-0.1070415 9 8 0.241834+j0.0311946 -0.240954+j-0.2429586 7 5 0.866201+j-0.0838079 -0.843202+j-0.1131287 9 6 0.608166+j-0.180748 -0.594627+j-0.1345668 5 4 -0.406798+j-0.386872 0.409373+j0.2289319 6 4 -0.305372+j-0.165433 0.307037+j0.0102993--------------------Ploss and Qloss-----------------Ploss = 0.0471901 Qloss = -0.9574833.思考题3.1潮流计算的方法有哪些?各有何特点?答:潮流计算分为手算和机算两大类,其中机算又有高斯-赛德尔迭代法、牛顿-拉夫逊迭代法、P-Q 分解法等算法。
潮流计算上机报告 华电
《电力系统潮流上机》课程设计报告院系:电气与电子工程学院班级:学号:学生姓名:指导教师:刘宝柱设计周数:两周成绩:日期:2012年1月5日一、课程设计的目的与要求培养学生的电力系统潮流计算机编程能力,掌握计算机潮流计算的相关知识 二、设计正文(详细内容见附录)1. 手算: 要求应用牛顿-拉夫逊法或P-Q 分解法手算求解,要求精度为0.001MW 。
节点1为平衡节点,电压︒∠=00.11U &,节点2为PQ 节点,负荷功率6.08.0~2j S +=,节点3是PV 节点,1.1,4.033==U P ,两条支路分别为04.001.013j Z +=,2.005.012j Z +=,对地支路33.030j y =。
2. 计算机计算 1.导纳阵Y( 1,1 )=( 1.01534, -8.19201) Y( 1,2 )=( -0.56148, 2.30208) Y( 1,3 )=( 0.00000, 3.66667) Y( 1,4 )=( -0.45386, 1.89107) Y( 2,1 )=( -0.56148, 2.30208) Y( 2,2 )=( 1.04225, -4.67651) Y( 2,4 )=( -0.48077, 2.40385) Y( 3,1 )=( 0.00000, 3.66667) Y( 3,3 )=( 0.00000, -3.33333) Y( 4,1 )=( -0.45386, 1.89107) Y( 4,2 )=( -0.48077, 2.40385) Y( 4,4 )=( 0.93463, -4.26159) 2.设定电压初值3.计算功率和电压偏移;同理可算出52596.0)0(22)0(2-=-=∆P P P s ,0196.0)0(22)0(2=-=∆Q Q Q s5.0)0(33)0(3=-=∆P P P s ,0.02)0(3232)0(3=-=∆U U U s4.根据求的第一次迭代时雅可比矩阵各元素的公式计算雅可比矩阵各个元素的具体值:5.求高斯计算后的修正量: 6.计算各节点电压的一次近似值: 返回第三步重新迭代,并校验收敛与否,令410-=ε。
潮流上机课程设计华电
潮流上机课程设计-华电————————————————————————————————作者:————————————————————————————————日期:ﻩ课程设计报告( 2011—2012年度第一学期)名称:电力系统潮流上机院系:电气与电子工程学院班级:学号:学生姓名:指导教师:设计周数:两周成绩:日期: 2011年12月19日一、课程设计的目的与要求培养学生的电力系统潮流计算机编程能力,掌握计算机潮流计算的相关知识二、设计正文(详细内容见附录)1.手算2.计算机计算3.思考题三、课程设计总结或结论潮流计算是研究电力系统稳态运行的一种基本计算,最初求解电力系统潮流时大多使用手算,但随着电力系统结构的日趋复杂,计算量也越来越大。
复杂电力系统潮流计算中,由于节点数量巨大,所形成的修正方程已经无法通过手算方式解决,尤其是需要迭代次数较多时,手算所需要的时间太长,计算机潮流计算无疑为解决这一问题提供了极大的便利。
计算机潮流计算可以迅速解决复杂网络的潮流计算问题,这是由于无论系统的复杂程度如何,其节点与支路的类型是固定的,所以只需要输入节点与支路的数据,就可以解决任何一个复杂网络的潮流计算问题。
即只需要一次编程,就可以基本上解决所有复杂网络的计算。
需要注意的是,在使用牛顿—拉弗逊发计算潮流时,对于初值要选择比较接近它们的精确解,否则迭代过程可能不收敛。
潮流计算C语言程序编程过程中需要注意的是,C语言无法实现复数运算,需要将得到的值的实部与虚部分开储存并计算。
这个过程复杂并且容易出错,编写程序是需要注意。
另外需要注意的一点是:C语言数组的编号是从零开始的,在程序编写过程中应注意下标的对应。
通过这一次的电力系统潮流计算编程,我不仅对C语言的编程有了更深刻的理解,也对《电力系统分析》这门课程进行了查漏补缺和巩固,对电力系统的运行也有了更加深入的了解,受益匪浅。
四、参考文献1.《电力系统计算:电子数字计算机的应用》,西安交通大学等合编。
电力系统潮流计算课程设计报告
课程设计报告学生姓名:学号:学院:班级:题目: 电力系统潮流计算课程设计课设题目及要求一 .题目原始资料1、系统图:两个发电厂分别通过变压器和输电线路与四个变电所相连。
2、发电厂资料: 母线1和2为发电厂高压母线,发电厂一总装机容量为( 300MW ),母线3为机压母线,机压母线上装机容量为( 100MW ),最大负荷和最小负荷分别为50MW 和20MW ;发电厂二总装机容量为( 200MW )。
3、变电所资料:(一) 变电所1、2、3、4低压母线的电压等级分别为:35KV 10KV 35KV10KV(二) 变电所的负荷分别为:60MW 40MW 40MW 50MW(三) 每个变电所的功率因数均为cos φ=0.85;变电所1变电所母线 电厂一 电厂二(四) 变电所1和变电所3分别配有两台容量为75MVA 的变压器,短路损耗414KW ,短路电压(%)=16.7;变电所2和变电所4分别配有两台容量为63MVA 的变压器,短路损耗为245KW ,短路电压(%)=10.5;4、输电线路资料:发电厂和变电所之间的输电线路的电压等级及长度标于图中,单位长度的电阻为Ω17.0,单位长度的电抗为Ω0.402,单位长度的电纳为S -610*2.78。
二、 课程设计基本内容:1. 对给定的网络查找潮流计算所需的各元件等值参数,画出等值电路图。
2. 输入各支路数据,各节点数据利用给定的程序进行在变电所在某一负荷情况下的潮流计算,并对计算结果进行分析。
3. 跟随变电所负荷按一定比例发生变化,进行潮流计算分析。
1) 4个变电所的负荷同时以2%的比例增大;2) 4个变电所的负荷同时以2%的比例下降3) 1和4号变电所的负荷同时以2%的比例下降,而2和3号变电所的负荷同时以2%的比例上升;4. 在不同的负荷情况下,分析潮流计算的结果,如果各母线电压不满足要求,进行电压的调整。
(变电所低压母线电压10KV 要求调整范围在9.5-10.5之间;电压35KV 要求调整范围在35-36之间)5. 轮流断开支路双回线中的一条,分析潮流的分布。
电力系统潮流上机设计教学指导书
电力系统潮流上机设计教学指导书一、综合实验的概述1.目的:培养学生对电力销售环节的分析能力,把握电力零售的相关知识。
2.使用的工具:零售市场仿真实验软件3.差不多要求:把握电力销售环节的交易模型;销售电价的分类;电费运算;分析不同负荷特性的电力用户执行不同电价类别的差异。
4.考核方法:总成绩=出勤情形+设计报告+面试成绩5.参考教材:区域电力市场电价机制张粒子、郑华北京:中国电力出版社, 2004二、综合实验的要求1.依照各类用户负荷数据,把握用户负荷特性分析方法。
2.把握销售电价中的电价结构。
3.把握各类电价制度的电费结算模型。
4.把握各类电价制度的特点、适用的用户范畴。
5.对EXCEL的把握:打开文件、储存文件、另存文件;读取运算数据;制作分析表格;依照分析数据制作展现图。
三、综合实验的内容实验一:电力用户负荷特性分析(一)基础理论知识预备:电力用户负荷特性1)电力用户用电负荷曲线:将电力用户的有功负荷,按时刻序列绘制成的图形,称为负荷曲线。
(1) 日负荷曲线:标示出一天内每小时(每半小时、每15分钟)的负荷值,反映一天内负荷动态。
(2) 年负荷曲线:标示出一年内每月的最高负荷值,反映一年内各月负荷动态。
2)要紧的负荷特性指标及运算(1) 最高负荷:报告期(日、月、季、年)内记录的负荷中,数值最大的一个。
(2) 最低负荷:报告期(日、月、季、年)内记录的负荷中,数值最小的一个。
(3) 平均负荷:报告期内瞬时负荷的平均值,即负荷时刻数列时序平均数。
(4) 负荷率:平均负荷与最高负荷的比率。
负荷率(%)=⨯)k k W W 报告期最高负荷()报告期平均负荷(100% (5) 最小负荷率:报告期最低负荷与最高负荷的比率。
最小负荷率(%)=⨯)报告期最高负荷()报告期最低负荷(W W k k 100%(6) 峰谷差:最高负荷与最低负荷之差。
(7) 峰谷差率:峰谷差与最高负荷的比率。
峰谷差率(%)=⨯)k ()k (W W 最高负荷峰谷差100% (8) 同时率:综合最高负荷与各组成用户绝对最高负荷之和的比率,说明用电负荷同时性程度。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
华址电力*孑《电力系统潮流上机》课程设计报告院系班级:学号:学生姓名: 指导教师: 设计周数成绩:日期:年月日q 「十•-课程课程设计报告、课程设计的目的与要求培养学生的电力系统潮流计算机编程能力,掌握计算机潮流计算的相关知识、设计正文(详细内容见附录)1.手算:要求应用牛顿-拉夫逊法或P-Q分解法手算求解,要求精度为0.001MW节点1为平衡节点,电压U, 1.0 0,节点2为PQ节点,负荷功率S20.8 j0.6,节点3 是PV 节点,P3 04U3 1.1,两条支路分别为Z13 0.01 j0.04,Z12 0.05 j0.2,对地支路y30j 0.33。
» 十•-课程课程设计报告2•计算机计算:编写潮流计算程序,要求如下:2.1据给定的潮流计算任务书整理潮流计算的基础数据:节点的分类,线路模型,等值变压器 模型,电压等级的归算,标幺值的计算;2.2基础数据的计算机存储:节点数据,支路数据(包括变压器) ;2.3用牛顿-拉夫逊法计算;2.4根据所选潮流计算方法画流程图,划分出功能模块,有数据输入模块,导纳阵形成模块, 解线性方程组模块,计算不平衡功率模块,形成雅可比矩阵模块,解修正方程模块,计算 线路潮流,网损,PV 节点无功功率和平衡节点功率,数据输出模块;2.5据上述模块编制程序并上机调试程序,得出潮流计算结果; 2.6源程序及其程序中的符号说明集、程序流图简单系统如下图所示,支路数据如下: 乙2 0.1 j0.41,乙3j0.3, z 140.12 j0.5, z 24 0.08 j0.40y io,2 y 20,1 j 0.01528, y 10,4y 40,1j 0.0192, y 20,4y 40,2 j 0.01413k 1.1节点数据如下:S 1 0.30 j0.18,S 2 0.55 j0.13, S 30.5,U 31.10,U 41.05 0oZ 13Z 13y40,1y20,41) 节点导纳阵#in elude <stdio.h> #in elude <math.h> #in elude <fstream.h> #i nclude "LF.h"y10,4Z14k(k丄 y 20,1Z 12Z13S 4Z 24S 2y40,2//form node conductance matrixintMakeY( intnB, intnL, Line* sL, double** YG, double** YB ) {in ti,j,l;double r,x,d1,g,b,t;for(i=0;i< nB;i++)for(j=0;j< nB;j++){ YG[i][j]=0.0;YB[i][j]=O.O;}for(i=0;i <n L;i++){r=sL[i].R;x=sL[i].X; g=r/(r*r+x*x); b=-x/(r*r+x*x); switch(sL[i].Type){case 1://L inebreak;case 2://Tra nsformerg*=1/sL[i].K;b*=1/sL[i].K; break;} YG[sL[i].Numl][sL[i].Numl]+=g;YG[sL[i].NumJ][sL[i].NumJ]+=g; YG[sL[i].Numl][sL[i].NumJ]-=g;YG[sL[i].NumJ][sL[i].Numl]-=g; YB[sL[i].Numl][sL[i].Numl]+=b+sL[i].B; YB[sL[i].NumJ][sL[i].NumJ]+=b+sL[i].B;YB[sL[i].Numl][sL[i].NumJ]-=b;YB[sL[i].NumJ][sL[i].Numl]-=b; }prin tf("实部:\n");for(i=0;i< nB;i++){for(j=0;j< nB;j++)prin tf("%lf\t",YG[i][j]);prin tf("\n");}printf("虚部:\n”);for(i=0;i< nB;i++){for(j=0;j< nB;j++)prin tf("%lf\t",YB[i][j]);prin tf("\n");}/* Check the Y matrix */ofstreamfout("out.txt");fout<< " ------------- Y Matrix ------------------- " <<e ndl;for(i=0;i< nB;i++){for(j=0;j< nB;j++)fout<< YG[i][j] << "+j" << YB[i][j] << "\t";fout<<en dl;}fout.close();return 0;}2) 计算功率不平衡量#in elude <stdio.h>#in clude <math.h>#in clude <fstream.h>#i nclude "LF.h"//form delta p and delta qintCalDeltaPQ( intnpv, intnpq. Bus* bus, double** YG, double** YB, int* p_Jtobus, double* deltaf ) {in tk,i,j;for(k=0;k< npv+ npq*2;k++){ i=p_Jtobus[k];if(k <n pv){ deltaf[k]=bus[i].Ge nP-bus[i].LoadP;for(j=0;j< npv+ npq+1;j++){deltaf[k]-=bus[i].Volt*bus[j].Volt*(YG[i][j]*cos(bus[i] .P hase-bus[j].Phase)+YB[i][j]*si n(bus[i].Phase-bus[j].Phase));}printf("PV 节点%d的有功功率是%lf\n",i,deltaf[k]);}if(k<n pq+npv&&k>=n pv){ deltaf[k]=bus[i].Ge nP-bus[i].LoadP;for(j=0;j <n pv+ npq+1;j++){deltaf[k]-=bus[i].Volt*bus[j].Volt*(YG[i][j]*cos(bus[i] .P hase-bus[j].Phase)+YB[i][j]*si n(bus[i].Phase-bus[j].Phase));}printf("PQ 节点%d的有功功率是%lf\n",i,deltaf[k]);}if(k<n pq*2+npv&&k>=n pv+ npq){deltaf[k]=bus[i].Ge nQ-bus[i].LoadQ;for(j=0;j< npv+ npq+1;j++){deltaf[k]-=bus[i].Volt*bus[j].Volt*(YG[i][j]*si n(bus[i] .P hase-bus[j].Phase)-YB[i][j ]*cos(bus[i]. Phase-bus[j]. Phase));}printf("PQ 节点%d的无功功率是%lf\n",i,deltaf[k]);}}return 0;}3) 雅各比矩阵的计算/*Purpose: for un dergraduate courseTask: Load Flow(++r L +d u v 「o H D 」04z E 」ozl/二m _o A *±±o >三s n q*±±o >曰s n q *cxl +曰 b *±±0>曰s n q H E =±Q 3 ①s oHl w o d //se*±±o >m s n q d E =±Q 3(d u v E g(■llUD七①s oN lu 」o 丄注(oselldssnq —① selld-二snq)u一 s s =m A +a?s e l l ds s n q -e s e l l d -E;s n q )s 8s =o A )*±±o >-=s n q *±±o >2s n q H E =±Q 3① s oHlu」o丄注(oselldssnq —①selld-二snq)s o o s u m A -o s e l l ds s n q -①selld.三snq)u一 s s =o A )*±±o >s s n q *±±o>三旦 N o e (■iri D七X E一(++E Z *b d u +>d u v E o H E )」04二① selld.nq-① selld.三snq)u一s *==8A +o s e l l ds s n q -e s e l l d m s nq )s 8s =o A )*±±o >-=s n q ¥r((① set|dnq-① selld.曰s n q )s 8s =m A -o s e l l d s s n q -e s e l l d」=s n q )u _s s =o A )*±±o >-=s n q ¥(■ir i D七(++r L+d u v「o HD」04NH /、(d u v &一o "=bo "=e-兰snqo苇I d上(++X CXI * bd u +>d u V M O艾)」04于匸b T L roQqnopo n -of e-lu._Mrbdu+>duH d£u一 )I 03**2qnop-snqo 苇d*lu一m A **2qnopO A **2qnop-snq *sn8-bduc一>d £u一 )UQq8e「lu 」0tu_x u ro E UQqooerE 」ow=LTZn=① p n Q u算AlTEe①」1S4V①p n Q u算A l r l l ro EV ① p n Qq l ;十•-课程课程设计报告if(j!=i){j +=bus[j].Volt*(YG[i][j]*si n(bus[i]. Phase-bus[j].Phase)-YB[i][j]*cos(bus[i].P hase-bu j].Phase));i +=bus[j].Volt*(YG[i][j]*cos(bus[i]. Phase-bus[j]. Phase)+YB[i][j]*si n(bus[i].P hase-bu j].Phase));}for(m=0;m< npv+ npq*2;m++) {j=p_Jtobus[m]; if(j!=i){if(m<np)Jac[k][m]=-bus[i].Volt*bus[j].Volt*(YG[i][j]*cos(bus[i] .P hase-bus[j].Phase)+YB[i][j]*si n (bus[i]. Phase-bus[j].Phase)); //Form J elseJac[k][m]=bus[i].Volt*bus[j].Volt*(YG[i][j]*si n(bus[i]. Phase-bus[j].Phase)-YB[i][j] *cos(bus[i].Phase-bus[j].Phase)); //Form L }else if(j==i){ if(m<np)Jac[k][m]=bus[i].Volt*q[i];elseJac[k][m]=bus[i].Volt*a[i]-2*bus[i].Volt*bus[i].Volt*YB[i][j];}}} }for(i=0;i <np+n pq;i++) {for(i nt j=0;j< np+n pq;j++){pri ntf("%d %d %f ",i,j,Jac[i][j]);} prin tf("\n");}//Output the matrix to check the Jacobia n matrix ofstreamfout("out.txt",ios::app); fout<< " ------------- J acobia n Matrix ------------------ " <<e ndl; for(i=0; i<np+n pq;i++ ) {for(j=0; j< np+n pq; j++ )fout<<Jac[i][j] << "\t"; fout<<e ndl;} fout.close(); return 0; }4) 线路损耗〃8.calculate the power flowdouble* p_Pij, *p_Qij, *p_Pji, *p_Qji; p_Pij = new double[ nL];p_Qij = newdouble[ nL]; p_Pji = newdouble[ nL]; p_Qji = new double[ nL];int x1,x2;for( i=0; i<nL; i++ ) {x1=lin e[i].Numl; x2=li ne[i].NumJ;a s q sq 十•-课程课程设计报告if(li ne[i].Type==1){ p_Pij[i]=bus[x1].Volt*bus[x1].Volt*(-YG[x1][x2])-bus[x1].Volt*bus[x2].Volt*((-YG[x1][x2 ])*cos(bus[x1] .P hase-bus[x2].Phase)+(-YB[x1][x2])*si n(bus[x1].Phase-bus[x2].Phase));P_Qij[i]=-bus[x1].Volt*bus[x1].Volt*(li ne[i].B+(-YB[x1][x2]))-bus[x1].Volt*bus[x2].Volt*((-YG[x1][x2])*si n(bus[x1].Phase-bus[x2].Phase)-(-YB[x1][x2])*cos(bus[x1].Phase-bu s[x2 ].P hase));p_Pji[i]=bus[x2].Volt*bus[x2].Volt*(-YG[x2][x1])-bus[x2].Volt*bus[x1].Volt*((-YG[x2][x1 ])*cos(bus[x2 ]. Phase-bus[x1].Phase)+(-YB[x2][x1])*si n(bus[x2].Phase-bus[x1].Phase));p_Qji[i]=-bus[x2].Volt*bus[x2].Volt*(li ne[i].B+(-YB[x2][x1]))-bus[x2].Volt*bus[x1].Volt*((-YG[x2][x1])*si n(bus[x2].Phase-bus[x1].Phase)-(-YB[x2][x1])*cos(bus[x2].Phase-bu s[x1].P hase));}elsep_Pij[i]=bus[x1].Volt*bus[x1].Volt*(-YG[x1][x2])/li ne[i].K-bus[x1].Volt*bus[x2].Vol t*((-YG[x1j[x2])*cos(bus[x1].Phase-bus[x2].Phase)+(-YB[x1][x2])*si n(bus[x1]. Phase-bus[x 2].Phase));p_Qij[i]=-bus[x1].Volt*bus[x1].Volt*((-YB[x1][x2])/li ne[i].K+l in e[i].B)-bus[x1].Volt*bus[x2].Volt*((-YG[x1][x2])*si n(bus[x1] .P hase-bus[x2].Phase)-(-YB[x1][x2])*cos(bus[x1] .Ph ase-bus[x2].Phase));p_Pji[i]=bus[x2].Volt*bus[x2].Volt*(-YG[x2][x1]*li ne[i].K)-bus[x2].Volt*bus[x1].Volt*(( -YG[x2][x1])*cos(bus[x2].Phase-bus[x1].Phase)+(-YB[x2][x1])*si n(bus[x2].Phase-bus[x1].P hase));p_Qji[i]=-bus[x2].Volt*bus[x2].Volt*((-YB[x2][x1])*li ne[i].K+li ne[i].B)-bus[x2].Volt*bus[x1].Volt*((-YG[x2][x1])*si n(bus[x2].Phase-bus[x1].Phase)-(-YB[x2][x1])*cos(bus[x2] .Ph ase-bus[x1] .P hase));}}//p and q of PH bus and PV busint s=0;double p[9],q[9],Ps[9],Qs[9],PS=0,QS=0;for( i=0; i<nB; i++ ){p[i]=0;q[i]=0;for(i nt j=0; j< nB; j++ ){p[i]+=(bus[j].Volt*(YG[i][j])*cos(bus[j].Phase)-bus[j].Volt*(YB[i][j])*si n(bus[j] .P has e));q[i]-=(bus[j].Volt*(YG[i][j])*si n(bus[j].Phase)+bus[j].Volt*(YB[i][j])*cos(bus[j].Phase ));}Ps[i]=bus[i].Volt*cos(bus[i].Phase)*p[i]-bus[i].Volt*si n(bus[i].Phase)*q[i];Qs[i]=bus[i].Volt*cos(bus[i].Phase)*q[i]+bus[i].Volt*si n(bus[i].Phase)*p[i];}for(i=0;i< nB;i++){ PS+=Ps[i];QS+=Qs[i];}prin tf("PS=%7.7f,QS=%7.7f\n",PS,QS);}//lossdoublePloss=0, Qloss=0;for( i=0; i<nB; i++ ){Ploss+=p_Pij[i]+p_Pji[i];Qloss+=p_Qij[i]+p_Qji[i];}5) 程序流图如下»』•-课程课程设计报告启动输入原始数据6)得到的数据(out.txt)q十•-课程课程设计报告--------- 丫 Matrix -----------------0+j-17.3611 O+jO 0+j0 0+j17.3611 0+j0 0+j0 0+j0 0+j0 0+j00+j0 0+j-16 O+jO O+jO O+jO O+jO 0+j16 O+jO O+jOO+jO O+jO O+j-17.O648 O+jO O+jO O+jO O+jO O+jO O+j17.O648O+j17.3611 O+jO O+jO 3.3O738+j-39.3O89 -1.36519+j11.6O41 -1.94219+j1O.51O7 O+jO O+jO O+jO O+jO O+jO O+jO -1.36519+j11.6O41 2.55279+j-17.3382 O+jO -1.1876+j5.97513 O+jO O+jO O+jO O+jO O+jO -1.94219+j1O.51O7 O+jO 3.2242+j-15.84O9 O+jO O+jO -1.282O1+j5.58824 O+jO O+j16O+jO O+jO -1.1876+j5.97513 O+jO 2.8O473+j-35.4456 -1.61712+j13.698 O+jOO+jO O+jO O+jO O+jO O+jO O+jO -1.61712+j13.698 2.77221+j-23.3O32 -1.155O9+j9.78427 O+jO O+jO O+j17.O648 O+jO O+jO -1.282O1+j5.58824 O+jO -1.155O9+j9.78427 2.4371+j-32.1539 ------------- J acobia n Matrix ------------------16.4 0 0 0 0-16.4 0 0 0 0 0 0 0 00 17.4915 0 0 0 00 -17.4915 0 0 0 0 0 00 0 40.1703 -11.6041 -10.5107 0 0 0 3.30738 -1.36519 -1.94219 00 0-11.6041 17.5792 0 -5.97513 0 0 -1.36519 2.55279 0-1.1876 0 00 0 -10.5107 0 16.0989 0 0 -5.58824 -1.94219 0 3.22420 0-1.28201 -16.4 0 0-5.97513 036.0731 -13.698 0 0-1.1876 0 2.80473 -1.61712 0 0 0 0 00 -13.698 23.4822 -9.78427 0 0 0-1.61712 2.77221 -1.155090 -17.4915 0 0-5.58824 0 -9.78427 32.864 00 -1.28201-1.15509 2.43710 0 -3.30738 1.36519 1.94219 0 0 0 38.4474 -11.6041 -10.5107 0 0 00 0 1.36519 -2.55279 0 1.18760 0-11.6041 17.0972 0-5.97513 0 00 0 1.94219 0 -3.2242 0 0 1.28201 -10.5107 0 15.5829 0 0-5.58824 0 0 01.1876 0 -2.80473 1.61712 0 0 -5.97513 0 34.8181 -13.698 00 0 0 0 0 1.61712 -2.77221 1.15509 0 0 0-13.698 23.1242 -9.784270 0 1.28201 0 1.15509 -2.4371 0 0 -5.58824 0 -9.78427 31.4437Jacobian MatrixJacobian Matrix16.7457 0 0 0 0 -16.7457 0 0 0 01.63043 0 00 18.0388 0 0 0 0 0 -18.0388 0 0 00 00.85019641.3695 -11.8919 -10.9686 0 03.48069 -1.02775 -1.73712 00 016.9269 0-16.9269 0 1.6879318.1691 0-18.16910.88362741.9297 -12.1301 -11.1536 0 3.54272 -1.0628 -1.76646 0-12.0455 18.0609 -6.01539-1.78138 1.30819-2.10262-11.0484 016.8144 -5.76607 -2.33608 02.42598-1.97778 -16.9269-6.36224 037.9476 -14.6585-0.3575343.05959 -0.930027-14.4721 24.8873 -10.4152 -2.509 1.86088 -1.47389-18.1691 2.6627-6.05157 0-10.4721 34.6928-0.733327-0.9919731.68793 -3.52149 1.781382.33608 0 0.883627 0 1.0628 1.76646 0 -3.884 0-4.31386 0.357534 0 0 2.5092.102621.97778 42.0299 -12.0455 -11.0484 -2.97549 -3.98289 0.930027 0 1.47389 00 0.733327 0 0.991973 -2.60893 -12.1301 -11.1536 0 17.2037 016.2993 -6.36224 0 0-14.4721 0 -6.05157 -6.01539-5.7660738.3226 24.2355 -14.6585 0-10.4152-10.4721 34.8585q十•-课程课程设计报告0 -11.8057 17.6918 0 -5.8861 0 0-1.7602 1.28091 0-2.0217 0 00 0-10.8651 0 16.5476 0 0 -5.68251 -2.29737 0 2.40655 0 0 -1.91027 -16.7457 0 0 0 -6.21183 0 37.3041 -14.3465 0 0 -0.382862 0 2.95313 -0.9374850 0 0 0 0 -14.1704 24.4052 -10.2348 0 0 0 -2.42909 1.86079 -1.43353 0 -18.0388 0 0-5.94693 0 -10.2872 34.273-0.757656 0 -0.9892082.59847------------- Jacobia n Matrix ------------------16.7435 0 0 0 0-16.7435 00 01.63 00 18.0374 0 0 0 0 0-18.0374 0 0 0 0 00.850 41.3625 -11.8888 -10.9664 0 0 0 3.48016 -1.02713 -1.73662 00 00 0 -11.8026 17.6871 0 -5.8845 0 0 -1.76008 1.28053 0-2.02045 0 0-10.8628 016.5444 0-5.68158 -2.29703 0 2.40632 0-1.909290 0 -3.48089 1.02775 1.73712 0 0 041.3703 -11.8919 -10.9686 00 01.7602-3.78189 02.02170 0-11.8057 16.6941 0 -5.8861 0 0 0 0 2.29737 0 -4.20764 0 01.91027 -10.8651 0 15.9488 0 0 -5.68251 1.63043 0 0 0.382862 0 -2.95077 0.937485 0 0 -6.21183 0 37.3083 -14.3465 0 0 00 02.42909 -3.86262 1.43353 0 0-14.1704 23.7059 -10.23480 0.850196 0 0 0.757656 0 0.989208 -2.59706 0 0 -5.94693 0-16.7435 00 0 -6.20987 0 37.296 -14.3426 00 -0.383399 0 2.95114 -0.9377420 0 0-14.1667 24.3994 -10.2326 0 0 0-2.42794 1.86097 -1.43302 0 -18.0374 0 0 -5.94567 0 -10.285 34.2681 0 0 -0.758139 0 -0.989203 0-3.48016 1.02713 1.73662 00 41.3625 -11.8888 -10.9664 00 00 0 1.76008 -3.78053 0 2.02045 0 0 -11.8026 16.6871 0-5.8845 0 0 0 0 2.29703 0 -4.20632 0 0 1.90929 -10.8628 0 15.9444 0 0 -5.681582.59734 -10.2872 34.27431.63 0 00.383399 0 -2.95114 0.937742 00 0 02.42794 -3.86097 1.43302 0 0 0.85 00.758139 0 0.989203 -2.59734 00 0 -14.1667 23.6994 -10.23260 -5.94567 0 -10.285 34.2681------------ iteration --------------iterati on = 4------------ voltage mag nitude and an gle 1.04 0 01.025 0.161967 9.280011.025 0.0814153 4.664761.02579 -0.0386902 -2.216790.995631 -0.0696178 -3.988811.01265 -0.0643572 -3.68741.02577 0.064921 3.71971.01588 0.0126979 0.7275371.03235 0.0343257 1.96672------------ bus P and Q ----------------1 0.71641 0.2704592 1.63 0.06653663 0.85 -0.1085974 0 05 -1.25 「-0.56 -0.9 -0.37 0 08 -1 -0.359 0 0-------------- line flow -------------------NUM ----- i ----- -j ---------- b egin ----------- end1 4 1 -0.71641+j-0.239232 0.71641+j0.270462 7 2 -1.63+j0.0917816 1.63+j0.06653653 9 3 -0.85+j0.149553 0.85+j-0.1085974 7 8 0.763799+j-0.00797398 -0.759046+j-0.1070415 9 8 0.241834+j0.0311946 -0.240954+j-0.2429586 7 5 0.866201+j-0.0838079 -0.843202+j-0.1131287 9 6 0.608166+j-0.180748 -0.594627+j-0.1345668 5 4 -0.406798+j-0.386872 0.409373+j0.2289319 6 4 -0.305372+j-0.165433 0.307037+j0.0102993--Ploss and Qloss ----------Ploss = 0.0471901 Qloss = -0.9574833•思考题3.1潮流计算的方法有哪些?各有何特点?答:潮流计算分为手算和机算两大类,其中机算又有高斯-赛德尔迭代法、牛顿-拉夫逊迭代法、P-Q分解法等算法。