fm_fault.m

来自「这是一个很适合研究和学习用的电力系统仿真软件」· M 代码 · 共 89 行

M
89
字号
function fm_fault(flag,t)
% FM_FAULT define three phase faults at buses
%
% FM_FAULT(FLAG,T)
%     FLAG   0  fault initialization
%            1  fault interventions
%     T      integration time
%
%Author:    Federico Milano
%Date:      11-Nov-2002
%Update:    13-Jan-2003
%Update:    11-Sep-2003
%Version:   1.1.0
%
%E-mail:    fmilano@thunderbox.uwaterloo.ca
%Web-site:  http://thunderbox.uwaterloo.ca/~fmilano
%
% Copyright (C) 2002-2006 Federico Milano

global Fault DAE Bus Shunt jay Settings Syn SW Varname

% Fault.dat:
%          1.  fault conductance
%          2.  fault susceptance
%          3.  old bus conductance
%          4.  old bus susceptance
%          5.  fault check:
%                          0  if fault is not yet met
%                          1  if fault is met
%                         -1  if fault is ended

switch flag
 case 0 % fault data initializations

  Fault.dat = zeros(Fault.n,5);
  %Fault.ang = DAE.a;
  x = Fault.con(:,7)+jay*Fault.con(:,8);
  x(find(abs(x) == 0)) = jay*1e-6;
  y = 1./x;
  Fault.dat(:,1) = real(y);
  Fault.dat(:,2) = imag(y);
  Fault.dat(:,3) = Shunt.g(Fault.bus);
  Fault.dat(:,4) = Shunt.b(Fault.bus);

 case 1 % faults computations

  for i = 1:Fault.n

    h = Fault.bus(i);

    if t == Fault.con(i,5) % fault intervention

      fm_disp(['Applying fault(s) at bus <', ...
               Varname.bus{h},'> for t = ',num2str(t),' s'])

      % update admittance matrix
      Shunt.g(h) = Fault.dat(i,3) + Fault.dat(i,1);
      Shunt.b(h) = Fault.dat(i,4) + Fault.dat(i,2);
      fm_y

      % update algebraic variables
      conv = fm_nrlf(40,1e-4,1);

    elseif t == Fault.con(i,6) % fault clearance

      fm_disp(['Clearing fault(s) at bus <', ...
               Varname.bus{h},'> for t = ',num2str(t),' s'])

      % update admittance matrix
      Shunt.g(h) = Fault.dat(i,3);
      Shunt.b(h) = Fault.dat(i,4);
      fm_y

      if Syn.n & ~SW.n
        DAE.a = mean(DAE.x(Syn.delta))*ones(Bus.n,1);
        DAE.a(Syn.bus) = DAE.x(Syn.delta);
      else
        DAE.a = DAE.a(Settings.refbus)*ones(Bus.n,1); %Fault.ang;
      end

      % update algebraic variables
      conv = fm_nrlf(40,1e-4,1);

    end

  end

end

⌨️ 快捷键说明

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