电力系统计算机算法

电力系统计算机算法

牛拉法

function NL()
close;%关闭上一文件
clear;%清除工作区变量
clc;%清除命令窗口内容
tic
n=9;
nl=9;
isb=1;  %平衡母线节点号(固定为1)
pr=0.00001;  % 误差精度
%矩阵B1的每行是由下列参数构成的:
%某支路的首端号P;
%某支路末端号Q,且P=pr
            IT2=IT2+1;
        end
    end
    ICT2(a)=IT2;ICT1=ICT1+1;
    for k=1:n
        dy(k)=sqrt(e(k)^2+f(k)^2);
    end
    for i=1:n
        Dy(ICT1,i)=dy(i);
    end
end          %用高斯消去法解"w=-J*V"
disp('迭代次数');disp(ICT1);
disp('没有达到精度要求的个数');
disp(ICT2);
for k=1:n
    V(k)=sqrt(e(k)^2+f(k)^2);O(k)=atan(f(k)./e(k))*180./pi;
end
E=e+f*j;
disp('各节点的实际电压标么值E为(节点号从小到大排列):');
disp(E);
disp('各节点的电压大小V为(节点号从小到大排列):');
disp(roundn(V,-5))
disp('各节点的电压相角O为(节点号从小到大排列):');
disp(O);
for p=1:n
    C(p)=0;
    for q=1:n
        C(p)=C(p)+conj(Y(p,q))*conj(E(q));
    end
    S(p)=E(p)*C(p);
end
disp('各节点的功率S为(节点号从小到大排列):');
disp(S);
disp('各条支路的首端功率Si为(顺序同您输入B1时一样):');
for i=1:nl
    if B1(i,6)==0
        p=B1(i,1);q=B1(i,2);
    else  p=B1(i,2);q=B1(i,1);
    end
    Si(p,q)=E(p)*(conj(E(p))*conj(B1(i,4)./2)+(conj(E(p)*B1(i,5))-conj(E(q)))*conj(1./(B1(i,3)*B1(i,5))));
    disp(roundn(Si(p,q),-5));
end
disp('各条支路的末端功率Sj为(顺序同您输入B1时一样):');
for i=1:nl
    if B1(i,6)==0
        p=B1(i,1);q=B1(i,2);
    else  p=B1(i,2);q=B1(i,1);
    end
    Sj(q,p)=E(q)*(conj(E(q))*conj(B1(i,4)./2)+(conj(E(q)./B1(i,5))-conj(E(p)))*conj(1./(B1(i,3)*B1(i,5))));
    disp(roundn(Sj(q,p),-5));
end
disp('各条支路的功率损耗DS为(顺序同您输入B1时一样):');
for i=1:nl
    if B1(i,6)==0
        p=B1(i,1);q=B1(i,2);
    else  p=B1(i,2);q=B1(i,1);
    end
    DS(i)=Si(p,q)+Sj(q,p);
    disp(roundn(DS(i),-5)*100);
end
for i=1:ICT1
    Cs(i)=i;
end
disp('以下是每次迭代后各节点的电压值(如图所示)');
plot(Cs,Dy,'linewidth',2.5),xlabel('迭代次数'),ylabel('电压(标幺值)'),title('电压迭代次数曲线');
legend('节点1','节点2','节点3','节点4','节点5','节点6','节点7','节点8','节点9');
t=toc

PQ法

