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

📄 fm_sim.m

📁 电力系统的psat
💻 M
📖 第 1 页 / 共 2 页
字号:
              end             case 'Goto'              Tag = get_param(dstblock,'GotoTag');              fromblock = find_system(blocks, ...                'BlockType','From', ...                'GotoTag',Tag);              handle = get_param(fromblock(1),'PortHandles');              lineout = find_system(lines,'SrcPortHandle',handle.Outport);              dstblock = get_param(lineout,'DstBlockHandle');             case 'Breaker'              if strcmp(masks{i},'Line'),                handle = get_param(dstblock,'PortHandles');                lineout = find_system(lines,'SrcPortHandle',handle.Outport);                dstblock = get_param(lineout,'DstBlockHandle');              else,                fm_disp([msg,' cannot be connected to a Breaker block.'],2)                break              end             case 'Line'              if strcmp(masks{i},'Breaker'),                busno = get_param(dstblock,'UserData');                rowno = get_param(blocks(i),'UserData');                eval([masks{i},'(',rowno,',1) = ',busno,';']);                break,              else                fm_disp([msg,' cannot be connected to a Line block.'],2)                break              end             case 'Link'              handle = get_param(dstblock,'PortHandles');              lineout = find_system(lines,'SrcPortHandle',handle.Outport);              dstblock = get_param(lineout,'DstBlockHandle');             otherwise              fm_disp([msg, ' cannot be connected to a ',mask_db,' block.'],2)              break            end          end        end      end      % find source block      if ~isempty(line_in) & ~strcmp(masks{i},'Syn') ...          & ~strcmp(masks{i},'Mass') & ~strcmp(masks{i},'Supply')        for j = 1:length(line_in)          linein = line_in(j);          srcblock = get_param(linein,'SrcBlockHandle');          while 1            %srcblock = get_param(linein,'SrcBlockHandle');            if srcblock == -1,              fm_disp([msg,' has an undefined connection.'],2),              break,            end            mask_sb = get_param(srcblock,'MaskType');            if isempty(mask_sb), mask_sb = get_param(srcblock,'BlockType'); end            if iscell(mask_sb), mask_sb = mask_sb{1}; end            switch mask_sb             case 'Bus'              busno = get_param(srcblock,'UserData');              rowno = get_param(blocks(i),'UserData');              switch masks{i}               case 'Breaker', d = '2';               case 'Ltc',                Porta = get_param(linein,'DstPortHandle');                Blocco = get_param(blocks(i),'PortHandles');                if find(Blocco.Inport==Porta), d = '1'; end                if ~isempty(Blocco.Enable)                  if find(Blocco.Enable==Porta), d = '15'; end                end                if isfield(Blocco,'LConn')                  if find(Blocco.LConn==Porta), d = '1'; end                end               case {'SAE1','SAE2','SAE3'},                Porta = get_param(linein,'DstPortHandle');                Blocco = get_param(blocks(i),'PortHandles');                Numero_Porta = find(Blocco.Inport==Porta);                if isempty(Numero_Porta)                  Numero_Porta = find(Blocco.LConn==Porta);                end                if Numero_Porta == 1, d = '2'; else, d = '1'; end               otherwise,                d = '1';              end              eval([masks{i},'(',rowno,',',d,') = ',busno,';']);              break             case 'Inport'              porta = str2num(get_param(srcblock,'Port'));              subsys = get_param(srcblock,'Parent');              handle = get_param(subsys,'PortHandles');              linein = find_system(lines,'DstPortHandle',handle.Inport(porta));              srcblock = get_param(linein,'SrcBlockHandle');             case 'PMIOPort'              port_type = get_param(srcblock,'Side');              port_numb = str2num(get_param(srcblock,'Port'));              subsys = get_param(srcblock,'Parent');              pmcport = find_system(blocks, ...              'SearchDepth',0, ...              'Parent',getfullname(subsys), ...              'BlockType','PMIOPort');              handle = get_param(subsys,'PortHandles');              if strcmp(port_type,'Left')                inport = find_system(pmcport,'Side','Left');                port_numb = find(inport == srcblock);                linein = find_system(lines,'DstPortHandle',handle.LConn(port_numb));              else                outport = find_system(pmcport,'Side','Right');                port_numb = find(outport == srcblock);                linein = find_system(lines,'DstPortHandle',handle.RConn(port_numb));              end              srcblock = get_param(linein,'SrcBlockHandle');             case 'SubSystem'              porta = get_param(linein,'SrcPortHandle');              handle = get_param(srcblock,'PortHandles');              portno = find(handle.Outport == porta);              if isempty(portno)                portno = find(handle.RConn == porta);                if isempty(portno)                  portno = find(handle.RConn == get_param(linein,'DstPortHandle'));                end                pmcport = find_system(blocks, ...                'SearchDepth',0, ...                'Parent',getfullname(srcblock), ...                'BlockType','PMIOPort');                outport = find_system(pmcport,'Side','Right');                handle = get_param(outport(portno),'PortConnectivity');                linein = find_system(lines,'DstPortHandle',handle.DstPort);                srcblock = handle.DstBlock;              else                outport = find_system(blocks, ...                'SearchDepth',0, ...                'Parent',getfullname(srcblock), ...                'BlockType','Outport', ...                'Port',int2str(portno));                handle = get_param(outport,'PortHandles');                linein = find_system(lines,'DstPortHandle',handle.Inport);                srcblock = get_param(linein,'SrcBlockHandle');              end             case 'From'              Tag = get_param(srcblock,'GotoTag');              gotoblock = find_system(blocks,'BlockType','Goto','GotoTag',Tag);              handle = get_param(gotoblock(1),'PortHandles');              linein = find_system(lines,'DstPortHandle',handle.Inport);              srcblock = get_param(linein,'SrcBlockHandle');             case 'Breaker'              if strcmp(masks{i},'Line'),                handle = get_param(srcblock,'PortHandles');                linein = find_system(lines,'DstPortHandle',handle.Inport);                srcblock = get_param(linein,'SrcBlockHandle');              else,                fm_disp([msg,' cannot be connected to a Breaker block.'],2)                break              end             case 'Wind'              if strcmp(masks{i},'Cswt') | strcmp(masks{i},'Dfig') ...                    | strcmp(masks{i},'Ddsg'),                busno = get_param(srcblock,'UserData');                rowno = get_param(blocks(i),'UserData');                eval([masks{i},'(',rowno,',2) = ',busno,';']);                break              else                fm_disp([msg,' cannot be connected to a Wind block.'],2)                break              end             case 'Line'              if strcmp(masks{i},'Breaker'),                busno = get_param(srcblock,'UserData');                rowno = get_param(blocks(i),'UserData');                eval([masks{i},'(',rowno,',1) = ',busno,';']);                break              else                fm_disp([msg,' cannot be connected to a Line block.'],2)                break              end            case 'Link'              handle = get_param(srcblock,'PortHandles');              linein = find_system(lines,'DstPortHandle',handle.Inport(1));              srcblock = get_param(linein,'SrcBlockHandle');            otherwise              fm_disp([msg,' cannot be connected to a ',mask_sb,' block.'],2)              break            end          end        end      end    end  end  fm_bar([(nblock+i-1)*tipi3,(nblock+i)*tipi3])end% adjusting "Line" data dimensionsif ~isempty(Line) & length(Line(1,:)) == 5  Line = [Line, zeros(length(Line(:,1)),4)];elseif ~isempty(Line) & length(Line(1,:)) == 6  Line = [Line, zeros(length(Line(:,1)),3)];endfm_disp('   * * *')% writing data fileidx1 = strmatch('Definition of component data ...',History.text);idx2 = strmatch('Definition of system connections ...',History.text);idx3 = strmatch('Error:',History.text);if isempty(idx3), idx3 = 0; endif idx3(end) > idx1(end)  if idx3(end) > idx2(end),    message = 'Simulink model is not well-formed (check links).';  end  if find(idx3 < idx2(end) & idx3 > idx1(end)),    message = ['Component data are not well-formed (check ' ...        'masks).'];  endelse  File.data = strrep(File.data,'(mdl)','_mdl');  [fid, message] = fopen([Path.data,File.data,'.m'], 'wt');endif ~isempty(message),  if strcmp(message, ...      ['Sorry. No help in figuring out the problem ...']),    fm_disp(['Most likely the folder "',Path.data, ...        '" is read only. Try to change the permission.'])  else    fm_disp(['Failed conversion from Simulink model: ',message],2)  end  if Fig.main    set(Fig.main,'Pointer','arrow');    delete(Hdl.bar); Hdl.bar = 0;    set(Hdl.frame,'Visible','on');    set(Hdl.text,'Visible','on');  end  check_model = 0;  returnelse  fm_disp('Writing Data File',1)endfm_bar([(2*nblock)*tipi3,(2*nblock+1)*tipi3])for j = 1:length(type_con)  typecon = type_con{j,1};  if eval(['~isempty(',typecon,')'])    count = fprintf(fid, [typecon, '.con = [ ... \n']);    eval(['quanti = length(',typecon,'(:,1));']);    for i = 1:quanti-1      eval(['quali = ',typecon,'(i,:);']);      qualis = strrep(num2str(quali),'      ',' ');      count = fprintf(fid, [qualis, ';  \n']);    end    k = quanti;    eval(['quali = ',typecon,'(k,:);']);    qualis = strrep(num2str(quali),'      ',' ');    count = fprintf(fid, [qualis, ' ];\n\n']);  end  fm_bar([(2*nblock+j-1)*tipi3,(2*nblock+j)*tipi3])endcount = fprintf(fid, 'Varname.bus = {... \n');for i = 1:Bus_n-1  %for j = 1:length(busname{i,1})  %  double(busname{i,1}(j))  %end  namebus = strrep(busname{i,1},char(10),' ');  count = fprintf(fid, ['''',namebus,'''; ']);  if rem(i,5) == 0; count = fprintf(fid,'\n'); endendif iscell(busname)  namebus = strrep(busname{length(busname),1},char(10),' ');  count = fprintf(fid, ['''',namebus,'''};\n']);else  namebus = strrep(busname,char(10),' ');  count = fprintf(fid, ['''',namebus,'''};\n']);end% closing data filecount = fclose(fid);exist(File.data);% closing Simulink modelif ~donotclose  if fixmodel    save_system(cur_sys);  end  close_system(cur_sys);endfm_disp(['Construction of Data File "', ...    [Path.data,File.data,'.m'],'" completed.'],1)% close status barfm_bar close% last operationscd(Path.local);if Settings.beep, beep, endFile.data = strrep(File.data,'_mdl','(mdl)');%------------------------------------------------------------------% recoursive search for block connections (destination)%------------------------------------------------------------------function [rowno, busno] = connectd(block,lines,blocks,maskb,maskc)msg = ['Error: ',maskb,' block ("', ...    get_param(block,'Name'), ...    '") is not connected to any block ',maskc,'.'];line_out = find_system(lines,'SrcBlockHandle',block);if isempty(line_out)  fm_disp(msg,2)  rowno = '-1';  busno = '-1';  returnendwhile 1  dstblock = get_param(line_out,'DstBlockHandle');  if dstblock == -1    fm_disp(msg,2)    rowno = '-1';    busno = '-1';    return  end  mask_db = get_param(dstblock,'MaskType');  if isempty(mask_db),    mask_db = get_param(dstblock,'BlockType');  end  switch mask_db  case {maskc}    busno = get_param(dstblock,'UserData');    rowno = get_param(block,'UserData');    %eval([maskb,'(',rowno,',1) = ',busno,';']);    break  case 'Outport'    porta = str2num(get_param(dstblock,'Port'));    subsys = get_param(dstblock,'Parent');    handle = get_param(subsys,'PortHandles');    line_out = find_system(lines,'SrcPortHandle', ...      handle.Outport(porta));  case 'Goto'    Tag = get_param(dstblock,'GotoTag');    fromblock = find_system(blocks, ...      'BlockType','From', ...      'GotoTag', Tag);    handle = get_param(fromblock(1),'PortHandles');    line_out = find_system(lines, ...      'SrcPortHandle',handle.Outport);  case 'SubSystem'    porta = get_param(line_out,'DstPortHandle');    handle = get_param(dstblock,'PortHandles');    portno = find(handle.Inport == porta);    inport = find_system(blocks, ...      'SearchDepth',0, ...      'Parent',getfullname(dstblock), ...      'BlockType','Inport', ...      'Port', int2str(portno));    handle = get_param(inport,'PortHandles');    line_out = find_system(lines, ...      'SrcPortHandle',handle.Outport);  case 'Link'    handle = get_param(dstblock,'PortHandles');    line_out = find_system(lines, ...      'SrcPortHandle',handle.Outport);  otherwise    fm_disp(msg,2)    rowno = '-1';    busno = '-1';    return  endend%------------------------------------------------------------------% recoursive search for block connections (source)%------------------------------------------------------------------function [rowno, busno] = connects(block,lines,blocks,maskb,maskc)msg = ['Error: ',maskb,' block ("', ...    get_param(block,'Name'),'") is not connected to any block ',maskc,'.'];line_in = find_system(lines,'DstBlockHandle',block);if isempty(line_in)  fm_disp(msg,2)  rowno = '-1';  busno = '-1';  returnendwhile 1  srcblock = get_param(line_in,'SrcBlockHandle');  if srcblock == -1    fm_disp(msg,2)    rowno = '-1';    busno = '-1';    return  end  mask_sb = get_param(srcblock,'MaskType');  if isempty(mask_sb),    mask_sb = get_param(srcblock,'BlockType');  end  switch mask_sb  case {maskc}    busno = get_param(srcblock,'UserData');    rowno = get_param(block,'UserData');    break  case 'Inport'    porta = str2num(get_param(srcblock,'Port'));    subsys = get_param(srcblock,'Parent');    handle = get_param(subsys,'PortHandles');    line_in = find_system(lines,'DstPortHandle', ...      handle.Inport(porta));  case 'SubSystem'    porta = get_param(linein,'SrcPortHandle');    handle = get_param(srcblock,'PortHandles');    portno = find(handle.Outport == porta);    outport = find_system(blocks, ...      'SearchDepth',0, ...      'Parent',getfullname(srcblock), ...      'BlockType','Outport', ...      'Port', int2str(portno));    handle = get_param(outport,'PortHandles');    line_in = find_system(lines, ...      'DstPortHandle',handle.Inport);  case 'From'    Tag = get_param(srcblock,'GotoTag');    gotoblock = find_system(blocks, ...      'BlockType','Goto', ...      'GotoTag', Tag);    handle = get_param(gotoblock(1),'PortHandles');    line_in = find_system(lines, ...      'DstPortHandle',handle.Inport);  otherwise    fm_disp(msg,2)    rowno = '-1';    busno = '-1';    return  endend%----------------------------------------------------------------------------------function dispno(num,msg)%----------------------------------------------------------------------------------if num, fm_disp([msg,': #',num2str(num),'#']), end

⌨️ 快捷键说明

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