TXT

# flow

By Jesse Snyder,2014-11-21 23:35
12 views 0
flow

function flow(pqvo,od,SCorN_1) PQVO=pqvo;

PQVO=sortrows(PQVO,1); %对第一列进行升序排序？让节点号从低到高排列 OD=od;

S_base=100;

V_base=220;

V_base1=10.5;

I_base=S_base/sqrt(3)/V_base; I_base1=S_base/sqrt(3)/V_base1; n=size(PQVO,1); %n为节点总数

[Vi,PQ,Y]=Pflow(PQVO,OD); %调用潮流程序？输出电压？有功无功？以及导纳矩阵 %显示电压

disp('各节点电压，');

for k=1:n

if PQVO(k,7)==0

str=['V',num2str(k),' = ',num2str(Vi(k)),' = ',num2str(abs(Vi(k))),'?',num2str(angle(Vi(k))*180/pi)...

,' = ',num2str(V_base*abs(Vi(k))),'?',num2str(angle(Vi(k))*180/pi)];

disp(str);

else

str=['V',num2str(k),' = ',num2str(Vi(k)),' = ',num2str(abs(Vi(k))),'?',num2str(angle(Vi(k))*180/pi)...

,' = ',num2str(V_base1*abs(Vi(k))),'?',num2str(angle(Vi(k))*180/pi)];

disp(str);

end

end

%求各节点功率

%显示各节点功率

disp('各节点功率，');

Loss=0;

for k=1:n

