添加了判断潮流方程是否收敛的函数。
Signed-off-by: facat <facat@ipso.laptop>
This commit is contained in:
parent
1cb3aae12f
commit
6b53c6e360
|
|
@ -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
|
||||||
|
|
||||||
38
run.m
38
run.m
|
|
@ -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;]);
|
||||||
|
|
@ -77,8 +70,8 @@ while(k<=kmax && maxD> EPS)
|
||||||
If0=conj(f012(1,:)');
|
If0=conj(f012(1,:)');
|
||||||
If1=conj(f012(2,:)');
|
If1=conj(f012(2,:)');
|
||||||
If2=conj(f012(3,:)');
|
If2=conj(f012(3,:)');
|
||||||
If0(Balance)=0;
|
If0(Balance)=0;
|
||||||
If2(Balance)=0;
|
If2(Balance)=0;
|
||||||
Vf0=fsY0\If0;
|
Vf0=fsY0\If0;
|
||||||
Vf2=fsY2\If2;
|
Vf2=fsY2\If2;
|
||||||
end
|
end
|
||||||
|
|
@ -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);
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue