潮流计算matlab.docx
- 文档编号:1390758
- 上传时间:2022-10-21
- 格式:DOCX
- 页数:29
- 大小:23.99KB
潮流计算matlab.docx
《潮流计算matlab.docx》由会员分享,可在线阅读,更多相关《潮流计算matlab.docx(29页珍藏版)》请在冰豆网上搜索。
潮流计算matlab
电力系统大作业——用matlab潮流计算
08292007电气0809班
%主程序:
[dfile,pathname]=uigetfile('ieee14.m','SelectDataFile');
ifpathname==0
error('youmustselectavaliddatafile')
else
lfile=length(dfile);
%stripoff.m
eval(dfile(1:
lfile-2));%打开数据文件
end
globaln;
globalm;
[nb,mb]=size(bus);%节点重新编号
[nl,ml]=size(line);
nSW=0;%平衡节点数目
nPV=0;%PV节点数目
nPQ=0;%PQ节点数目
fori=1:
nb,%nb为总节点数
type=bus(i,6);
iftype==3,
nSW=nSW+1;%统计平衡节点数目
SW(nSW,:
)=bus(i,:
);
elseiftype==2,
nPV=nPV+1;%统计PV节点数目
PV(nPV,:
)=bus(i,:
);
else
nPQ=nPQ+1;%统计PQ节点数目
PQ(nPQ,:
)=bus(i,:
);
end
end;
bus=[PQ;PV;SW];
newbus=[1:
nb]';
f=bus(:
1);
nodenum=[newbusbus(:
1)];
bus(:
1)=newbus;
fori=1:
nl
forj=1:
2
fork=1:
nb
ifline(i,j)==nodenum(k,2)
line(i,j)=nodenum(k,1);
break
end
end
end
end
Y=y(bus,line);%形成节点导纳矩阵
K=0;%迭代次数初值
Kmax=10;%最大迭代次数
eps1=1.0e-10;
eps2=1.0e-10;
m=nPQ;n=nb;
Um=eye(m,m);
myf=fopen('output1.dat','w');
forK=1:
Kmax
fori=1:
m
forj=1:
m
ifi==j
Um(i,j)=bus(i,2);
end
end
end
b=dPQ(Y,bus);
C=jac(bus,Y);
dX=C\b';
dx=dX';
[nx,mx]=size(dx);
fori=1:
n-1%计算相角
bus(i,3)=bus(i,3)-dX(i,1);
end
B=dx(nx,n:
mx)*Um;%计算电压差
bus(1:
m,2)=bus(1:
m,2)-B';%计算电压值
dx(nx,n:
mx)=B;
fprintf(myf,'--第%d次迭代时雅可比矩阵--',K)
fprintf(myf,'\n');
fori=1:
(n+m-1)
forj=1:
(n+m-1)
fprintf(myf,'%8.6f',C(i,j));
fprintf(myf,'');
end
fprintf(myf,'\n');
end
fprintf(myf,'--第%d次迭代时dPQ的误差--',K)
fprintf(myf,'\n');
fori=1:
(n+m-1)
fprintf(myf,'%8.6e',b(1,i));
fprintf(myf,'\n');
end
fprintf(myf,'\n');
fprintf(myf,'--第%d次迭代时dx(误差)--',K)
fprintf(myf,'\n');
fori=1:
(n+m-1)
fprintf(myf,'%8.6e',dX(i,1));
fprintf(myf,'\n');
end
fprintf(myf,'\n');
fprintf(myf,'第%d次迭代后节点电压(仅PQ节点)',K)
fprintf(myf,'\n');
fori=1:
m
fprintf(myf,'%8.6f',bus(i,2));
fprintf(myf,'\n');
end
fprintf(myf,'\n');
fprintf(myf,'第%d次迭代后相角(角度)',K)
fprintf(myf,'\n');
fori=1:
n
fprintf(myf,'%8.6f',bus(i,3)*180/pi);
fprintf(myf,'\n');
end
fprintf(myf,'\n');
if(max(abs(dx)) break; end end %计算功率 P1=0;T=0;%计算平衡节点的有功 forj=1: n T=bus(n,2)*bus(j,2)*(real(Y(n,j))*cos(bus(n,3)-bus(j,3))+imag(Y(n,j))*sin(bus(n,3)-bus(j,3))); P1=P1+T; end bus(n,4)=P1; fork=m+1: n%计算PV节点、平衡节点的无功 Q1=0;T=0; forj=1: n T=bus(k,2)*bus(j,2)*(real(Y(k,j))*sin(bus(k,3)-bus(j,3))-imag(Y(k,j))*cos(bus(k,3)-bus(j,3))); Q1=Q1+T; end bus(k,5)=Q1; end bus(: 1)=f;%换回各节点、支路的初始编号 r=zeros(1,mb); fort=1: n forl=t+1: n ifbus(t,1)>bus(l,1) r=bus(t,: );bus(t,: )=bus(l,: );bus(l,: )=r; end end end fori=1: nl forj=1: 2 fork=1: nb ifline(i,j)==nodenum(k,1) line(i,j)=nodenum(k,2); break end end end end fclose(myf); Pf=loss(bus,line);%计算支路潮流及损耗 %将节点导纳矩阵、节点潮流计算结果写入文件output2 myf=fopen('output2.dat','w'); fprintf(myf,'--节点导纳矩阵--\n'); fork=1: n forj=1: n fprintf(myf,'%8.6f',real(Y(k,j))); fprintf(myf,'+i*'); fprintf(myf,'%8.6f',imag(Y(k,j))); fprintf(myf,''); end fprintf(myf,'\n'); end fprintf(myf,'------------------牛顿-拉夫逊法潮流计算结果-------------\n'); fprintf(myf,'------------节点计算结果------------\n'); fprintf(myf,'--节点节点电压节点相角注入有功功率(P)注入无功功率(Q)类型--\n'); forl=1: nb forj=1: mb ifj==1|j==6 fprintf(myf,'%8.1f',bus(l,j)); elseifj==3 fprintf(myf,'%8.6f',bus(l,j)*180/pi); else fprintf(myf,'%8.6f',bus(l,j)); end end fprintf(myf,'\n'); end fprintf(myf,'--支路计算结果--\n'); fprintf(myf,'--节点(I)节点(J)线路功率S(I,J)线路功率S(J,I)线路损耗dS(I,J)--\n'); fork=1: nl forj=1: 5 ifj<=2 fprintf(myf,'%8.1f',Pf(k,j)); fprintf(myf,''); else fprintf(myf,'%8.6f',real(Pf(k,j))); fprintf(myf,'+i*'); fprintf(myf,'%8.6f',imag(Pf(k,j))); fprintf(myf,''); end end fprintf(myf,'\n'); end fclose(myf); %根据支路参数建立节点导纳矩阵程序: functionY=y(bus,line) %目的: 根据支路参数建立节点导纳矩阵 %输入: 节点参数矩阵--bus;支路参数矩阵--line %输出: 节点导纳矩阵--Y [nb,mb]=size(bus); [nl,ml]=size(line); Y=zeros(nb,nb); fork=1: nl I=line(k,1); J=line(k,2); Zt=line(k,3)+j*line(k,4); ifZt==0 disp('对地支路'); Yt=inf; else Yt=1/Zt; end Ym=line(k,5)+j*line(k,6); K=line(k,7); if(K==0)&(J~=0)%普通线路 Y(I,I)=Y(I,I)+Yt+Ym; Y(J,J)=Y(J,J)+Yt+Ym; Y(I,J)=Y(I,J)-Yt; Y(J,I)=Y(I,J); end if(K==0)&(J==0)%对地支路K=J=0,R=X=0 Y(I,I)=Y(I,I)+Ym; end ifK>0%K>0时变压器支路 Y(I,I)=Y(I,I)+Yt+Ym; Y(J,J)=Y(J,J)+Yt/K^2; Y(I,J)=Y(I,J)-Yt/K; Y(J,I)=Y(I,J); end ifK<0%K<0时变压器支路 Y(I,I)=Y(I,I)+Yt+Ym; Y(J,J)=Y(J,J)+Yt*K^2; Y(I,J)=Y(I,J)+Yt*K; Y(J,I)=Y(I,J); end end %形成雅克矩阵程序: functionJ=jac(bus,Y) %形成雅可比矩阵 globaln; globalm; fori=1: (n-1)%计算PQ、PV节点的有功 P1=0;T=0; forj=1: n T=bus(i,2)*bus(j,2)*(real(Y(i,j))*cos(bus(i,3)-bus(j,3))+imag(Y(i,j))*sin(bus(i,3)-bus(j,3))); P1=P1+T; end bus(i,4)=P1; end fori=1: n-1%计算PV、PQ节点的无功 Q1=0;T=0; forj=1: n T=bus(i,2)*bus(j,2)*(real(Y(i,j))*si
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 潮流 计算 matlab
![提示](https://static.bdocx.com/images/bang_tan.gif)