str=['P',num2str(k),'+','Q',num2str(k),' = ',num2str(PQ(k)),' =

',num2str(S_base*PQ(k))];

disp(str);

Loss=Loss+real(PQ(k));

end

disp('网损，');

disp(['Loss=',num2str(Loss),' = ',num2str(S_base*Loss)]);

%求输电线路功率

S1=zeros(size(OD,1),1);

S2=zeros(size(OD,1),1);

for k=1:size(OD,1)

if OD(k,5)==1

S1(k)=abs(Vi(OD(k,1))^2)*conj(OD(k,4))-Vi(OD(k,1))*(conj(Vi(OD(k,1)))...

-conj(Vi(OD(k,2))))*conj(Y(OD(k,1),OD(k,2)));

else

temp=OD(k,5)*(OD(k,5)-1)/OD(k,3); %对地电抗

S1(k)=abs(Vi(OD(k,1))^2)*conj(temp)-Vi(OD(k,1))*(conj(Vi(OD(k,1)))...

-conj(Vi(OD(k,2))))*conj(Y(OD(k,1),OD(k,2)));

end

end

for k=1:size(OD,1)

if OD(k,5)==1

S2(k)=abs(Vi(OD(k,2))^2)*conj(OD(k,4))-Vi(OD(k,2))*(conj(Vi(OD(k,2)))...

-conj(Vi(OD(k,1))))*conj(Y(OD(k,2),OD(k,1)));

else

temp=(1-OD(k,5))/OD(k,3); %对地电抗

S2(k)=abs(Vi(OD(k,2))^2)*conj(temp)-Vi(OD(k,2))*(conj(Vi(OD(k,2)))...

-conj(Vi(OD(k,1))))*conj(Y(OD(k,2),OD(k,1)));

end

end

%显示各线路功率

disp('各线路功率，');

for k=1:size(OD,1)

str=['S',num2str(OD(k,1)),num2str(OD(k,2)),' = ',num2str(S1(k)),' = ',num2str(S_base*S1(k))];

disp(str);

end

for k=1:size(OD,1)

str=['S',num2str(OD(k,2)),num2str(OD(k,1)),' = ',num2str(S2(k)),' = ',num2str(S_base*S2(k))];

disp(str);

end

%各线路电流

disp('各线路电流，');

I=zeros(size(OD,1),1);

for k=1:size(OD,1)

I(k)=(OD(k,5)*Vi(OD(k,1))-Vi(OD(k,2)))/OD(k,3);

str=['I',num2str(OD(k,1)),num2str(OD(k,2)),' = ',num2str(I(k)),' =

',num2str(abs(I(k))),'?',num2str(angle(I(k))*180/pi)...

' = ',num2str(abs(I_base*I(k))),'?',num2str(angle(I(k))*180/pi)];

disp(str);

end

if nargin==2

return

end %哪果只有两个参数输入？便只计算潮流

%短路计算

if SCorN_1==1 || SCorN_1==3 %%有第三个参数输入时？判断是否进行短路计算

Y_modify=zeros(n); %导纳修正矩阵

for k=1:n

if PQVO(k,6)==1 && PQVO(k,7)==0

Y_modify(k,k)=Y_modify(k,k)+conj(-1*PQ(k))/Vi(k)^2;

end

if PQVO(k,7)~=0

Y_modify(k,k)=Y_modify(k,k)+1/PQVO(k,7); %平衡节点当作什么！

挂着负荷！！！！

end

end

Y_sc=Y+Y_modify;

Z=zeros(n); %阻抗矩阵

Z=inv(Y_sc);

Vsc=zeros(n,n); %短路电压

Isc=zeros(n,size(OD,1)); %各支路短路电流

If=zeros(n,1); %短路点电流

for k=1:n %对各节点分别短路

If(k)=Vi(k)/Z(k,k); %短路电流

for l=1:n

if k==l

Vsc(k,l)=0;

else

Vsc(k,l)=Vi(l)-Z(l,k)*If(k); %短路电压

end

end

for l=1:size(OD,1)

Isc(k,l)=(OD(l,5)*Vsc(k,OD(l,1))-Vsc(k,OD(l,2)))/Z(OD(l,1),OD(l,2)); %各支路电

%含变压器支路！！！！

end

end

disp('各节点依次短路情况，');

for k=1:n

if PQVO(k,7)~=0

continue;

end

disp(['',num2str(k),'个节点短路，']);

disp('短路电流:');

disp(['If=',num2str(If(k)),' = ',num2str(abs(If(k))),'?

',num2str(angle(If(k))*180/pi)...

' = ',num2str(abs(I_base*If(k))),'?',num2str(angle(If(k))*180/pi)]);

disp('短路容量:');

St=sqrt(3)*Vi(k)*If(k);

disp(['St=',num2str(St),' = ',num2str(abs(St)),'?',num2str(angle(St)*180/pi)...

' = ',num2str(abs(S_base*St)),'?',num2str(angle(St)*180/pi)]);

disp(' ');

end

end %短路计算

%N-1校验

disp(' ');

if SCorN_1==2 || SCorN_1==3 %有第三个参数输入时？判断是否进行N-1校验

disp('N-1校验？如果过载？线路后面会显示“过载”两字');

disp(' ');

for N1=1:size(od,1)

PQVO=pqvo;

PQVO=sortrows(PQVO,1); %对第一列进行升序排序？让节点号从低到高排

OD=od; %获取原始矩阵s

if OD(N1,4)~=0

OD(N1,3)=OD(N1,3)*2;

OD(N1,4)=OD(N1,4)/2;

else

continue;

end %N-1断线修改矩阵

disp([num2str(OD(N1,1)),' ',num2str(OD(N1,2)),'支路断线，']);

[Vi]=Pflow(PQVO,OD); %计算潮流？获取电压

%各线路电流

disp('各线路电流，');

I=zeros(size(OD,1),1);

for k=1:size(OD,1)

if k==N1

else

end

I(k)=(OD(k,5)*Vi(OD(k,1))-Vi(OD(k,2)))/OD(k,3); %线路电

str=['I',num2str(OD(k,1)),num2str(OD(k,2)),' =

',num2str(I(k)),' = ',num2str(abs(I(k))),'?',num2str(angle(I(k))*180/pi)...

' = ',num2str(abs(I_base*I(k))),'?

',num2str(angle(I(k))*180/pi)];

disp(str);

else

str=['I',num2str(OD(k,1)),num2str(OD(k,2)),' =

',num2str(I(k)),' = ',num2str(abs(I(k))),'?',num2str(angle(I(k))*180/pi)...

' = ',num2str(abs(I_base*I(k))),'?

',num2str(angle(I(k))*180/pi),' 过载'];

disp(str);

end

end

%显示电压

disp('各节点电压，');

for k=1:n

if PQVO(k,7)==0

str=['V',num2str(k),' = ',num2str(Vi(k)),' =

',num2str(abs(Vi(k))),'?',num2str(angle(Vi(k))*180/pi)...

,' = ',num2str(V_base*abs(Vi(k))),'?

',num2str(angle(Vi(k))*180/pi)];

disp(str);

else

str=['V',num2str(k),' = ',num2str(Vi(k)),' =

',num2str(abs(Vi(k))),'?',num2str(angle(Vi(k))*180/pi)...

,' = ',num2str(V_base1*abs(Vi(k))),'?

',num2str(angle(Vi(k))*180/pi)];

disp(str);

end

end

disp(' ');

end

end %N-1校验

end

Report this document

For any questions or suggestions please email
cust-service@docsford.com