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

📄 fm_stat.m

📁 电力系统分析计算程序
💻 M
📖 第 1 页 / 共 2 页
字号:
function fig = fm_stat(varargin)% FM_STAT create GUI for power flow reports%% HDL = FM_STAT(VARARGIN)%%Author:    Federico Milano%Date:      11-Nov-2002%Update:    24-Aug-2003%Version:   2.0.0%%E-mail:    Federico.Milano@uclm.es%Web-site:  http://www.uclm.es/area/gsee/Web/Federico%% Copyright (C) 2002-2008 Federico Milanoglobal Bus DAE Varname Settings Fig Path OPF Themeglobal Oxl Fileabus = DAE.y(Bus.a);vbus = DAE.y(Bus.v);if nargin & ischar(varargin{1})  switch varargin{1}   case 'report'    if OPF.init == 1 | OPF.init == 2      fm_opfrep    else      fm_report    end   case 'toplist'    value = get(gcbo,'Value');    set(gcbo,'Value',value(end))    set(get(gcf,'UserData'), ...        'Value',value(end), ...        'ListboxTop',get(gcbo,'ListboxTop'));   case 'checkabs'    hdl = findobj(Fig.stat,'Tag','CheckABS');    switch get(gcbo,'Checked')     case 'on'      set(gcbo,'Checked','off')      Settings.absvalues = 'off';      set(hdl,'Value',0);     case 'off'      set(gcbo,'Checked','on')      Settings.absvalues = 'on';      set(hdl,'Value',1);    end   case 'report_type'        switch get(gcbo,'Checked')     case 'on'      set(gcbo,'Checked','off')      Settings.report = 0;     case 'off'      set(gcbo,'Checked','on')      Settings.report = 1;    end       case 'violation'    hdl = findobj(Fig.stat,'Tag','CheckVIOL');    switch get(gcbo,'Checked')     case 'on'      set(gcbo,'Checked','off')      Settings.violations = 'off';      set(hdl,'Value',0);     case 'off'      set(gcbo,'Checked','on')      Settings.violations = 'on';      set(hdl,'Value',1);    end   case 'abscheck'    hdl = findobj(Fig.stat,'Tag','absvalues');    switch get(gcbo,'Value')     case 1      Settings.absvalues = 'on';      set(hdl,'Checked','on');     case 0      Settings.absvalues = 'off';      set(hdl,'Checked','off');    end   case 'violcheck'    hdl = findobj(Fig.stat,'Tag','violations');    switch get(gcbo,'Value')     case 1      Settings.violations = 'on';      set(hdl,'Checked','on');     case 0      Settings.violations = 'off';      set(hdl,'Checked','off');    end   case 'sort'    hdl = findobj(gcf,'Tag','PushSort');    maxn = 150;    switch get(hdl,'UserData')     case 'az'      [a,ordbus] = sortbus(Bus,maxn);      [a,ordbus] = sort(getidx(Bus,ordbus));      h = get(gcf,'UserData');      for i = 1:length(h)        String = get(h(i),'String');        set(h(i),'String',String(ordbus))      end      set(hdl,'UserData','1n','CData',fm_mat('stat_sort12'))     case '1n'      [a,ordbus] = sortbus(Bus,maxn);      h = get(gcf,'UserData');      for i = 1:length(h)        String = get(h(i),'String');        set(h(i),'String',String(ordbus))      end      set(hdl,'UserData','az','CData',fm_mat('stat_sortaz'))    end   case 'kvpu'    hdl = findobj(gcf,'Tag','PushVoltage');    switch get(hdl,'UserData')     case 'pu'      set(findobj(Fig.stat,'Tag','ListboxV'),'String',setvar(vbus.*getkv(Bus,0,0)));      set(hdl,'UserData','kv','CData',fm_mat('stat_kv'))     case 'kv'      set(findobj(Fig.stat,'Tag','ListboxV'),'String',setvar(vbus));      set(hdl,'UserData','pu','CData',fm_mat('stat_pu'))    end   case 'plotv'    hdl = findobj(gcf,'Tag','PushVoltage');    figure    switch get(hdl,'UserData')     case 'pu'      bar(vbus)      ylabel('V [p.u.]')     case 'kv'      bar(vbus.*getkv(Bus,0,0))      ylabel('V [kV]')    end    title('Voltage Magnitude Profile')    xlabel('Bus #')   case 'raddeg'    hdl = findobj(gcf,'Tag','PushAngle');    switch get(hdl,'UserData')     case 'deg'      set(findobj(Fig.stat,'Tag','ListboxAng'),'String',setvar(abus));      set(hdl,'UserData','rad','CData',fm_mat('stat_rad'))     case 'rad'      set(findobj(Fig.stat,'Tag','ListboxAng'),'String',setvar(abus*180/pi));      set(hdl,'UserData','deg','CData',fm_mat('stat_deg'))    end   case 'plota'    hdl = findobj(gcf,'Tag','PushAngle');    figure    switch get(hdl,'UserData')     case 'rad'      bar(abus)      ylabel('\theta [rad]')     case 'deg'      bar(abus*180/pi)      ylabel('\theta [deg]')    end    title('Voltage Phase Profile')    xlabel('Bus #')   case 'realpower'    hdl1 = findobj(gcf,'Tag','PushPGL');    switch get(hdl1,'UserData')    case 'I', set(hdl1,'UserData','L')    case 'G', set(hdl1,'UserData','I')    case 'L', set(hdl1,'UserData','G')    end    hdl2 = findobj(gcf,'Tag','PushP');    switch get(hdl2,'UserData')     case 'mw'      set(hdl2,'UserData','pu','CData',fm_mat('stat_pu'))     case 'pu'      set(hdl2,'UserData','mw','CData',fm_mat('stat_mw'))    end    fm_stat pgl   case 'pgl'    hdl1 = findobj(gcf,'Tag','PushPGL');    hdl2 = findobj(gcf,'Tag','PushP');    switch get(hdl2,'UserData')     case 'pu', mva = 1;     case 'mw', mva = Settings.mva;    end    switch get(hdl1,'UserData')     case 'I'      pgl = Bus.Pg;      set(hdl1,'UserData','G','CData',fm_mat('stat_pqg'))     case 'G'      pgl = Bus.Pl;      set(hdl1,'UserData','L','CData',fm_mat('stat_pql'))     case 'L'      pgl = Bus.Pg - Bus.Pl;      set(hdl1,'UserData','I','CData',fm_mat('stat_pqi'))    end    set(findobj(Fig.stat,'Tag','ListboxP'),'String',setvar(pgl*mva));   case 'qgl'    hdl1 = findobj(gcf,'Tag','PushQGL');    hdl2 = findobj(gcf,'Tag','PushQ');    switch get(hdl2,'UserData')     case 'pu', mva = 1;     case 'mvar', mva = Settings.mva;    end    switch get(hdl1,'UserData')     case 'I'      qgl = Bus.Qg;      set(hdl1,'UserData','G','CData',fm_mat('stat_pqg'))     case 'G'      qgl = Bus.Ql;      set(hdl1,'UserData','L','CData',fm_mat('stat_pql'))     case 'L'      qgl = Bus.Qg - Bus.Ql;      set(hdl1,'UserData','I','CData',fm_mat('stat_pqi'))    end    set(findobj(Fig.stat,'Tag','ListboxQ'),'String',setvar(qgl*mva));   case 'plotp'    switch get(findobj(Fig.stat,'Tag','PushP'),'UserData')     case 'pu', mva = 1;            unit = 'p.u.';     case 'mw', mva = Settings.mva; unit = 'MW';    end    switch get(findobj(Fig.stat,'Tag','PushPGL'),'UserData')     case 'I'      pgl = Bus.Pg - Bus.Pl;      tag = 'P_G - P_L';     case 'G'      pgl = Bus.Pg;      tag = 'P_G';     case 'L'      pgl = Bus.Pl;      tag = 'P_L';    end    figure    bar(pgl*mva)    ylabel([tag,' [',unit,']'])    title('Real Power Profile')    xlabel('Bus #')   case 'reactivepower'    hdl1 = findobj(gcf,'Tag','PushQGL');    switch get(hdl1,'UserData')     case 'I', set(hdl1,'UserData','L')     case 'G', set(hdl1,'UserData','I')     case 'L', set(hdl1,'UserData','G')    end    hdl2 = findobj(gcf,'Tag','PushQ');    switch get(hdl2,'UserData')     case 'mvar'      set(hdl2,'UserData','pu','CData',fm_mat('stat_pu'))     case 'pu'      set(hdl2,'UserData','mvar','CData',fm_mat('stat_mvar'))    end    fm_stat qgl   case 'plotq'    switch get(findobj(Fig.stat,'Tag','PushQ'),'UserData')     case 'pu',   mva = 1;            unit = 'p.u.';     case 'mvar', mva = Settings.mva; unit = 'MVar';    end    switch get(findobj(Fig.stat,'Tag','PushQGL'),'UserData')     case 'I'      qgl = Bus.Qg-Bus.Ql;      tag = 'Q_G - Q_L';     case 'G'      qgl = Bus.Qg;      tag = 'Q_G';     case 'L'      qgl = Bus.Ql;      tag = 'Q_L';    end    figure    bar(qgl*mva)    ylabel([tag,' [',unit,']'])    title('Reactive Power Profile')    xlabel('Bus #')  end  returnend% check for data fileif isempty(File.data)  fm_disp('Set a data file for viewing static report.',2)  returnend% check for initial power flow solutionif ~Settings.init  fm_disp('Solve base case power flow...')  Settings.show = 0;  fm_set('lf')  Settings.show = 1;  if ~Settings.init, return, endendif Fig.stat > 0  figure(Fig.stat)  set(findobj(Fig.stat,'Tag','ListboxBus'),'String',setbus);  if strcmp(get(findobj(Fig.stat,'Tag','PushAngle'),'UserData'),'rad')    set(findobj(Fig.stat,'Tag','ListboxAng'),'String',setvar(abus));  else    set(findobj(Fig.stat,'Tag','ListboxAng'),'String',setvar(abus*180/pi));  end  if strcmp(get(findobj(Fig.stat,'Tag','PushVoltage'),'UserData'),'pu')    set(findobj(Fig.stat,'Tag','ListboxV'),'String',setvar(vbus));  else    set(findobj(Fig.stat,'Tag','ListboxV'),'String',setvar(vbus.*getkv(Bus,0,0)));  end  switch get(findobj(Fig.stat,'Tag','PushP'),'UserData')   case 'pu', mva = 1;   case 'mw', mva = Settings.mva;  end  switch get(findobj(Fig.stat,'Tag','PushPGL'),'UserData')   case 'I', pgl = Bus.Pg-Bus.Pl;   case 'G', pgl = Bus.Pg;   case 'L', pgl = Bus.Pl;  end  set(findobj(Fig.stat,'Tag','ListboxP'),'String',setvar(pgl*mva));  switch get(findobj(Fig.stat,'Tag','PushQ'),'UserData')   case 'pu', mva = 1;   case 'mvar', mva = Settings.mva;  end  switch get(findobj(Fig.stat,'Tag','PushQGL'),'UserData')   case 'I', qgl = Bus.Qg-Bus.Ql;   case 'G', qgl = Bus.Qg;   case 'L', qgl = Bus.Ql;  end  set(findobj(Fig.stat,'Tag','ListboxQ'),'String',setvar(qgl*mva));  set(findobj(Fig.stat,'Tag','ListboxState'),'String',setx);  if nargin > 0,    set(findobj(Fig.stat,'Tag','ListboxServ'),'String',varargin{1});  elseif OPF.init    set(findobj(Fig.stat,'Tag','ListboxServ'),'String',OPF.report);  else,    set(findobj(Fig.stat,'Tag','ListboxServ'),'String',[]);  end  returnendif Bus.n > 150,  fm_disp(['Only the first 150 buses are reported in the Static', ...      ' Report GUI'])endif DAE.n > 100,  fm_disp(['Only the first 100 state variables are reported in the Static', ...      ' Report GUI'])endh0 = figure('Color',Theme.color01, ...  'Units', 'normalized', ...  'Colormap',[], ...  'CreateFcn','Fig.stat = gcf;', ...  'DeleteFcn','Fig.stat = 0;', ...  'FileName','fm_stat', ...  'MenuBar','none', ...  'Name','Static Report', ...  'NumberTitle','off', ...  'PaperPosition',[18 180 576 432], ...  'PaperUnits','points', ...  'Position',sizefig(0.6984,0.6377), ...  'Resize','on', ...  'ToolBar','none');% Menu Fileh1 = uimenu('Parent',h0, ...  'Label','File', ...  'Tag','MenuFile');h2 = uimenu('Parent',h1, ...  'Callback','fm_stat report', ...  'Label','Create report', ...  'Tag','OTV', ...  'Accelerator','r');h2 = uimenu('Parent',h1, ...  'Callback','close(gcf)', ...  'Label','Exit', ...  'Tag','NetSett', ...  'Accelerator','x', ...  'Separator','on');% Menu Viewh1 = uimenu('Parent',h0, ...  'Label','View', ...  'Tag','MenuView');h2 = uimenu('Parent',h1, ...  'Callback','fm_stat plotv', ...  'Label','Voltage Profile', ...  'Tag','v_prof', ...  'Accelerator','v');h2 = uimenu('Parent',h1, ...  'Callback','fm_stat plota', ...  'Label','Angle Profile', ...  'Tag','a_prof', ...  'Accelerator','a');h2 = uimenu('Parent',h1, ...  'Callback','fm_stat plotp', ...  'Label','Real Power Profile', ...  'Tag','v_prof', ...  'Accelerator','p');h2 = uimenu('Parent',h1, ...  'Callback','fm_stat plotq', ...  'Label','Reactive Power Profile', ...  'Tag','a_prof', ...  'Accelerator','q');% Menu Preferencesh1 = uimenu('Parent',h0, ...  'Label','Preferences', ...  'Tag','MenuPref');h2 = uimenu('Parent',h1, ...  'Callback','fm_stat kvpu', ...  'Label','Switch voltage units', ...  'Tag','tvopt', ...  'Accelerator','k');h2 = uimenu('Parent',h1, ...  'Callback','fm_stat raddeg', ...  'Label','Switch radiant/degree', ...  'Tag','tvopt', ...  'Accelerator','d');h2 = uimenu('Parent',h1, ...

⌨️ 快捷键说明

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