% 本程序是用PQ分解法进行潮流计算
clear
clc
tic
n=9;
nl=9;
isb=1;
pr=0.00001;
%矩阵B1的每行是由下列参数构成的:
%某支路的首端号P;
%某支路末端号Q,且P=pr
                ICT2=ICT2+1;
            end
        end
    end
    Np(K)=ICT2;
    if ICT2~=0
        for i=2:n
            DP(i)=B(i,i)*DP(i);
            if i~=n
                IC1=i+1;
                for k=IC1:n
                    DP(k)=DP(k)-B(k,i)*DP(i);
                end
            else
                for LZ=3:i
                    L=i+3-LZ;
                    IC4=L-1;
                    for MZ=2:IC4
                        I=IC4+2-MZ;
                        DP(I)=DP(I)-B(I,L)*DP(L);
                    end
                end
            end
        end
        for i=2:n
            O(i)=O(i)-DP(i);
        end
        kq=1;L=0;
        for i=1:n
            if B2(i,6)==2
                C(i)=0;L=L+1;
                for k=1:n
                    C(i)=C(i)+V(k)*(G(i,k)*sin(O(i)-O(k))-BI(i,k)*cos(O(i)-O(k)));
                end
                DQ1(i)=Q(i)-V(i)*C(i);
                DQ(L)=DQ1(i)./V(i);
                DET=abs(DQ1(i));
                if DET >=pr
                    ICT3=ICT3+1;
                end
            end
        end
    else kp=0;
        if kq~=0;
            L=0;
            for i=1:n
                if B2(i,6)==2
                    C(i)=0;L=L+1;
                    for k=1:n
                        C(i)=C(i)+V(k)*(G(i,k)*sin(O(i)-O(k))-BI(i,k)*cos(O(i)-O(k)));
                    end
                    DQ1(i)=Q(i)-V(i)*C(i);
                    DQ(L)=DQ1(i)./V(i);
                    DET=abs(DQ1(i));
                end
            end
        end
    end
    Nq(K)=ICT3;
    if ICT3~=0
        L=0;
        for i=1:na
            DQ(i)=A(i,i)*DQ(i);
            if i==na
                for LZ=2:i
                    L=i+2-LZ;
                    IC4=L-1;
                    for MZ=1:IC4
                        I=IC4+1-MZ;
                        DQ(I)=DQ(I)-A(I,L)*DQ(L);
                    end
                end
            else
                IC1=i+1;
                for k=IC1:na
                    DQ(k)=DQ(k)-A(k,i)*DQ(i);
                end
            end
        end
        L=0;
        for i=1:n
            if B2(i,6)==2
                L=L+1;
                V(i)=V(i)-DQ(L);
            end
        end
        kp=1;
        K=K+1;
    else
        kq=0;
        if kp~=0
            K=K+1;
        end
    end
    for i=1:n
        Dy(K-1,i)=V(i);
    end
end
disp('迭代次数');
disp(K);
disp('每次没有达到精度要求的有功功率个数为');
disp(Np);
disp('每次没有达到精度要求的无功功率个数为');
disp(Nq);
for k=1:n
    E(k)=V(k)*cos(O(k))+V(k)*sin(O(k))*j;
    O(k)=O(k)*180./pi;
end
disp('各节点的电压标幺值E为(节点号从小到大排):');
disp(E);
disp('各节点的电压U大小(节点号从小到大排)为:');
disp(roundn(V,-5))
disp('各节点的电压相角O(节点号从小到大排)为:');
disp(O);
for p=1:n
    C(p)=0;
    for q=1:n
        C(p)=C(p)+conj(Y(p,q))*conj(E(q));
    end
    S(p)=E(p)*C(p);
end
disp('各节点的功率S(节点号从小到大排)为:');
disp(S);
disp('各条支路的首端功率Sj(顺序同您输入B1时一样)为:');
for i=1:nl
    if B1(i,6)==0
        p=B1(i,1);q=B1(i,2);
    else p=B1(i,2);q=B1(i,1);
    end
    Si(p,q)=E(p)*(conj(E(p))*conj(B1(i,4)./2)+(conj(E(p)*B1(i,5))-conj(E(q)))*conj(1./(B1(i,3)*B1(i,5))));
    disp(roundn(Si(p,q),-5));
end
disp('各条支路的末端功率Sj(顺序同您输入B1时一样)为:');
for i=1:nl
    if B1(i,6)==0
        p=B1(i,1);q=B1(i,2);
    else p=B1(i,2);q=B1(i,1);
    end
    Sj(q,p)=E(q)*(conj(E(q))*conj(B1(i,4)./2)+(conj(E(q)./B1(i,5))-conj(E(p)))*conj(1./(B1(i,3)*B1(i,5))));
    disp(roundn(Sj(q,p),-5));
end
disp('各条支路的功率损耗DS(顺序同您输入B1时一样)为:');
for i=1:nl
    if B1(i,6)==0
        p=B1(i,1);q=B1(i,2);
    else p=B1(i,2);q=B1(i,1);
    end
    DS(i)=Si(p,q)+Sj(q,p);
     disp(roundn(DS(i),-5));
end
for i=1:K
    Cs(i)=i;
    for j=1:n
        Dy(K,j)=Dy(K-1,j);
    end
end
disp('以下是每次迭代后各节点的电压值(如图所示)');
  plot(Cs,Dy,'linewidth',2.5),xlabel('迭代次数'),ylabel('电压(标幺值)'),title('电压迭代次数曲线');
legend('节点1','节点2','节点3','节点4','节点5','节点6','节点7','节点8','节点9');
set(gcf,'color','w');
t=toc

支路追加法

function[Z]=ex3_impedance(n,nl,B)
%n为独立节点数
%nl为支路数
%B为线路参数形成的矩阵
m=0;Z=zeros(n);
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
disp('阻抗矩阵Z=');
disp(Z);
end

