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

📄 fm_inout.m

📁 用于电力系统的一个很好的分析软件
💻 M
字号:
function fm_inout% FM_INOUT changes inputs & outputs of the current%          selected Simulink block%%see also FM_LIB, FM_SIM, FM_SIMDATA, FM_SIMSETT, FM_BLOCK%%Author:    Federico Milano%Date:      11-Nov-2002%Update:    13-May-2003%Version:   1.0.1%%E-mail:    Federico.Milano@uclm.es%Web-site:  http://www.uclm.es/area/gsee/Web/Federico%% Copyright (C) 2002-2008 Federico Milanoglobal Settingssys    = get_param(0,'CurrentSystem');block  = get_param(sys,'CurrentBlock');gg     = get_param([sys,'/',block],'Selected');mask   = get_param([sys,'/',block],'MaskType');object = [sys,'/',block];Values = get_param(object,'MaskValues');set_param(object,'LinkStatus','none')a = get_param(object,'MaskEnables');b = get_param(object,'MaskPrompts');buspmc = 0;switch mask case 'Bus'  if length(Values) == 8    inputs  = floor(str2num(Values{7}));    outputs = floor(str2num(Values{8}));    inputs_pmc = floor(str2num(Values{2}));    outputs_pmc = floor(str2num(Values{1}));    buspmc = 1;  else    inputs  = floor(str2num(Values{1}));    outputs = floor(str2num(Values{2}));  end case 'Wind'  inputs  = 0;  outputs = floor(str2num(Values{1})); case 'Cac'  inputs  = 1;  outputs = floor(str2num(Values{1})); case 'Exc'  inputs  = floor(str2num(Values{12}));  outputs = 1; case 'Syn'  inputs  = floor(str2num(Values{13}));  outputs = 1; case 'Mass'  inputs  = floor(str2num(Values{5}));  outputs = 1; case 'Supply'  inputs  = floor(str2num(Values{11}));  outputs = 1; case 'Demand'  inputs = 1;  outputs  = floor(str2num(Values{10})); case {'Areas','Regions'}  inputs  = 0;  outputs = floor(str2num(Values{1}));  buspmc = 1; otherwise  fm_choice('Undefined block!',2)  returnendif inputs > Settings.maxsimin | outputs > Settings.maxsimout  if inputs  > Settings.maxsimin    fm_choice(['Too many inputs. Maximum number is ', ...               num2str(Settings.maxsimin),'.'],2)  end  if outputs > Settings.maxsimout    fm_choice(['Too many outputs. Maximum number is ', ...               num2str(Settings.maxsimout),'.'],2)  end  returnendif ~inputs & ~outputs & ~buspmc  fm_choice('Inputs & Outputs cannot be both zero.',2)  returnendBlockType = get_param(object,'BlockType');if strcmp(BlockType,'PMComponent')  newl = [];  for i = 1:inputs    newl = [newl,'|__newl',int2str(i-1)];  end  if inputs    set_param(object,'LConnTagsString',newl(2:end))  else    set_param(object,'LConnTagsString','')  end  newr = [];  for i = 1:outputs    newr = [newr,'|__newr',int2str(i-1)];  end  if outputs     set_param(object,'RConnTagsString',newr(2:end))  else    set_param(object,'RConnTagsString','')  end  returnendori  = get_param(object,'orientation');posi = get_param(object,'position');if strcmp(ori,'left') | strcmp(ori,'right')  upperleft=posi(2);  s=posi(4)-posi(2);  isop=get_param(object,'InputPorts');  branches_in=isop(:,2)-upperleft;  isop=get_param(object,'OutputPorts');  branches_out=isop(:,2)-upperleft;else  upperleft=posi(3);  s=posi(3)-posi(1);  isop=get_param(object,'InputPorts');  branches_in=isop(:,1)-upperleft;  isop=get_param(object,'OutputPorts');  branches_out=isop(:,1)-upperleft;endif isempty(branches_out) & strcmp(mask,'Syn')  outputs = 0;end% Add or remove input and output portsin=size(branches_in,1);ou=size(branches_out,1);if inputs > in,  for i=in+1:inputs    Y1 = (i-1)*50+25;    add_block('built-in/Inport',[object,'/in_',num2str(i)])    set_param([object,'/in_',num2str(i)],...              'position',[25,Y1,45,Y1+20],'Port',num2str(i))    add_block('built-in/Terminator',[object,'/t',num2str(i)])    set_param([object,'/t',num2str(i)],...              'position',[80,Y1-5,105,Y1+25]);    add_line(object,['in_',num2str(i),'/1'],['t',num2str(i),'/1'])  endendif outputs > ou  for i=ou+1:outputs    Y1=(i-1)*50+25;    add_block('built-in/Outport',[object,'/out_',num2str(i)])    set_param([object,'/out_',num2str(i)],...              'position',[185,Y1,205,Y1+20],'Port',num2str(i))    add_block('built-in/constant',[object,'/g',num2str(i)])    set_param([object,'/g',num2str(i)],...              'position',[130,Y1-5,155,Y1+25]);    add_line(object,['g',num2str(i),'/1'],['out_',num2str(i),'/1']);  endendif inputs < in  for i=in:-1:inputs+1    delete_line(object,['in_',num2str(i),'/1'],['t',num2str(i),'/1']);    delete_block([object,'/in_',num2str(i)]);    delete_block([object,'/t',num2str(i)]);  endendif outputs < ou  for i=ou:-1:outputs+1    delete_line(object,['g',num2str(i),'/1'],['out_',num2str(i),'/1']);    delete_block([object,'/out_',num2str(i)]);    delete_block([object,'/g',num2str(i)]);  endendif buspmc   ports = get_param([object,'/pmc'],'Ports');   ports_in = ports(6);   ports_out = ports(7);   for i = ports_in-1:-1:inputs_pmc     delete_line(object,['pmc_in_',num2str(i),'/RConn1'],['pmc/LConn',int2str(i+1)])     delete_block([object,'/pmc_in_',num2str(i)])   end   for i = ports_out-1:-1:outputs_pmc     delete_line(object,['pmc/RConn',int2str(i+1)],['pmc_out_',int2str(i),'/RConn1'])     delete_block([object,'/pmc_out_',num2str(i)])   end   newl = [];   for i = 1:inputs_pmc     newl = [newl,'|__newl',int2str(i-1)];   end   if inputs_pmc     set_param([object,'/pmc'],'LConnTagsString',newl(2:end))   else     set_param([object,'/pmc'],'LConnTagsString','')   end   newr = [];   for i = 1:outputs_pmc     newr = [newr,'|__newr',int2str(i-1)];   end   if outputs_pmc     set_param([object,'/pmc'],'RConnTagsString',newr(2:end))   else     set_param([object,'/pmc'],'RConnTagsString','')   end   for i = ports_in:inputs_pmc-1     add_block('built-in/PMIOPort',[object,'/pmc_in_',num2str(i)])     set_param([object,'/pmc_in_',num2str(i)], ...               'Side','Right', ...               'Position',[60, 86-15*i, 90, 104-15*i])     add_line(object,['pmc_in_',num2str(i),'/RConn1'],['pmc/LConn',int2str(i+1)])   end   for i = ports_out:outputs_pmc-1     add_block('built-in/PMIOPort',[object,'/pmc_out_',num2str(i)])     set_param([object,'/pmc_out_',num2str(i)], ...               'Side','Left', ...               'Orientation','left', ...               'Position',[260, 86-15*i, 290, 104-15*i])     add_line(object,['pmc/RConn',int2str(i+1)],['pmc_out_',int2str(i),'/RConn1'])   endend

⌨️ 快捷键说明

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