添加了判断潮流方程是否收敛的函数。

Signed-off-by: facat <facat@ipso.laptop>
This commit is contained in:
facat 2014-04-17 11:40:30 +08:00
parent 1cb3aae12f
commit 6b53c6e360
2 changed files with 38 additions and 25 deletions

25
checkSSatisfied.m Normal file
View File

@ -0,0 +1,25 @@
function [ output_args ] = checkSSatisfied(Balance,phaseABCY,VoltpABC,phaseASpotLoadP,phaseBSpotLoadP,phaseCSpotLoadP,phaseASpotLoadQ,phaseBSpotLoadQ,phaseCSpotLoadQ )
%%Fortiscue
busNum=size(phaseABCY,1)/3;
VoltpA=VoltpABC(1,:);
VoltpB=VoltpABC(2,:);
VoltpC=VoltpABC(3,:);
Vp3=sparse(busNum*3,1);
Vp3(1:3:end)=VoltpA;
Vp3(2:3:end)=VoltpB;
Vp3(3:3:end)=VoltpC;
Ip3=phaseABCY*Vp3;
Sp3=Vp3.*conj(Ip3);
%VoltpABC.*conj(IpABC);
pLoadABC=sparse(length(phaseASpotLoadP)*3,1);
pLoadABC(1:3:end)=phaseASpotLoadP+1j*phaseASpotLoadQ;
pLoadABC(2:3:end)=phaseBSpotLoadP+1j*phaseBSpotLoadQ;
pLoadABC(3:3:end)=phaseCSpotLoadP+1j*phaseCSpotLoadQ;
output_args=Sp3+pLoadABC;
ck=output_args;
ck(3*(Balance-1)+1:3*(Balance-1)+3)=0;
if any(abs(ck)>1e-5)
fprintf('');
end
end

34
run.m
View File

@ -2,7 +2,7 @@ clc
clear clear
lineZ=readLineZ('.\feeder13\lineParameter.txt'); lineZ=readLineZ('.\feeder13\lineParameter.txt');
[ fsY0, fsY1, fsY2,phaseASpotLoadP,phaseBSpotLoadP,phaseCSpotLoadP ... [ fsY0, fsY1, fsY2,phaseASpotLoadP,phaseBSpotLoadP,phaseCSpotLoadP ...
phaseASpotLoadQ,phaseBSpotLoadQ,phaseCSpotLoadQ,nodeNum,Balance,phaseABCY]=dataRead(lineZ,'.\feeder13\data1.txt'); phaseASpotLoadQ,phaseBSpotLoadQ,phaseCSpotLoadQ,nodeNum,Balance,phaseABCY]=dataRead(lineZ,'.\feeder13\data2.txt');
%fsY1(1,1)=fsY1(1,1)+1j*1e-10; %fsY1(1,1)=fsY1(1,1)+1j*1e-10;
a=exp(1j*2*pi/3); a=exp(1j*2*pi/3);
Tp2f=1/3*[1 1 1; Tp2f=1/3*[1 1 1;
@ -43,20 +43,13 @@ Vf0=sparse(busNum,1);
If0=sparse(busNum,1); If0=sparse(busNum,1);
%×¼±¸Ğò¾ØÕó %×¼±¸Ğò¾ØÕó
fsY2(Balance,:)=0; fsY2(Balance,:)=0;
fsY2(:,Balance)=0; fsY2(:,Balance)=0;
fsY2=fsY2+sparse(Balance,Balance,ones(length(Balance),1),busNum,busNum); fsY2=fsY2+sparse(Balance,Balance,ones(length(Balance),1),busNum,busNum);
fsY0(Balance,:)=0; fsY0(Balance,:)=0;
fsY0(:,Balance)=0; fsY0(:,Balance)=0;
fsY0=fsY0+sparse(Balance,Balance,ones(length(Balance),1),busNum,busNum); fsY0=fsY0+sparse(Balance,Balance,ones(length(Balance),1),busNum,busNum);
while(k<=kmax && maxD> EPS) while(k<=kmax && maxD> EPS)
k=k+1; k=k+1;
%ƽºâ½Úµã¸ºĞòµçѹΪ0
%f2(Balance)=0;
%Vf2=fsY2\If2;
%Vf0=fsY0\If0;
[dP, dQ, YdotSinVolt, YdotCosVolt, diag_Volt_YdotSin, diag_Volt_YdotCos]=Unbalance(Balance,busNum, ... [dP, dQ, YdotSinVolt, YdotCosVolt, diag_Volt_YdotSin, diag_Volt_YdotCos]=Unbalance(Balance,busNum, ...
PQi,PG,QG,QGi,PD,QD,Vmf1,Vaf1,fsY1amp,fsY1ang,r,c,Vf2,If2,Vf0,If0);%²»Æ½ºâÁ¿ PQi,PG,QG,QGi,PD,QD,Vmf1,Vaf1,fsY1amp,fsY1ang,r,c,Vf2,If2,Vf0,If0);%²»Æ½ºâÁ¿
maxD=max([dP;dQ;]); maxD=max([dP;dQ;]);
@ -90,13 +83,8 @@ IpABC=Tf2p*conj([If0';If1';If2']);
VoltpABC=Tf2p*conj([ Vf0'; Vf1'; Vf2']); VoltpABC=Tf2p*conj([ Vf0'; Vf1'; Vf2']);
disp([' A B C']) disp([' A B C'])
full(abs(VoltpABC')) full(abs(VoltpABC'))
VoltpA=VoltpABC(1,:); checkSSatisfied(Balance,phaseABCY,VoltpABC, ...
VoltpB=VoltpABC(2,:); phaseASpotLoadP,phaseBSpotLoadP,phaseCSpotLoadP, ...
VoltpC=VoltpABC(3,:); phaseASpotLoadQ,phaseBSpotLoadQ,phaseCSpotLoadQ );
Vp3=sparse(busNum*3,1); %%
Vp3(1:3:end)=VoltpA;
Vp3(2:3:end)=VoltpB;
Vp3(3:3:end)=VoltpC;
Ip3=phaseABCY*Vp3;
Sp3=Vp3.*conj(Ip3);
VoltpABC.*conj(IpABC);