对称短路计算

function [Z,V,I]=sym_short_circuit_calculation(NF,n,nl,B,V0,D)
% NF为短路点的数目
% n为独立节点数
% nl为支路数
% B为线路参数形成的矩阵
% V0为各节点的初始电压表标幺值形成的列矩阵
% D为短路号以及短路点矩阵组成的矩阵
Z=zeros(n);V=zeros(n);I=zeros(nl);
Z=ex3_impedance(n,nl,B); 
for r=1:NF
    Idb=V0(D(r,1),1)./(Z(D(r,1),D(r,1))+D(r,2));%求短路点电流的标么值
    ts1=('以下是短路点');
    ft=num2str(D(r,1));  %将故障节点编号由数据类型转换为字符串类型
    ts2=('各时刻的结果');
    dn=strcat(ts1,ft,ts2);  %将ft,ts1,ts2连接用disp函数输出显示
    disp(dn);
    for k=1:n
        Vb(k)=V0(k,1)-Idb*Z(k,D(r,1));%求各节点的电压标么值
    end
%     for i1=1:nl
%         p=B(i1,1);q=B(i1,2);
%         if p~=0&B(i1,8)==0
%             if B(i1,6)==0
%                 k=B(i1,5);
%                 V(i1)=Vb(p)-Vb(q)./k;
%             else
%                 k=1./B(i1,5);
%                 V(i1)=k*Vb(p)-Vb(q);
%             end
%         else
%             V(i1)=1-Vb(q);
%         end
%         Ib(i1)=V(i1)./B(i1,3);%求各支路的电流标么值
%     end
    disp('0s时短路点的电流为');
    disp(Idb);
    disp('0s时各节点的电压标么值为');
    disp(Vb);
%     disp('0s时各支路的电流标么值为');
%     disp(Ib)
end
     

不对称短路计算

function[]=asym_short_circuit_calculation(NF,n1,n2,n0,nl1,nl2,nl0,f,If,zf,zg,B1,B2,B0,A1,Vcs,N)
% N为调用次数
for i1=1:NF
    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 a=1:N 
    Lf=input('故障类型标志(单相接地短路为1,两相短路时为2,两相接地短路时为3,单相断线时为4,两相断线时为5,若要终止本程序请输入-1)Lf=');
