📄 fm_stat.m
字号:
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 + -