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

     over_load=1.19;

     else

     over_load=2*1.19;

     end

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

     if abs(I_base*I(k))<=over_load

     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