添加了判断潮流方程是否收敛的函数。
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
|
||||
lineZ=readLineZ('.\feeder13\lineParameter.txt');
|
||||
[ 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;
|
||||
a=exp(1j*2*pi/3);
|
||||
Tp2f=1/3*[1 1 1;
|
||||
|
|
@ -43,20 +43,13 @@ Vf0=sparse(busNum,1);
|
|||
If0=sparse(busNum,1);
|
||||
%×¼±¸Ðò¾ØÕó
|
||||
fsY2(Balance,:)=0;
|
||||
fsY2(:,Balance)=0;
|
||||
fsY2=fsY2+sparse(Balance,Balance,ones(length(Balance),1),busNum,busNum);
|
||||
fsY0(Balance,:)=0;
|
||||
fsY0(:,Balance)=0;
|
||||
fsY0=fsY0+sparse(Balance,Balance,ones(length(Balance),1),busNum,busNum);
|
||||
fsY2(:,Balance)=0;
|
||||
fsY2=fsY2+sparse(Balance,Balance,ones(length(Balance),1),busNum,busNum);
|
||||
fsY0(Balance,:)=0;
|
||||
fsY0(:,Balance)=0;
|
||||
fsY0=fsY0+sparse(Balance,Balance,ones(length(Balance),1),busNum,busNum);
|
||||
while(k<=kmax && maxD> EPS)
|
||||
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, ...
|
||||
PQi,PG,QG,QGi,PD,QD,Vmf1,Vaf1,fsY1amp,fsY1ang,r,c,Vf2,If2,Vf0,If0);%²»Æ½ºâÁ¿
|
||||
maxD=max([dP;dQ;]);
|
||||
|
|
@ -77,8 +70,8 @@ while(k<=kmax && maxD> EPS)
|
|||
If0=conj(f012(1,:)');
|
||||
If1=conj(f012(2,:)');
|
||||
If2=conj(f012(3,:)');
|
||||
If0(Balance)=0;
|
||||
If2(Balance)=0;
|
||||
If0(Balance)=0;
|
||||
If2(Balance)=0;
|
||||
Vf0=fsY0\If0;
|
||||
Vf2=fsY2\If2;
|
||||
end
|
||||
|
|
@ -90,13 +83,8 @@ IpABC=Tf2p*conj([If0';If1';If2']);
|
|||
VoltpABC=Tf2p*conj([ Vf0'; Vf1'; Vf2']);
|
||||
disp([' A B C'])
|
||||
full(abs(VoltpABC'))
|
||||
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);
|
||||
checkSSatisfied(Balance,phaseABCY,VoltpABC, ...
|
||||
phaseASpotLoadP,phaseBSpotLoadP,phaseCSpotLoadP, ...
|
||||
phaseASpotLoadQ,phaseBSpotLoadQ,phaseCSpotLoadQ );
|
||||
%%检查反推回去的功率是否满足
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue