⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 正确简单不对称故障计算程序.m

📁 本程序用于电力系统不对称故障计算
💻 M
字号:
%本程序的功能是对简单不对称故障一般形式的计算方法
NF=input('请输入短路点的数目:NF=');
for i1=1:NF
    clear;
    n1=input('请输入正序节点数:n1=');
    n2=input('请输入负序节点数:n2=');
    n0=input('请输入零序节点数:n0=');
    nl1=input('请输入正序支路数:nl1=');
    nl2=input('请输入负序支路数:nl2=');
    nl0=input('请输入零序支路数:nl0=');
    Lf=input('请输入短路类型:Lf=');
    f=input('请输入短路节点号:f=');
    If=input('请输入纵横故障标志:If=');
    zf=input('请输入接地阻抗:zf=');
    zg=input('请输入接地阻抗:zg=');
    B1=input('请输入正序支路参数:B1=');
    B2=input('请输入负序支路参数:B2=');
    B0=input('请输入零序支路参数:B0=');
    A1=input('请输入不对称系数:A1=');
    Vcs=input('请输入由各节点的初始电压标幺值形成的列矩阵:Vcs=');
    Z1=zeros(n1);Z2=zeros(n2);Z0=zeros(n0);
    Y1=zeros(n1);Y2=zeros(n2);Y0=zeros(n0);
    V1=zeros(n1,1);V2=zeros(n2,1);V0=zeros(n0,1);
    I1=zeros(nl1,1);I2=zeros(nl2,1);I0=zeros(nl0,1);
    for m1=1:3
        m=0;
        if m1==1
            nl=nl1;B=B1;Z=Z1;n=n1;
        elseif m1==2
            nl=nl2;B=B2;Z=Z2;n=n2;
        elseif m1==3
            nl=nl0;B=B0;Z=Z0;n=n0;
        end
        m=0;Z=zeros(n);V=zeros(n);I=zeros(nl);
        for k1=1:nl
    p=B(k1,1);q=B(k1,2);
    if B(k1,6)==0
        k=1./B(k1,5);
    else
        k=B(k1,5);
    end
    if p==0
        if q>m
            Z(q,q)=B(k1,3);m=m+1;
        else
            for i=1:m
                Z(i,m+1)=-Z(i,q);Z(m+1,i)=-Z(q,i);
            end
            Z(m+1,m+1)=Z(q,q)+B(k1,3);
                for i=1:m
                    for j=1:m
                    Z(i,j)=Z(i,j)-Z(i,m+1)*Z(m+1,j)./Z(m+1,m+1);
                    end
                    Z(i,m+1)=0;
                end
                for i=1:m+1
                    Z(m+1,i)=0;
                end
        end
    else if q>m
            for i=1:m
                Z(i,q)=Z(i,p)*k;Z(q,i)=Z(p,i)*k;
            end
            Z(q,q)=k^2*Z(p,p)+k^2*B(k1,3);
            m=m+1;
        else
            for i=1:m
                Z(i,m+1)=k*Z(i,p)-Z(i,q);
                Z(m+1,i)=k*Z(p,i)-Z(q,i);
            end
            Z(m+1,m+1)=k^2*Z(p,p)+Z(q,q)-2*k*Z(p,q)+k^2*B(k1,3);
            for i=1:m
                for j=1:m
                    Z(i,j)=Z(i,j)-Z(i,m+1)*Z(m+1,j)./Z(m+1,m+1);
                end
                Z(i,m+1)=0;
            end
            for i=1:m+1
                Z(m+1,i)=0;
            end
        end
    end
        end
if m1==1
    Z1=Z;
elseif m1==2
    Z2=Z;
elseif m1==3
    Z0=Z;
