电力系统潮流计算C程序_第1页
电力系统潮流计算C程序_第2页
电力系统潮流计算C程序_第3页
电力系统潮流计算C程序_第4页
电力系统潮流计算C程序_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

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

文档简介

1、电力系统潮流计算注:这是一个基于Nl-R法的潮流计算通用程序,仅提供了子程序,需要做些处理才能成为一个可运行的计算程序!此程序非我原创,仅与大家共享!/*这里提供的是电力系统潮流计算机解法的五个子程序,采用的方法是Newton_Raphson*法.程序中所用的变量说明如下:M: 网络N:网络节点总数.18的PQ节点数.*L:网络的支路总数.N0:雅可比矩阵的行数.*N1:N0+1K:打印开关.K=1,则打印;否则,不打印.*K1:子程序PLSC中判断输入电压的形式.K1=1,则为极座标形式.否则*为直角坐标形式.*值.*D:有功及无功功率误差的最大G(I,J):Ybus(实部).*B(I,J)

2、:Ybus(虚部).*导.*纳.*G1(I):B1(I):C1(I):支路的串联电支路的串联电纳.支路的pie型对称接地电C(I,J):节点J支路不对称接地电纳.*纳.CO(I):节点的接地电S1(I):第I节点的起始节点号.E1(I):第I节点的终止节点号.*P(I):第I节点的注入有功功率.*Q(I):第I节点的注入无功功率.*Q0(I):P0(I):第I节点有功功率误差.第I节点无功功率误差.*V0(I):第I节点(PV节点)的电压误差(平方误*值.*V(I): 第 I 节点的电压误差幅E(I): 第 I 节点的电压的实部.*F(I):第I节点的电压的虚部.JM(I,J):Jacoby矩

3、阵的第I行J列元素.*A(I,J):修正方程的增广矩阵,三角化矩阵的第I束后A 矩阵的最后一列存放修正的列元素,运算结*解.*P1(I):支路由S1(I)率.*节点注入的有功功*Q1(I):支路由S1(I)率.*节点注入的无功功*P2(I):支路由E1(I)率.*节点注入的有功功*Q2(I):支路由E1(I)率.*节点注入的无功功*P3(I):支路的有功功率损耗.*耗.*度.Q3(I):支路的无功功率损ANGLE(I):第I节点电压的角*/#include<math.h>#include<stdio.h>#definef1(i)(i-1)/*把习惯的一阶矩阵的下标转化为

4、C语言数组下标*/#definef2(i,j,n)(i-1)*(n)+j-1)/*把习惯的二阶矩阵的下标转化为C语言数组下标*/*本子程序根据所给的支路导纳及有关信息,形成结点*导纳矩阵,如打印参数K=1,则输出电导矩阵G和电纳矩B*voidybus(intn,intl,intm,float*g,float*b,float*g1,float*b1,float*c1,float*c,float*co,intk,int*s1,int*e1)externFILE*file4;FILE*fp;inti,j,io,i0;intpos1,pos2;intst,en;if(file4=NULL)fp=std