%    if Lf==-1|Lf~=1|Lf~=2|Lf~=3|Lf~=4|Lf~=5
 %       disp('本程序已被终止,谢谢使用!');
 %       break
 %   end
    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
        V=zeros(n);I=zeros(nl);
        Z=ex3_impedance(n,nl,B);
        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); %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); %故障相(A相)正序短路电流标幺值
        I2(f)=k2*I1(f);             %故障相(A相)负序短路电流标幺值
        I0(f)=k0*I1(f);             %故障相(A相)零序短路电流标幺值
        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 ab=1:nl
            if B(ab,6)==0
                k=B(ab,5);
            else k=1./B(ab,5);
            end
            p=B(ab,1);q=B(ab,2);
            if p==0
                e=0;b=B(ab,3);
                I(ab)=(e-V(q)./k)./b;                    %接地支路电流(均归算至首端)
            else
                I(ab)=(V(p)-V(q)./k)./B(ab,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                                 %分别求故障点A,B,C三相各相的总电流,各个节点A,B,C三相各相的总电压,各支路A,B,C三相各相的总电流
        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 ab=1:3              
            CA=s0*A1(ab,1)+s1*A1(ab,2)+s2*A1(ab,3); %根据不对称系数,由序分量得到相分量
            if ab==1
                A=CA;            %A相电气量
            elseif ab==2
                B=CA;           %B相电气量
            elseif ab==3
                C=CA;           %C相电气量
            end
        end
        if i==1
            Iadl=A;Ibdl=B;Icdl=C;%故障点A,B,C三相各相的总电流
        elseif i==2
            Vajy=A;Vbjy=B;Vcjy=C;%各个节点A,B,C三相各相的总电压
        else
            Iazl=A;Ibzl=B;Iczl=C;%各支路A,B,C三相各相的总电流
        end
    end
    disp('故障点处A相电流Iadl为:');
    disp(Iadl);
    disp('故障点处B相电流Ibdl为:');
    disp(Ibdl);
    disp('故障点处C相电流Icdl为:');
    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
end

静态稳定计算

S0=1.5+0.9296i;
V0=1;
Xd=0.7571;
w0=100*pi;
Tj=83.44;
zn=0;
Eq=sqrt((V0+imag(S0)*Xd./V0)^2+(real(S0)*Xd./V0)^2);
dtj0=atan(real(S0)*Xd./(V0*(V0+imag(S0)*Xd./V0)));
Psl=Eq*V0./Xd;
C=w0;
D=-1./Tj*Eq*cos(dtj0)*V0./Xd;
E=w0*zn./(2*Tj);
Kp=(Psl-real(S0))./real(S0);
root1=-E+sqrt(E^2+C*D);
root2=-E-sqrt(E^2+C*D);
disp('该系统的静态稳定极限:Psl=');
disp(Psl);
disp('该系统的静态储备系数:Kp=');
disp(Kp);
disp('该系统线性微分方程的特征根为:');
disp(root1);disp(root2);
if zn>=0
    if (root1==conj(root2))||((real(root1)<0)&&(real(root1)<0));
   disp('该系统是静态稳定的。');  
    else
     disp('该系统是不稳定的。');  
    end
elseif zn<0
   disp('该系统是不稳定的。');  
    end

暂态稳定计算

function []=transient_stability()
clear;
clc;
close;
%本程序是用分段计算法计算电力系统的暂态稳定
% S0=2+1.24i; 
S0=1+0.623i; 
V0=1;  
B=[0.6213  exp(10000)   0.7057];
% B=[0.6213  0.9560  0.7057];%分别为正常时、故障时、故障切除后的系统直轴等值电抗
% Tj=111.25;
Tj=55.62;
N=200;
Ni=20;
dt=0.01;
for i=1:Ni
    C(i,1)=1;C(i,2)=B(1);
end
for i=Ni:N
    C(i,1)=0;C(i,2)=B(2);
end
E0=sqrt((V0+imag(S0)*B(1)./V0)^2+(real(S0)*B(1)./V0)^2); %初始电动势
dtj0=atan(real(S0)*B(1)./(V0*(V0+imag(S0)*B(1)./V0))); %初始功角
Q(1)=dtj0*180./pi; %化为角度制
K1=360*50*dt^2./Tj;
P2m=E0*V0./B(2); %故障时电磁功率
P3m=E0*V0./B(3); %故障后电磁功率
dtk=pi-asin(real(S0)./P3m); %切除故障后的最大功角
dtjx=acos((real(S0)*(dtk-dtj0)+P3m*cos(dtk)-P2m*cos(dtj0))./(P3m-P2m)); %极限故障切除角
dtjx(1)=dtjx*180./pi; %极限故障切除角
st=( '故障发生时间为');
sj=num2str(dt*Ni);
ss=('s');
jg=strcat(st,sj,ss);
disp(jg);
for K=2:N+1
    P(K-1)=E0*V0./C(K-1,2);
    if C(K-1,1)==1      %故障发生之前
        Peq(K-1)=P(K-1)*sin(Q(K-1)*pi./180);
        DP(K-1)=real(S0)-Peq(K-1);
        if K==2          %第一时段
            DQ(K)=K1*DP(K-1)./2;
        else
            DQ(K)=DQ(K-1)+K1*DP(K-1)./2;
        end
        Q(K)=Q(K-1)+DQ(K);
    elseif C(K-1,1)==0   %故障发生时
        P1(K-1)=P(K-2);
        P2(K-1)=P(K-1);
        Peq(K-1)=P1(K-1)*sin(Q(K-1));
        DP(K-1)=real(S0)-Peq(K-1);
        DP2(K-1)=real(S0)-P2(K-1)*sin(Q(K-1));
        DQ(K)=DQ(K-1)+K1*(DP(K-1)+DP2(K-1))./2;
        Q(K)=Q(K-1)+DQ(K);
    end
    dtjx(K)=dtjx(K-1);
    if abs(Q(K)-dtjx(K))<0.5
        st=('极限切除时间为');
        sj=num2str(dt*(K-1));
        ss=('s');
        jg=strcat(st,sj,ss);
        disp(jg);
    end
end
disp('程序计算结果如下:')
disp('输出不平衡功率:DP=')
disp(DP)
disp('输出功角增量:DQ=')
disp(DQ);
disp('输出功角:Q=')
disp(Q)
disp('输出电磁功率:Peq=')
disp(Peq)
disp('输出发电机转子摇摆曲线如图Figure No.1所示:')
t=0:dt:dt*N;
plot(t,Q,'b');xlabel('时间(秒)');ylabel('功角(度数)');title('发电机摇摆曲线');
hold on;
plot(t,dtjx,'r','linewidth',1.5)
axis([0 2 0 800]);
end

你可能感兴趣的:(MATLAB,电力系统,matlab)