From 6b53c6e3600313bc7406b64cd36c24f601f3ddbd Mon Sep 17 00:00:00 2001 From: facat Date: Thu, 17 Apr 2014 11:40:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E6=BD=AE=E6=B5=81=E6=96=B9=E7=A8=8B=E6=98=AF=E5=90=A6=E6=94=B6?= =?UTF-8?q?=E6=95=9B=E7=9A=84=E5=87=BD=E6=95=B0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: facat --- checkSSatisfied.m | 25 +++++++++++++++++++++++++ run.m | 38 +++++++++++++------------------------- 2 files changed, 38 insertions(+), 25 deletions(-) create mode 100644 checkSSatisfied.m diff --git a/checkSSatisfied.m b/checkSSatisfied.m new file mode 100644 index 0000000..860a9a6 --- /dev/null +++ b/checkSSatisfied.m @@ -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 + diff --git a/run.m b/run.m index 7c518f6..b385c6d 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,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 ); +%%检查反推回去的功率是否满足 +