电力系统三相短路计算的MATLAB代码.doc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电力系统 三相 短路 计算 MATLAB 代码
- 资源描述:
-
用matlab实现电力系统潮流计算 晏鸣宇 电力系统三相短路计算 a main.m clear tim %打开文件 [dfile,pathname]=uigetfile('*。m',’Select Data File’); if pathname == 0 error(' you must select a valid data file') 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); b FixY.m function fixY = FixY( Y,bus,fault ) %对形成的导纳矩阵进行故障点的修正 [nb,mb]=size(bus); [nf,mf]= size(fault); fixY = Y; %对发电机节点导纳修正 for k=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 %对节点短路和支路短路的导纳矩阵进行修正 for k=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 c fprintf_result.m function [ output_args ] = fprintf_result( output_file, Ib ) %将得到的短路电流输入到输出文件中 [n,m]=size(Ib); fprintf( output_file, ' No。 No. vector of I value of I\n’); for k=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。6f’,I,J,I01,I02,I1); end fprintf( output_file, ’\n’); end end d fprintf_result1。m function [ output_args ] = fprintf_result1( Ib ) %UNTITLED ÇëÔÚ´Ë´¦ÊäÈ뺯Êý¸ÅÒª [n,m]=size(Ib); fprintf(' No。 No。 vector of I value of I\n'); for k=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('%3d %3d %10.6f+j%10。6f %10。6f’,I,J,I01,I02,I1); end if(I02<0) I02=abs(I02); fprintf(’%3d %3d %10。6f-j%10。6f %10.6f',I,J,I01,I02,I1); end fprintf(’\n'); end end e Ibranch.m function Bcurrent = Ibranch( line,U,fault,Y ) %计算短路电流 %记录短路故障参数,如短路节点,如为支路短路,记录距离节点的距离 %此段计算采用的支路参数未近似,如果计算近似的时候需要修改 [nl,ml]=size(line); Bcurrent=zeros(nl+1,4); faultI=fault(1,1); faultJ=fault(1,2); dis=fault(1,3); faultNode = 0; if(faultI==0) faultNode = faultJ; end if(faultJ==0) faultNode = faultI; end if(dis==1)&&(faultI*faultJ~=0) faultNode = faultJ; end if(dis==0)&&(faultI*faultJ~=0) faultNode = faultI; end if(faultNode~=0) Bcurrent(nl+1,1) = faultNode; Bcurrent(nl+1,2) = faultNode; Iij = 0; Iij1=0; end %计算非故障支路的短路电流 for k=1:nl i=line(k,1); j=line(k,2); Ui=U(i); if j~=0 Uj=U(j); else Uj=0; end if line(k,2)==0 Ym=line(k,5)+1i*line(k,6); Iij=Ui*Ym; Iij1=abs(Iij); end if line(k,2)~=0 Zt=line(k,3)+1i*line(k,4); Yt=1/Zt; Ym=line(k,5)+1i*line(k,6); Iij=(Ui-Uj)*Yt+Ui*Ym; Iij1=abs(Iij); end Bcurrent(k,1)=i; Bcurrent(k,2)=j; Bcurrent(k,3)=Iij; Bcurrent(k,4)=Iij1; end %如果为节点短路,修正短路点的电流大小 if(faultNode~=0) Bcurrent(nl+1,1) = faultNode; Bcurrent(nl+1,2) = faultNode; Ifault = 0; branchCurrent=0; for k=1:nl I=line(k,1); J=line(k,2); if(I*J==0) continue; end branchCurrent = (U(I)—U(J))/(line(k,3)+1i*line(k,4)); if (I==faultNode) Ifault = Ifault — branchCurrent ; else if (J==faultNode) Ifault = Ifault + branchCurrent ; end end end Bcurrent(nl+1,3) = Ifault; Bcurrent(nl+1,4) = abs(Bcurrent(nl+1,3)); end %如果为支路短路,修正短路支路的短路电流大小 if(dis~=0)&&(dis~=1)&&(faultI*faultJ~=0) Bcurrent(nl+1,1) = faultI; Bcurrent(nl+1,2) = faultJ; Bcurrent(nl+1,3) = U(faultI)*Y(faultI,faultJ)/dis + U(faultJ)*Y(faultI,faultJ)/(1—dis); Bcurrent(nl+1,4) = abs(Bcurrent(nl+1,3)); end end f Inode。m function Iinj = Inode( bus,calcSettings ) %计算节点注入电流 [nb,mb]=size(bus); Iinj = zeros(nb,1); for k=1:nb busType=bus(k,7); if(calcSettings(1)==1) v = 1; else v = bus(k,2); end %对发电机节点电流进行修正 if (busType==1) Iinj(bus(k,1),1) = Iinj(bus(k,1),1) + v/1i/bus(k,8); end end end g ReviseBcurrent.m function Ib = ReviseBcurrent( fault,Bcurrent ) %如果发生支路短路,对原来的计算电流进行修正,使该支路短路电流输出为—999999-j999999 clear faultI faultJ dis [nt,mt]=size(Bcurrent); Ib=zeros(nt,mt); faultI=fault(1,1); faultJ=fault(1,2); dis=fault(1,3); for k=1:nt—1 i=Bcurrent(k,1); j=Bcurrent(k,2); Ib(k,:)=Bcurrent(k,:); if (faultI*faultJ~=0)&&(dis~=1)&&(dis~=0)&&(i==faultI)&&(j==faultJ) Ib(k,1)=i; Ib(k,2)=j; Ib(k,3)=—999999-1i*999999; Ib(k,4)=—999999; end if (faultI*faultJ~=0)&&(dis~=1)&&(dis~=0)&&(i==faultJ)&&(j==faultI) Ib(k,1)=i; Ib(k,2)=j; Ib(k,3)=-999999—1i*999999; Ib(k,4)=-999999; end Ib(nt,:)=Bcurrent(nt,:); end h Ymatrix1.m function Y = Ymatrix1( bus,line ) %考虑变压器,并且支路参数不近似的节点导纳矩阵 [nb,mb]=size(bus); [nl,ml]=size(line); Y=zeros(nb,nb); for k=1:nl I=line(k,1); J=line(k,2); Zt=line(k,3)+1i*line(k,4); Yt=1/Zt; Ym=line(k,5)+1i*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) Y(I,I)=Y(I,I)+Ym; end if K>0 Y(I,I)=Y(I,I)+Yt+Ym; Y(J,J)=Y(J,J)+Yt/(K*K); Y(I,J)=Y(I,J)—Yt/K; Y(J,I)=Y(I,J); end if K<0 Y(I,I)=Y(I,I)+Yt+Ym; Y(J,J)=Y(J,J)+K*K*Yt; Y(I,J)=Y(I,J)+K*Yt; Y(J,I)=Y(I,J); end end end i Ymatrix2。m function Y = Ymatrix2( bus,line ) %考虑变压器变比近似为1,支路参数不等效 [nb,mb]=size(bus); [nl,ml]=size(line); Y=zeros(nb,nb); for k=1:nl I=line(k,1); J=line(k,2); Zt=line(k,3)+1i*line(k,4); Yt=1/Zt; Ym=line(k,5)+1i*line(k,6); if 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 J==0 Y(I,I)=Y(I,I)+Ym; end end end j Ymatrix3。m function Y = Ymatrix3( bus,line ) %考虑变压器变比为1,采用支路参数近似1 [nb,mb]=size(bus); [nl,ml]=size(line); Y=zeros(nb,nb); for k=1:nl I=line(k,1); J=line(k,2); Zt=line(k,3)+1i*line(k,4); Yt=imag(1/Zt); Ym=imag(line(k,5)+1i*line(k,6)); if 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 J==0 Y(I,I)=Y(I,I)+Ym; end end end k Ymatrix4.m function Y = Ymatrix4( bus,line ) %变压器变比近似为1,采用支路等效参数2 [nb,mb]=size(bus); [nl,ml]=size(line); Y=zeros(nb,nb); for k=1:nl I=line(k,1); J=line(k,2); Zt=1i*line(k,4); Yt=1/Zt; Ym=1i*line(k,6); if 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 J==0 Y(I,I)=Y(I,I)+Ym; end end end 9展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




电力系统三相短路计算的MATLAB代码.doc



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/4121763.html