5、out;elsefp=file4;/*输出到文件*/*初始化矩阵G,B*/for(i=1;i<=n;i+)for(j=1;j<=n;j+)pos2=f2(i,j,n);gpos2=0;bpos2=0;/*计算支路导纳*/for(i=1;i<=l;i+)/*计算对角元*/pos1=f1(i);st=s1pos1;en=e1pos1;pos2=f2(st,st,n);gpos2+=g1pos1;bpos2+=b1pos1+c1pos1;pos2=f2(en,en,n);gpos2+=g1pos1;bpos2+=b1pos1+c1pos1;/*计算非对角元*/pos2=f2(st,

6、en,n);gpos2-=g1pos1;bpos2-=b1pos1;gf2(en,st,n)=gf2(st,en,n);bf2(en,st,n)=bf2(st,en,n);/*计算接地支路导纳*/for(i=1;i<=n;i+)/*对称部分*/bf2(i,i,n)+=cof1(i);/*非对称部分*/for(j=1;j<=l;j+)bf2(i,i,n)+=cf2(i,j,l);if(k!=1)return;/*如果K不为1,则返回;否则,打印导纳矩阵*/fprintf(fp,"nBUSADMITTANCEMATRIXY(BUS):");fprintf(fp,&q

7、uot;n*ARRAY G*”);for(io=1;io<=n;io+=5)i0=(io+4)>n?n:(io+4);fprintf(fp,"n");for(j=io;j<=i0;j+)fprintf(fp,"%13d",j);for(i=1;i<=n;i+)fprintf(fp,"n%2d",i);for(j=io;j<=i0;j+)fprintf(fp,"%13.6f",gf2(i,j,n);fprintf(fp,"n");fprintf(fp,"n*

8、ARRAY B*”);for(io=1;io<=n;io+=5)i0=(io+4)>n?n:(io+4);fprintf(fp,"n");for(j=io;j<=i0;j+)fprintf(fp,"%13d",j);for(i=1;i<=n;i+)fprintf(fp,"n%2d",i);for(j=io;j<=i0;j+)fprintf(fp,"%13.6f",bf2(i,j,n);fprintf(fp,"n");fprintf(fp,"n*”/* 本子

9、程序根据所给的功率及电压等数据* 求出功率及电压误差量,并返回最大有功功率* 以用于与给定误差比较.如打印参数K=1,则输* 出P0,Q0(对PQ击点),V0(对PV结点).*/*voiddpqc(float*p,float*q,float*p0,float*q0,float*v,float*v0,intm,intn,float*e,float*f,intk,float*g,float*b,float*dd)externFILE*file4;FILE*fp;inti,j,l;intpos1,pos2;floata1,a2,d1,d;if(file4=NULL)fp=stdout;/*输出到屏幕

10、*/elsefp=file4;/* 输出到文件*/l=n-1;if(k=1)fprintf(fp,"nCHANGEOFP0,V*2,P0(I),Q0(I),V0(I)");fprintf(fp,"nIP0(I)Q0(I)");for(i=1;i<=l;i+)a1=0;a2=0;pos1=f1(i);for(j=1;j<=n;j+)/*a1,a2对应课本p185式(4-86)中括号内的式子*/pos2=f2(i,j,n);a1+=gpos2*ef1(j)-bpos2*ff1(j);a2+=gpos2*ff1(j)+bpos2*ef1(j);/*

11、计算式(4-86)(4-87)中的deltaPi*/p0pos1=ppos1-epos1*a1-fpos1*a2;if(i<=m)/*计算PQ击点中的deltaQi*/q0pos1=qpos1-fpos1*a1+epos1*a2;else/*计算PV结点中的deltaVi平方*/v0pos1=vpos1*vpos1-epos1*epos1-fpos1*fpos1;/*输出结果*/if(k=1)if(i<m)fprintf(fp,"n%2d%15.6e%15.6e",i,p0pos1,q0pos1);elseif(i=m)fprintf(fp,"n%2d

12、%15.6e%15.6e",i,p0pos1,q0pos1);fprintf(fp,"nIP0(I)V0(I)");elsefprintf(fp,"n%2d%15.6e%15.6e",i,p0pos1,v0pos1);/*找到deltaP和deltaQ中的最小者,作为收敛指标,存在dd中*/d=0;for(i=1;i<=l;i+)pos1=f1(i);d1=p0pos1>0?p0pos1:-p0pos1;if(d<d1)d=d1;if(i<=m)d1=q0pos1>0?q0pos1:-q0pos1;if(d<

13、d1)d=d1;(*dd)=d;/*阵.*本子程序根据节点导纳及电压求Jacoby矩阵,用于求*电压修正量,如打印参数K=1,则输出Jacoby矩*对应于课本P186式(4-89)(4-90)*/*voidjmcc(intm,intn,intn0,float*e,float*f,float*g,float*b,float*jm,intk)externFILE*file4;FILE*fp;inti,j,i1,io,i0,ns;intpos1,pos2;if(file4=NULL)fp=stdout;elsefp=file4;/*初始化矩阵jm*/for(i=1;i<=n0;i+)for(j

14、=1;j<=n0;j+)jmf2(i,j,n0)=0;ns=n-1;/*去掉一个平衡结点*/*计算式(4-89)(4-90)*/for(i=1;i<=ns;i+)/*计算式(4-90)*/for(i1=1;i1<=n;i1+)/*pos1是式(4-90)中的j*/pos1=f1(i1);/*pos2是式(4-90)中的ij*/pos2=f2(i,i1,n);if(i<=m)/*i是PQ击点*/*计算式(4-90)中的Jii等式右侧第一部分*/jmf2(2*i-1,2*i-1,n0)+=gpos2*fpos1+bpos2*epos1;/*计算式(4-90)中的Lii等式右

15、侧第一部分*/jmf2(2*i-1,2*i,n0)+=-gpos2*epos1+bpos2*fpos1;/*计算式(4-90)中的Hii等式右侧第一部分*/jmf2(2*i,2*i-1,n0)+=-gpos2*epos1+bpos2*fpos1;/*计算式(4-90)中的Nii等式右侧第一部分*/jmf2(2*i,2*i,n0)+=-gpos2*fpos1-bpos2*epos1;/*pos2是式(4-90)中的ii*/pos2=f2(i,i,n);/*pos1是式(4-90)中的i*/pos1=f1(i);if(i<=m)/*i是PQ击点*/*计算式(4-90)中的Jii*/jmf2(

16、2*i-1,2*i-1,n0)+=-gpos2*fpos1+bpos2*epos1;/*计算式(4-90)中的Lii*/jmf2(2*i-1,2*i,n0)+=gpos2*epos1+bpos2*fpos1;/*计算式(4-90)中的Hii*/jmf2(2*i,2*i-1,n0)+=-gpos2*epos1-bpos2*fpos1;/*计算式(4-90)中的Jii*/jmf2(2*i,2*i,n0)+=-gpos2*fpos1+bpos2*epos1;if(i>m)/*PV结点*/*计算式(4-90)中的Rii*/jmf2(2*i-1,2*i-1,n0)=-2*epos1;/*计算式(4

17、-90)中的Sii*/jmf2(2*i-1,2*i,n0)=-2*fpos1;/*计算式(4-89)*/for(j=1;j<=ns;j+)if(j!=i)/*pos1是式(4-89)中的i*/pos1=f1(i);/*pos2是式(4-89)中的ij*/pos2=f2(i,j,n);/*计算式(4-89)中的Nij*/jmf2(2*i,2*j,n0)=bpos2*epos1-gpos2*fpos1;/*计算式(4-89)中的Hij*/jmf2(2*i,2*j-1,n0)=-gpos2*epos1-bpos2*fpos1;if(i<=m)/*i是PQ击点*/*计算式(4-89)中的L

18、ij(=-Hij)*/jmf2(2*i-1,2*j,n0)=-jmf2(2*i,2*j-1,n0);/*计算式(4-89)中的Jij(=Nij)*/jmf2(2*i-1,2*j-1,n0)=jmf2(2*i,2*j,n0);else/*i是PV结点*/*计算式(4-89)中的Rij(=0)*/jmf2(2*i-1,2*j-1,n0)=0;/*计算式(4-89)中的Sij(=0)*/jmf2(2*i-1,2*j,n0)=0;if(k!=1)return;/*输出Jacoby矩阵*/fprintf(fp,"nJMATRIX(C)");for(io=1;io<=n0;io+

19、=5)i1=(io+4)>n0?n0:(io+4);fprintf(fp,"n");for(j=io;j<=i1;j+)fprintf(fp,"%10d",j);for(i=1;i<=n0;i+)fprintf(fp,"n%2d",i);for(j=io;j<=i1;j+)fprintf(fp,"%12.6f",jmf2(i,j,n0);fprintf(fp,"n");/*本子程序用选列主元素的高斯消元法求解组*性方程组求各结点电压修正量,如打印参数K=1,则*输出增广矩

20、阵变换中的上三角及电压修正量.如果*无唯一解,则给出信息,并停止程序运行.*/voidsevc(floata,intn0,intk,intn1)externFILE*file4;FILE*fp;inti,j,l,n2,n3,n4,i0,io,j1,i1;floatt0,t,c;if(file4=NULL)fp=stdout;elsefp=file4;for(i=1;i<=n0;i+)l=i;for(j=i;j<=n0;j+)if(fabs(af2(j,i,n1)>fabs(af2(l,i,n1)l=j;/*找到这行中的最大元*/if(l!=i)/*行列交换*/for(j=i;

21、j<=n1;j+)t=af2(i,j,n1);af2(i,j,n1)=af2(l,j,n1);af2(l,j,n1)=t;if(fabs(af2(i,i,n1)-0)<1e-10)/*对角元近似于0,无解*/printf("nNoSolutionn");exit(1);t0=af2(i,i,n1);for(j=i;j<=n1;j+)/*除对角元*/af2(i,j,n1)/=t0;if(i=n0)/*最后一行,不用消元*/continue;/*消元*/j1=i+1;for(i1=j1;i1<=n0;i1+)c=af2(i1,i,n1);for(j=i;

22、j<=n1;j+)af2(i1,j,n1)-=af2(i,j,n1)*c;if(k=1)/*输出上三角矩*/fprintf(fp,"nTrianglarAngmentexMatrix");for(io=1;io<=n1;io+=5)i0=(io+4)>n1?n1:(io+4);fprintf(fp,"n");fprintf(fp,"");for(i=io;i<=i0;i+)fprintf(fp,"%12d",i);for(i=1;i<=n0;i+)fprintf(fp,"n&

23、quot;);fprintf(fp,"%2d",i);for(j=io;j<=i0;j+)fprintf(fp,"%15.6f",af2(i,j,n1);/*回代求方程解*/n2=n1-2;for(i=1;i<=n2;i+)n3=n1-i;for(i1=n3;i1<=n0;i1+)n4=n0-i;af2(n4,n1,n1)-=af2(i1,n1,n1)*af2(n4,i1,n1);if(k!=1)return;/*输出电压修正值*/fprintf(fp,"nVoltagecorrectionE(i),F(i):");

24、for(io=1;io<=n0;io+=4)i1=(io+1)/2;i0=(io+3)/2)>(n0/2)?(n0/2):(io+3)/2);fprintf(fp,"n");for(j=i1;j<=i0;j+)fprintf(fp,"%16d%16d",j,j);i1=2*i0;fprintf(fp,"n");for(i=io;i<=i1;i+)fprintf(fp,"%15.6f",af2(i,n1,n1);#definePi3.1415927/180voidplsc(intn,intl,

25、intm,floatg,floatb,floate,floatf,inte1,ints1,floatg1,floatb1,floatc1,floatc,floatco,floatp1,floatq1,floatp2,floatq2,floatp3,floatq3,floatp,floatq,floatv,floatangle,intk1)externFILE*file4;FILE*fp;floatt1,t2,st,en,cm,x,y,z,x1,x2,y1,y2;inti,i1,j,m1,ns,pos1,pos2,km;ns=n-1;if(file4=NULL)fp=stdout;elsefp=

26、file4;fprintf(fp,"nTHERESULTARE:");if(k1=1)for(i=0;i<n;i+)anglei*=Pi;ei=vi*cos(anglei);fi=vi*sin(anglei);t1=0.0;t2=0.0;for(i=1;i<=n;i+)pos1=f1(i);pos2=f2(n,i,n);t1+=gpos2*epos1-bpos2*fpos1;t2+=gpos2*fpos1+bpos2*epos1;pos1=f1(n);ppos1=t1*epos1;qpos1=-t2*epos1;m1=m+1;for(i1=m1;i1<=ns;i1+)t1=0;t2=0;for(i=1;i<=n;i+)pos1=f1(i);pos2=f2(i1,i,n);t1+=gpos2*epos1-bpos2*fpos1;t2+=gpos2*fpos1+bpos2*epos1;pos1=f1(i1);qpos1=fpos1*t1-epos1*t2;for(i=0;i<n;i+)cm=coi;if(cm!=0)qi-=(ei*ei+fi*fi)*cm;fprintf(fp,"nBUSDATA");fprintf(fp,"nBUSVOLTAGEANGLE(DEGS.)BU

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论