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

📄 fm_busfreq.m

📁 这是一个很适合研究和学习用的电力系统仿真软件
💻 M
字号:
function  fm_busfreq(flag)
%FM_BUSFREQ defines bus frequency measurement
%
%
%Author:    Federico Milano
%Date:      19-Dec-2003
%Version:   1.0.0
%
%E-mail:    fmilano@thunderbox.uwaterloo.ca
%Web-site:  http://thunderbox.uwaterloo.ca/~fmilano
%
% Copyright (C) 2002-2006 Federico Milano

global Busfreq DAE Bus Settings

x = DAE.x(Busfreq.x);
w = DAE.x(Busfreq.w);
theta = DAE.a(Busfreq.bus);
Tf = Busfreq.con(:,2);
Tw = Busfreq.con(:,3);
theta0 = Busfreq.dat(:,1);
k = Busfreq.dat(:,2);

switch flag
 case 0 % initialization

  %check time constants
  idx = find(Tf == 0);
  if idx
    busfreqwarn(idx, ['Time constant Tf cannot be zero. Tf = 0.001 ' ...
                      's will be used.'])
  end
  Busfreq.con(idx,2) = 0.001;
  idx = find(Tw == 0);
  if idx
    busfreqwarn(idx, ['Time constant Tw cannot be zero. Tw = 0.001 ' ...
                      's will be used.'])
  end
  Busfreq.con(idx,3) = 0.001;

  %variable initialization
  DAE.x(Busfreq.x) = 0;
  x = DAE.x(Busfreq.x);
  DAE.x(Busfreq.w) = 1;
  w = DAE.x(Busfreq.w);
  Busfreq.dat(:,1) = theta;
  Busfreq.dat(:,2) = 1./Tf/Settings.rad;

  fm_disp('Initialization of frequency measurement components completed.')

 case 1 % algebraic equations


 case 2 % algebraic Jacobians


 case 3 % differential equations

  DAE.f(Busfreq.x) = (k.*(theta-theta0)-x)./Tf;
  DAE.f(Busfreq.w) = (-x+k.*(theta-theta0)+1-w)./Tw;
  % non-windoup limits

 case 4 % state variable Jacobians

  % DAE.Fx
  DAE.Fx = DAE.Fx + sparse(Busfreq.x,Busfreq.x,-1./Tf,DAE.n,DAE.n);
  DAE.Fx = DAE.Fx + sparse(Busfreq.w,Busfreq.x,-1./Tw,DAE.n,DAE.n);
  DAE.Fx = DAE.Fx + sparse(Busfreq.w,Busfreq.w,-1./Tw,DAE.n,DAE.n);

  % DAE.Fy
  DAE.Fy = DAE.Fy + sparse(Busfreq.x,Busfreq.bus,k./Tf,DAE.n,2*Bus.n);
  DAE.Fy = DAE.Fy + sparse(Busfreq.w,Busfreq.bus,k./Tw,DAE.n,2*Bus.n);

end

% -------------------------------------------------------------------
% function for creating warning messages
function busfreqwarn(idx, msg)
fm_disp(strcat('Warning: BUSFREQ #',int2str(idx),msg))

⌨️ 快捷键说明

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