预览加载中,请您耐心等待几秒...
1/9
2/9
3/9
4/9
5/9
6/9
7/9
8/9
9/9

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

用matlab实现电力系统潮流计算晏鸣宇 电力系统三相短路计算 main.m cleartim %打开文件 [dfile,pathname]=uigetfile('*。m',’SelectDataFile’); ifpathname==0 error('youmustselectavaliddatafile') else lfile=length(dfile); eval(dfile(1:lfile-2)); end %定义输出文件 output_file=fopen(’output。dat’,’w'); %开始计时 tic; %求解节点导纳矩阵,其中Ymatrix1是考虑了变比,且支路未近似的导纳矩阵;Ymatrix2是近似变比为1,但是支路未近似计算的节点导纳矩阵;Ymatrix3是近似变比为1,采取近似支路参数1的导纳矩阵;Ymatrix4是近似变比为1,采取近似支路参数2的导纳矩阵. Y=Ymatrix2(bus,line); %对故障点进行导纳修正 fixY=FixY(Y,bus,fault); %求注入电流 Iinj=Inode(bus,calcSettings); U=fixY\Iinj; %得到故障支路与其他支路电流 Bcurrent=Ibranch(line,U,fault,Y); %如果发生支路三相短路,那么对应该支路的电流修正为-999999-j999999 Ib=ReviseBcurrent(fault,Bcurrent); %结束计时 tim=toc; fprintf(’\n程序运行结果'); fprintf(’\n计算完成,共用时%4.4fs,相关结果已保存在output.dat\n’,tim); %输出结果 fprintf_result(output_file,Ib); fprintf_result1(Ib); FixY.m functionfixY=FixY(Y,bus,fault) %对形成的导纳矩阵进行故障点的修正 [nb,mb]=size(bus); [nf,mf]=size(fault); fixY=Y; %对发电机节点导纳修正 fork=1:nb busType=bus(k,7); if(busType==1) fixY(bus(k,1),bus(k,1))=fixY(bus(k,1),bus(k,1))+1/1i/bus(k,8); end end %对节点短路和支路短路的导纳矩阵进行修正 fork=1:nf nodeI=fault(k,1); nodeJ=fault(k,2); dis=fault(k,3); if(nodeI==0) fixY(nodeJ,nodeJ)=999999+1i*999999; continue; end if(nodeJ==0) fixY(nodeI,nodeI)=999999+1i*999999; continue; end if(dis==0)&&(nodeI*nodeJ~=0) fixY(nodeI,nodeI)=999999+1i*999999; continue; end if(dis==1)&&(nodeI*nodeJ~=0) fixY(nodeJ,nodeJ)=999999+1i*999999; continue; end if(dis~=1)&&(dis~=0)&&(nodeI*nodeJ~=0) fixY(nodeI,nodeI)=fixY(nodeI,nodeI)-fixY(nodeI,nodeJ)/dis; fixY(nodeJ,nodeJ)=fixY(nodeJ,nodeJ)-fixY(nodeI,nodeJ)/(1-dis); fixY(nodeI,nodeJ)=0; fixY(nodeJ,nodeI)=0; end end end fprintf_result.m function[output_args]=fprintf_result(output_file,Ib) %将得到的短路电流输入到输出文件中 [n,m]=size(Ib); fprintf(output_file,'No。No.vectorofIvalueofI\n’); fork=1:n I=Ib(k,1); J=Ib(k,2); I01=real(Ib(k,3)); I02=imag(Ib(k,3)); I1=Ib(k,4); if(I02>=0) fprintf(output_file,’%3d%3d%10.6f+j%10。6f%10。6f’,I,J,I01,I02,I1); end if(I02〈0) I02=abs(I02); fprintf(output_file,’%3d%3d%10。6f-j%10.6f%10。