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

📄 fm_set.m

📁 这是一个很适合研究和学习用的电力系统仿真软件
💻 M
📖 第 1 页 / 共 2 页
字号:
function fm_set(varargin)
% FM_SET define general settings and operations for
%        the main window and other utilities
%
%FM_SET(COMMAND)
%       COMMAND = 'lf' solves power flow
%       COMMAND = 'setdata' sets data file
%       COMMAND = 'opensys' load system
%       COMMAND = 'savesys' save current system
%       etc.
%
%Author:    Federico Milano
%Date:      11-Nov-2002
%Update:    10-Feb-2003
%Update:    27-Feb-2003
%Version:   1.0.2
%
%E-mail:    fmilano@thunderbox.uwaterloo.ca
%Web-site:  http://thunderbox.uwaterloo.ca/~fmilano
%
% Copyright (C) 2002-2006 Federico Milano

fm_var

command = varargin{1};

switch command
 case 'colormap'

  map = [0         0         0;
         0         0    0.5020;
         0         0    1.0000;
         0.5020         0         0;
         0.5020         0    0.5020;
         1.0000         0         0;
         1.0000         0    1.0000;
         0    0.5020         0;
         0    0.7530    0.5020;
         0.5020    0.5020         0;
         0.5020    0.5020    0.5020;
         0.7530    0.7530    0.7530;
         0    1.0000         0;
         0    0.7530    1.0000;
         1.0000    1.0000         0;
         1.0000    1.0000    1.0000];
  set(gcf,'ColorMap',map);

 case 'delete'

  Fig.main = 0;
  Hdl.status = 0;
  Hdl.text = 0;
  Hdl.status = 0;
  Hdl.frame = 0;
  Hdl.bar = 0;
  Hdl.axes = 0;

 case 'keypress'

  hdl = findobj(gcbf,'Tag','EditCommand');
  tasto = get(Fig.main,'CurrentCharacter');
  if isempty(tasto), return, end
  switch double(tasto)
   case 13
    fm_set('command')
   case 8
    testo = get(hdl,'String');
    if length(testo) <= 1
      testo = '';
    else
      testo = testo(1:end-1);
    end
    set(hdl,'String',testo)
   case 9
    set(hdl,'SelectionHighlight','on')
   case 127
    set(hdl,'String','')
   case 28
    stringa = get(hdl,'String');
    set(hdl,'String',stringa(1:end-1),'UserData',stringa)
   case 29
    stringa = get(hdl,'String');
    set(hdl,'String',stringa(1:end-1),'UserData',stringa)
   case 27
    fm_set('exit')
   case 30
    hdll = findobj(gcbf,'Tag','ListCommand');
    stringa = get(hdll,'String');
    value = max(get(hdll,'Value')-1,1);
        if ~strcmp(stringa{value},'<empty>'),
          set(hdl,'String',stringa{value}),
          set(hdll,'Value',max(value,1))
        end
   case 31
    hdll = findobj(gcbf,'Tag','ListCommand');
    stringa = get(hdll,'String');
    value = min(get(hdll,'Value')+1,length(stringa));
    if ~strcmp(stringa{value},'<empty>'),
      set(hdl,'String',stringa{value}),
      set(hdll,'Value',max(value,1))
    end
   otherwise
    set(hdl,'String',[get(hdl,'String'),tasto])
  end

 case 'exit'

  uiwait(fm_choice('Quit PSAT?'))
  if Settings.ok,
    a = fieldnames(Fig);
    for i = length(a):-1:1
      fig = getfield(Fig,a{i});
      if fig, close(fig), end
    end
  end

 case 'setdefault'

  uiwait(fm_choice('Set Default Values?'));
  if Settings.ok == 1
    hdl1 = findobj(gcbf,'Tag','EditText1');
    set(hdl1,'String','50');
    Settings.freq = 50;
    Settings.rad = 2*pi*Settings.freq;
    hdl2 = findobj(gcbf,'Tag','EditText2');
    set(hdl2,'String','100');
    Settings.mva = 100;
    hdl3 = findobj(gcbf,'Tag','EditText3');
    set(hdl3,'String','0');
    Settings.t0 = 0;
    hdl4 = findobj(gcbf,'Tag','EditText4');
    set(hdl4,'String','30');
    Settings.tf = 30;
    hdl5 = findobj(gcbf,'Tag','EditText5');
    set(hdl5,'String','1e-5');
    Settings.lftol = 1e-5;
    hdl6 = findobj(gcbf,'Tag','EditText6');
    set(hdl6,'String','20');
    Settings.lfmit = 20;
    hdl7 = findobj(gcbf,'Tag','EditText7');
    Settings.dyntol = 1e-5;
    set(hdl7,'String','1e-5');
    hdl8 = findobj(gcbf,'Tag','EditText8');
    Settings.dynmit = 20;
    set(hdl8,'String','20');

    Settings.vs = 0;
    Settings.plot = 1;
    Settings.red = 1;
    Settings.showlf = 0;
    Settings.dlf = 0;
    Settings.dac = 0;
    Settings.method = 2;
    Settings.plottype = 1;

    fm_disp('Default parameter values set.')
  else
    fm_disp('No parameter values resetting.')
  end

 case 'savesys'

  if isempty(Varname.bus) | Settings.init == 0,
    fm_disp('No system is loaded. ',2),
    return,
  end
  fileout = fm_filenum('out');
  filedata = strrep(File.data,'@ ','');
  filepert = strrep(File.pert,'@ ','');

  pathdata = Path.data;
  if strcmp(pathdata(1),'~')
    pathdata = [getenv('HOME'),pathdata(2:end)];
  end

  pathpert = Path.pert;
  if ~isempty(Path.pert)
    if strcmp(pathpert(1),'~')
      pathpert = [getenv('HOME'),pathpert(2:end)];
    end
  end

  filedata = strrep(filedata,'(mdl)','_mdl');
  Source.data = ...
      strvcat(textread([pathdata,deblank(filedata),'.m'], ...
                       '%s','delimiter', ...
                       '\n','whitespace',''));

  if ~isempty(Path.pert)
    Source.pert = ...
        strvcat(textread([pathpert,deblank(filepert),'.m'], ...
                         '%s','delimiter', ...
                         '\n','whitespace',''));
  end
  hdlpert = Hdl.pert;
  Hdl.pert = '';
  save([pathdata,fileout,'.out'])
  Hdl.pert = hdlpert;
  fm_disp
  fm_disp(['System saved in "',Path.data,fileout,'.out"'])

 case 'closepert'

  fm_disp(['Perturbation file "',Path.pert,File.pert,'" closed.'],1)
  Path.pert = '';
  File.pert = '';
  Source.pert = '';
  cd(Path.psat)
  if Settings.hostver >= 6
      Hdl.pert = str2func('pert');
  else
      Hdl.pert = 'pert';
  end
  cd(Path.local)
  hdltext = findobj(Fig.main,'Tag','EditText10');
  set(hdltext,'String','','TooltipString','');

 case 'savesettings'

  [fid,msg] = fopen([Path.psat,'settings.m'],'wt');
  if fid == -1
    fm_disp(msg)
    return
  end
  fields = fieldnames(Settings);
  for i = 1:length(fields)
    if strcmp(fields{i},'color')
      continue
    end
    value = eval(['Settings.',fields{i}]);
    if isnumeric(value)
      cout = fprintf(fid,'Settings.%s = %s;\n',fields{i},num2str(value));
    else
      cout = fprintf(fid,'Settings.%s = ''%s'';\n',fields{i},value);
    end
  end
  fields = fieldnames(Theme);
  for i = 1:length(fields)
    if strcmp(fields{i},'hdl')
      continue
    end
    value = eval(['Theme.',fields{i}]);
    if isnumeric(value)
      cout = fprintf(fid,'Theme.%s = [%s];\n',fields{i},num2str(value));
    else
      cout = fprintf(fid,'Theme.%s = ''%s'';\n',fields{i},value);
    end
  end
  cout = fprintf(fid,'Theme.hdl = zeros(18,1);\n');
  fclose(fid);

 case 'savedata'

  filedata = [File.data,'  '];
  if strcmp(filedata([1:2]),'@ ')
    filedata = deblank(strrep(filedata,'@ ',''));
    if isempty(Source.data),
      fm_disp('Cannot restore the data file.'),
      return,
    end
    a = dir([Path.data,'*.m']);
    b = {a.name};
    older = strmatch([filedata,'.m'],b,'exact');
    if ~isempty(older)
      uiwait(fm_choice(['Overwrite Existing File "',filedata,'.m" ?']))
      if ~Settings.ok,
        return,
      end
    end
    try
      fid = fopen([Path.data,filedata,'.m'],'wt');
      if fid == -1,
        fm_disp(['Cannot write the data file. Check folder ' ...
                 'authorizations.'],2),
        return,
      end
    catch
      fm_disp(['Cannot write the data file.  Check folder ' ...
               'authorizations.'],2)
      return
    end
    rowc = length(Source.data(1,:));
    count = fprintf(fid,[repmat('%c',1,rowc),' \n'],Source.data');
    fclose(fid);
    fm_disp(['Data file stored in "',Path.data,filedata,'.m"'])
    File.data = filedata;
    hdltext = findobj(Fig.main,'Tag','EditText9');
    set(hdltext, ...
        'String',File.data, ...
        'TooltipString',[Path.data,File.data]);

  else
    fm_disp('The current data file is already saved.')
  end

 case 'close'

  stringa = get(findobj(Fig.main,'Tag','PushClose'),'String');
  if strcmpi(stringa(end-3:end),'stop')
    set(Fig.main,'UserData',0)
  else
    close(Fig.main)
  end

 case 'opensys'

  if clpsat.init & nargin > 1
    file = varargin{2};
    pathname = varargin{3};
  else
    if ~isempty(Path.data), cd(Path.data); end
    [file,pathname] = uigetfile('d*.out',['Select System Data ' ...
                        'File']);
  end

  fm_disp
  if pathname ~= 0

    path2 = Path;
    fig2 = Fig;
    hdl2 = Hdl;
    file2 = File;
    history2 = History;
    theme2 = Theme;
    load([pathname,file],'-mat')

    dfile = strrep(file,'.out','.m');
    pfile = '';
    if ~isempty(Source.pert)
      pfile = strrep(file,'.out','.m');
      pfile(1) = 'p';
    end

    fid = fopen([pathname,dfile],'wt+');
    if fid == -1,
      fm_disp(['Cannot write the data file. Check folder ' ...
               'authorizations.'],2),
    else
      rowc = length(Source.data(1,:));
      count = fprintf(fid,[repmat('%c',1,rowc),' \n'],Source.data');
      fclose(fid);
    end
    if ~isempty(pfile)
      fid = fopen([pathname,pfile],'wt+');
      if fid == -1,
        fm_disp(['Cannot write the disturbance file. Check folder ' ...
                 'authorizations.'],2),
      else
        rowc = length(Source.pert(1,:));
        count = fprintf(fid,[repmat('%c',1,rowc),' \n'],Source.pert');
        fclose(fid);
        cd(pathname)
        if Settings.hostver >= 6
            Hdl.pert = str2func(pfile(1:end-2));
        else
            Hdl.pert = pfile(1:end-2);
        end
        cd(Path.local)
      end
    end

    hdl_data = findobj(fig2.main,'Tag','EditText9');
    hdl_pert = findobj(fig2.main,'Tag','EditText10');
    Fig = fig2;
    hdlpert = Hdl.pert;
    Hdl = hdl2;
    Hdl.pert = hdlpert;
    History = history2;
    Theme = theme2;
    if ~isempty(File.pert),
      File.pert = ['@ ',pfile(1:end-2)];
      %File.pert = strrep(File.pert,'@ @ ','@ ');
    end
    File.data = ['@ ',dfile(1:end-2)];
    %File.data = strrep(File.data,'@ @ ','@ ');

    set(hdl_data, ...
        'String',File.data, ...
        'ForegroundColor',[0 0 0.592], ...
        'TooltipString',[Path.data,File.data]);
    set(hdl_pert, ...
        'String',File.pert, ...
        'ForegroundColor',[0 0 0.592], ...
        'TooltipString',[Path.pert,File.pert]);

    Path.psat = path2.psat;
    Path.build = path2.build;

⌨️ 快捷键说明

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