電力系統分析實驗--短路計算

程序要求根據已知的電力網的數學模型(節點導納矩陣)及故障點位置,完成該電力系統的對稱短路計算,要求計算出短路電流、短路功率等參數。
這裏寫圖片描述

function Yshortcircuit(Y) 
    if nargin<1
        xd = [
             0   1   0.15j;
             0   2   0.08j;
             4   0   0.175j;
             1   3   0.12j;
             2   4   0.08j;
             3   4   0.07259j];
             Y = Xd2Ybus(xd);
    end
    slbus = input('請輸入短路節點(默認爲3):');
    if isempty(slbus)
        slbus = 3;
    end

    Sb = input('請輸入基準功率(默認爲60)MV·A:');
    if isempty(Sb)
        Sb = 60;
    end

    Uav = input('請輸入節點%d的平均額定電壓(默認爲115)kV:');
    if isempty(Uav)
        Uav = 115;
    end

    nbus = length(Y(:,1));
    Is = zeros(nbus,1);


    Yn = gauss(Y,slbus);
    Yij = Yn(slbus,slbus);          
    Is = -1*Yij;

    fprintf('短路節點%d起始次暫態電流標幺值:',slbus);
    disp(abs(Is));

    fprintf('短路節點%d起始次暫態電流有名值(kA):',slbus);
    disp(abs(Is*Sb/3^0.5/Uav));

    fprintf('節點%d短路時的短路功率爲(MV·A):',slbus);
    disp(abs(Is*Sb));   
end
function Yn = gauss(Y,retain)%高斯消去法
%時間複雜度(n-1)*(n-2)*(n-2)
    nbus = length(Y(1,:));
    nr = length(retain);
    nlist = 1:nbus;%nlist保存該消去而尚未消去的節點
    qlist = nlist;%qlist爲除保留節點外的所有節點集合
    for n = 1:nr
        temp = find(qlist == retain(n));
        qlist(temp) = [];%把將要保留節點置空
    end

    Yn = Y;
    for n = 1:length(qlist)
        qb = qlist(n);
        temp = find(nlist==qb);
        nlist(temp) = [];%把消去的節點從nlist中刪去
        Yt = Yn;
        for p = nlist
            for q = nlist
                %P70 (4-14)公式
                Yt(p,q) = Yn(p,q)-Yn(p,qb)*Yn(qb,q)/Yn(qb,qb);%修改保留部分元素
            end 
        end
        Yt(qb,:) = zeros(1,nbus);%爲保證矩陣階數不變,故不刪除將消去節點所在行列只清零
        Yt(:,qb) = zeros(nbus,1);
        Yn = Yt;        
    end
end
function Y = Xd2Ybus(xd)
    yd = xd;
    yd(:,3) = 1./xd(:,3);
    %save yd yd
    nbus = max(max(yd(:,1:2)));%找出最大的節點標號
    Y = zeros(nbus);%根據節點數量創建零矩陣

    for n = 1:nbus
        for m = 1:n-1%計算節點導納矩陣的非對角元素
            h1 = find(yd(:,1)==m);
            h2 = find(yd(:,2)==n);
            h = intersect(h1,h2);%找出重複元素
            if ~isempty(h)%判斷節點n、m是否有支路直接連接
                Y(n,m) = Y(n,m)-yd(h,3);
                Y(m,n) = Y(n,m);
            end
        end

        %計算節點導納矩陣的對角元素
        h = find(yd(:,1:2)==n);%找出與節點n有支路直接連接的所有支路的導納
        [h1,~] = ind2sub([size(yd(:,1)),2],h);
        Y(n,n) = sum(yd(h1,3));
    end
end
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章