end
    end
    if If==0
        Z1(f,f)=Z1(f,f);
        Z2(f,f)=Z2(f,f);
        Z0(f,f)=Z0(f,f);
    else
        Z1(f,f)=Z1(f,f)+Z1(1,1)-2*Z1(f,1);
        Z2(f,f)=Z2(f,f)+Z2(1,1)-2*Z2(f,1);
        Z0(f,f)=Z0(f,f)+Z0(1,1)-2*Z0(f,1);
    end
    if Lf==1
        Z4=Z2(f,f)+Z0(f,f)+3*zf;k2=1;k0=1;I1(f)=Vcs(f)./(Z1(f,f)+Z4);
        I2(f)=k2*I1(f);I0(f)=k0*I1(f);a1=I1(f);a2=I2(f);a0=I0(f);
    elseif Lf==2
        Z4=Z2(f,f)+2*zf;k2=-1;k0=0;I1(f)=Vcs(f)./(Z1(f,f)+Z4);
        I2(f)=k2*I1(f);I0(f)=k0*I1(f);a1=I1(f);a2=I2(f);a0=I0(f);
    elseif Lf==3
        Z4=zf+(Z2(f,f)+zf)*(Z0(f,f)+zf+3*zg)./(Z2(f,f)+Z0(f,f)+2*zf+3*zg);
        k2=-(Z0(f,f)+zf+3*zg)./(Z2(f,f)+Z0(f,f)+2*zf+3*zg);
        k0=-(Z2(f,f)+zf)./(Z2(f,f)+Z0(f,f)+2*zf+3*zg);
        I1(f)=Vcs(f)./(Z1(f,f)+Z4);
        I2(f)=k2*I1(f);I0(f)=k0*I1(f);a1=I1(f);a2=I2(f);a0=I0(f);
    elseif Lf==4
        Z4=zf+(Z2(f,f)+zf)*(Z0(f,f)+zf)./(Z2(f,f)+Z0(f,f)+2*zf);
        k2=-(Z0(f,f)+zf)./(Z2(f,f)+Z0(f,f)+2*zf);
        k0=-(Z2(f,f)+zf)./(Z2(f,f)+Z0(f,f)+2*zf);
        I1(f)=Vcs(f)./(Z1(f,f)+Z4);
        I2(f)=k2*I1(f);I0(f)=k0*I1(f);a1=I1(f);a2=I2(f);a0=I0(f);
    elseif Lf==5
        Z4=Z2(f,f)+Z0(f,f)+3*zf;k2=1;k0=1;I1(f)=Vcs(f)./(Z1(f,f)+Z4);
        I2(f)=k2*I1(f);I0(f)=k0*I1(f);a1=I1(f);a2=I2(f);a0=I0(f);
    end
    disp('故障点处的正序电流标幺值为:');
    disp(a1);
    disp('故障点处的负序电流标幺值为:');
    disp(a2);
    disp('故障点处的零序电流标幺值为:');
    disp(a0);
    for i=1:n1
        V1(i)=Vcs(i)-I1(f)*Z1(i,f);
    end
    for i=1:n2
        V2(i)=-I2(f)*Z2(i,f);
    end
    for i=1:n0
        V0(i)=-I0(f)*Z0(i,f);
    end
    disp('各节点的正序电压标幺值(节点号从小到大)依次为:');
    disp(V1);
    disp('各节点的负序电压标幺值(节点号从小到大)依次为:');
    disp(V2);
    disp('各节点的零序电压标幺值(节点号从小到大)依次为:');
    disp(V0);
    for i=1:3
        if i==1
            B=B1;V=V1;nl=nl1;
        elseif i==2
            B=B2;V=V2;nl=nl2;
        elseif i==3
            B=B0;V=V0;nl=nl0;
        end
        for j=1:nl
            if B(j,6)==0
                k=B(j,5);
            else
                k=1./B(j,5);
            end
            p=B(j,1);q=B(j,2);
            if p==0
                e=0;b=B(j,3);
                I(j)=(e-V(q)./k)./b;
            else
                I(j)=(V(p)-V(q)./k)./B(j,3);
            end
        end
        if i==1
            I1=I;
        elseif i==2
            I2=I;
        elseif i==3
            I0=I;
        end
    end
    disp('各支路的正序电流标幺值(顺序同输入B时一样)依次为:');
    for i=1:nl
        disp(I1(i));
    end
    disp('各支路的负序电流标幺值(顺序同输入B时一样)依次为:');
    for i=1:nl
        disp(I2(i));
    end
    disp('各支路的零序电流标幺值(顺序同输入B时一样)依次为:');
    for i=1:nl
        disp(I0(i));
    end
    for i=1:3
        if i==1
            s0=a0;s1=a1;s2=a2;
        elseif i==2
            s0=V0;s1=V1;s2=V2;
        else 
            s0=I0;s1=I1;s2=I2;
        end
        for j=1:3
            CA=s0*A1(j,1)+s1*A1(j,2)+s2*A1(j,3);
            if j==1
                A=CA;
            elseif j==2
                B=CA;
            elseif j==3
                C=CA;
            end
        end
        if i==1
            Iadl=A;Ibdl=B;Icdl=C;
        elseif i==2
            Vajy=A;Vbjy=B;Vcjy=C;
        elseif i==3
            Iazl=A;Ibzl=B;Iczl=C;
        end
    end
    disp('故障点处A相电流Iadl为:');
    disp(Iadl);
    disp('故障点处B相电流Iadl为:');
    disp(Ibdl);
    disp('故障点处C相电流Iadl为:');
    disp(Icdl);
    disp('各节点处A相电压Vajy(节点号从小到大)依次为:');
    disp(Vajy);
    disp('各节点处B相电压Vbjy(节点号从小到大)依次为:');
    disp(Vbjy);
    disp('各节点处C相电压Vcjy(节点号从小到大)依次为:');
    disp(Vcjy);
    disp('各支路A相电流Iazl(顺序同输入B时一样)依次为:');
    for i=1:nl
        disp(Iazl(i));
    end
    disp('各支路B相电流Ibzl(顺序同输入B时一样)依次为:');
    for i=1:nl
        disp(Ibzl(i));
    end
    disp('各支路C相电流Iczl(顺序同输入B时一样)依次为:');
    for i=1:nl
        disp(Iczl(i));
    end
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -