📄 fm_busfreq.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 Milanoglobal Busfreq DAE Bus Settingsx = 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 messagesfunction busfreqwarn(idx, msg)fm_disp(strcat('Warning: BUSFREQ #',int2str(idx),msg))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -