《电力系统潮流上机》课程设计报告院系:电气与电子工程学院班级:电气1205学号:1121181223学生姓名:王城指导教师:孙英云设计周数:两周成绩:日期:2015年7月7日课程课程设计报告1一、课程设计的目的与要求培养学生的电力系统潮流计算机编程能力,掌握计算机潮流计算的相关知识二、设计正文(详细内容见附录)1.手算2.计算机计算3.思考题三、课程设计总结或结论(详细内容见附录)四、参考文献1.《电力系统计算:电子数字计算机的应用》,西安交通大学等合编。北京:水利电力出版社;2.《现代电力系统分析》,王锡凡主编,科学出版社;3.《电力系统稳态分析》,陈珩,中国电力出版社,1995年,第三版;附录(设计流程图、程序、表格、数据等)课程课程设计报告24.机算潮流程序及结果//dierti.cpp:定义控制台应用程序的入口点。//#includestdafx.hstructLine//线路结构体{intNum,NumI,NumJ;//线路号左节点名右节点名floatR,X,B,K;//电阻电抗电纳变比(K等于1为普通支路,不等于1为变压器支路的变比)};structBus//节点结构体{intNum;floatVolt,Phase,GenP,GenQ,LoadP,LoadQ;intType;};#includestdio.h#includestring.h#includemath.h#includestdlib.h#defineNBUS4#defineNLINE4/*Globalvariables*/intnL,nB,nVA,nSH;floatX[NBUS];intL;doubledef[2*NBUS];doublemn[50];voidGauss(doublea[50][50],doubleb[50],intn)/*定义高斯法*/课程课程设计报告3{intJS[50];inti,j,k;floatd,t,x[50];FILE*fp;intL=1;for(i=0;i50;i++)JS[i]=0;for(k=0;kn;k++){d=0.0;for(j=k;jn;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;in;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;jn;j++)a[k][j]=a[k][j]/a[k][k];/*对角元上的元素消为1*/b[k]=b[k]/a[k][k];for(i=k+1;in;i++){for(j=k+1;jn;j++)a[i][j]=a[i][j]-a[i][k]*a[k][j];/*使下三角阵的元素为0*/课程课程设计报告4b[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;jn;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;in;i++){fprintf(fp,%lf,x[i]);mn[i]=x[i];fprintf(fp,\n);}fclose(fp);if(fp!=NULL)fclose(fp);}int_tmain(intargc,_TCHAR*argv[]){FILE*fp;FILE*fpout;inti,j,k,l,h,n,v;inti1,i2,i3,kp,kq;floatd1,d2,d3,d4,d5,d6,r,x,g,b,tt,LL,e,ps,qs,shsh,m;课程课程设计报告5structLinesL[NLINE];structBussB[NBUS];floatYG[NBUS+1][NBUS+1],YB[NBUS+1][NBUS+1];doubleu[50][2];i1=i2=i3=0;d1=d2=d3=d4=d5=d6=ps=qs=0.0;for(i=0;iNBUS;i++)if((fp=fopen(in.txt,r))==NULL){printf(Cannotopenthefilenamed'in.txt'\n);exit(0);}fscanf(fp,%d,%d,%d,&nB,&nL,&nSH);for(i=0;inB;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].Type=i2;};for(i=0;inL;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;}课程课程设计报告6if(fp!=NULL)fclose(fp);/*MakeYMatrix*/for(i=1;inB+1;i++)for(j=1;jnB+1;j++){YG[i][j]=0.0;YB[i][j]=0.0;};for(l=0;lnL;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//变压器支路课程课程设计报告7{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;}}/*ChecktheYmatrix*/if((fp=fopen(GGBB.txt,w))==NULL){printf(Cannotopenthefilenamed'GGBB.txt'\n);exit(0);}fprintf(fp,---YMatrix---\n);for(i=1;inB+1;i++)for(j=1;jnB+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;inB+1;i++){if(sB[i-1].Type==0){u[i][0]=0.0;u[i][1]=1.0;}elseif(sB[i-1].Type==1){u[i][1]=sB[i-1].Volt;u[i][0]=0.0;}elseif(sB[i-1].Type==2){u[i][1]=sB[i-1].Volt;课程课程设计报告8u[i][0]=sB[i-1].Phase;}}for(v=1;;v++)/*迭代次数可以无限大*/{/*节点电压附初值*/printf(迭代第%d次赋予的电压初值为e+jf:\n,v);for(i=1;inB+1;i++)printf(%lf,%lf\n,u[i][1],u[i][0]);printf(\n);printf(\n);/*求偏移量*/doubleP_P[10];doubleP_Q[10];doubleP_UU[10];for(i=1;inB+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){doubletempP=0.0;doubletempQ=0.0;for(j=1;jnB+1;j++){tempP+=YG[i][j]*u[j][1]-YB[i][j]*u[j][0];课程课程设计报告9tempQ+=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){doubletempP=0.0;doubletempQ=0.0;for(j=1;jnB+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;}}/*偏移量阵*/doubleP_PQ[6];inta=0;for(i=1;i3;i++){P_PQ[a]=P_P[i];a=a+2;}a=1;for(i=1;i3;i++){P_PQ[a]=P_Q[i];a=a+2;课程课程设计报告10}P_PQ[4]=P_P[3];P_PQ[5]=P_UU[3];printf(迭代第%d次的偏移量为:\n,v);for(i=0;i6;i++){printf(%f,P_PQ[i]);printf(\n);}printf(\n);printf(\n);/*雅可比矩阵*/doubleH[6][6],N[6][6],J[6][6],L[6][6],R[6][6],S[6][6],aa[6],bb[6];for(i=1;i5;i++){if(fabs(sB[i-1