diff --git a/dataRead.m b/dataRead.m index 25d5cd3..a31dccb 100644 --- a/dataRead.m +++ b/dataRead.m @@ -1,15 +1,22 @@ function [ fsY0, fsY1, fsY2,phaseASpotLoadP,phaseBSpotLoadP,phaseCSpotLoadP ... phaseASpotLoadQ,phaseBSpotLoadQ,phaseCSpotLoadQ,setIJ,nodeNum,Balance,phaseABCY] = dataRead(lineZ,dataFile ) data=dlmread(dataFile); +baseHighU=data(1,2); +fsY0=0; +fsY1=0; +fsY2=0; zeroEntries=find(data(:,1)==0); lines=data(zeroEntries(1)+1:zeroEntries(2)-1,:); [setIJ,nodeNum]=numberNode(lines); +if size(setIJ,2)>size(setIJ,1) + setIJ=setIJ'; +end Balance=data(1,1); Balance=nodeNum(setIJ==Balance); %%three-phase phaseABCY=sparse(3*length(nodeNum),3*length(nodeNum)); %% 601 begin -[fs30,fs31,fs32,retphaseABCY]=lineWithConfig(setIJ,nodeNum,lineZ,lines,601); +[fs30,fs31,fs32,retphaseABCY]=lineWithConfig(setIJ,nodeNum,lineZ,lines,601,baseHighU); %phaseABCY 三相的导纳矩阵3n x 3n 维 fsY0=fs30; fsY1=fs31; @@ -17,12 +24,18 @@ fsY2=fs32; phaseABCY=phaseABCY+retphaseABCY; % 601 end %% 602 begin -[fs30,fs31,fs32,retphaseABCY]=lineWithConfig(setIJ,nodeNum,lineZ,lines,602); +[fs30,fs31,fs32,retphaseABCY]=lineWithConfig(setIJ,nodeNum,lineZ,lines,602,baseHighU); fsY0=fsY0+fs30; fsY1=fsY1+fs31; fsY2=fsY2+fs32; phaseABCY=phaseABCY+retphaseABCY; % 602 end +%% +[fs30,fs31,fs32,retphaseABCY]=lineWithConfig(setIJ,nodeNum,lineZ,lines,123,baseHighU); +fsY0=fsY0+fs30; +fsY1=fsY1+fs31; +fsY2=fsY2+fs32; +phaseABCY=phaseABCY+retphaseABCY; %% spot load busNum=length(nodeNum); spotloads=data(zeroEntries(3)+1:zeroEntries(4)-1,:); diff --git a/lineWithConfig.m b/lineWithConfig.m index ef63625..6ae23e9 100644 --- a/lineWithConfig.m +++ b/lineWithConfig.m @@ -1,13 +1,21 @@ -function [ fs30,fs31,fs32,phaseABCY ] = lineWithConfig(setIJ,nodeNum,lineZ,lines,config ) +function [ fs30,fs31,fs32,phaseABCY ] = lineWithConfig(setIJ,nodeNum,lineZ,lines,config,baseHighU ) phase3Entry=find(lines(:,1)==config); +if isempty(phase3Entry) + fs30=0; + fs31=0; + fs32=0; + phaseABCY=0; + fprintf('warning: line type %d not found.\n',config) + return; +end phase3Line=lines(phase3Entry,:); phase3Line(:,4)=phase3Line(:,4)/1000; entry=find(lineZ(:,1)==config); phase3R=lineZ(entry+1:entry+3,:); phase3X=lineZ(entry+5:entry+7,:); phase3B2=lineZ(entry+9:entry+11,:); -phase3Y=1./(phase3R+1j*phase3X);%原始的三相导纳 -%phase3Y=1./(1j*phase3X);%原始的三相导纳 +phase3Z=phase3R+1j*phase3X; +phase3Y=inv(phase3Z); %让对角和非对角相等 phase3Y(1,3)=phase3Y(1,2); phase3Y(3,1)=phase3Y(2,1); @@ -15,18 +23,7 @@ phase3Y(3,2)=phase3Y(3,1); phase3Y(2,3)=phase3Y(1,3); phase3Y(2,2)=phase3Y(1,1); phase3Y(3,3)=phase3Y(1,1); -% phase3Y(1,3)=10; -% phase3Y(3,2)=10; -% phase3Y(2,3)=10; -% phase3Y(2,2)=phase3Y(1,1); -% phase3Y(3,3)=phase3Y(1,1); -% phase3Y(1,2)=10; -% phase3Y(2,1)=10; -% phase3Y(3,1)=10; -% phase3Y(1,3)=10; %标幺值 -baseHighU=4.16; -baseLowU=0.48; baseS=1; baseY=baseS/(baseHighU^2); phase3Y=phase3Y/baseY; @@ -41,7 +38,7 @@ Tf2p=inv(Tp2f); % Tf2p=[1 1 1; % 1 a^2 a; % 1 a a^2]; -fs3Y=Tp2f*phase3Y*Tf2p; +% fs3Y=Tp2f*phase3Y*Tf2p; Zl=phase3Y(1,1); Zm=phase3Y(2,1); fs3Y=3/3*diag([Zl+2*Zm,Zl-Zm,Zl-Zm]);%这里不是1/3,IEEE上的公式错了。 diff --git a/run.m b/run.m index 52e6db3..c6a0464 100644 --- a/run.m +++ b/run.m @@ -2,7 +2,7 @@ clc clear lineZ=readLineZ('.\feeder13\lineParameter.txt'); [ fsY0, fsY1, fsY2,phaseASpotLoadP,phaseBSpotLoadP,phaseCSpotLoadP ... - phaseASpotLoadQ,phaseBSpotLoadQ,phaseCSpotLoadQ,setIJ,nodeNum,Balance,phaseABCY]=dataRead(lineZ,'.\feeder13\data2.txt'); + phaseASpotLoadQ,phaseBSpotLoadQ,phaseCSpotLoadQ,setIJ,nodeNum,Balance,phaseABCY]=dataRead(lineZ,'.\feeder13\data1.txt'); a=exp(1j*2*pi/3); Tp2f=1/3*[1 1 1; 1 a a^2; @@ -81,10 +81,6 @@ while(k<=kmax && maxD> EPS) end Vf1=Vmf1.*exp(1j*Vaf1); %% -V=[1.0*exp(1j*0);1.0*exp(-1j*pi/180*120);1.0*exp(1j*pi/180*120)]; -abs(Tp2f*V); -Tf2p*Tp2f*V; -%% (Vf0.*conj(fsY00*Vf0)+Vf1.*conj(fsY11*Vf1)+Vf2.*conj(fsY22*Vf2))*3; conj(Tf2p*[If0(2);If1(2);If2(2)]).*(Tf2p*[Vf0(2);Vf1(2);Vf2(2)]); IpABC=Tf2p*conj([If0';If1';If2']);