Change Block Value
最近做simulation发现,mdl_advisor竟然不检查enable port 和 action port的设置。
遂对比一下codegen,发现codegen也只对比出了action port的value区别。
Interesting. Happy 100th anniversary.
Common Command Conclusion
find_system
查找simulink系统模型/模块/连线及注释;save_system
保存一个Simulink模型;add_block
在系统模型中加入指定模块delete_block
从系统模型中删除指定模块replace_block
替代系统模型中的指定模块close_system, bdclose
关闭一个simulink系统模型get_param
获取系统模型中的参数set_param
设置系统模型中的参数gcb
获得当前模块的路径名gcs
获得当前系统模型的路径名gcbh
获得当前模块的操作句柄bdroot
获得最上层系统模型的名称getSimulinkBlockHandle
从模块路径中获得模块句柄
Common Command Usage
// Check EnablePort 'StatesWhenEnabling' value
disp_all_val = 1;
blk = split(gcs, '/');
blk = blk{1};
%% Enable Block check.
bl = find_system(blk,'BlockType','EnablePort');
for i = 1:length(bl)
if ~strcmp(get_param(bl{i},'StatesWhenEnabling'), 'held')
disp([get_param(bl{i},'StatesWhenEnabling') ' ' bl{i}]);
set_param(bl{i},'StatesWhenEnabling','held')
disp(['changed to: ' get_param(bl{i},'StatesWhenEnabling')]);
elseif disp_all_val
disp([get_param(bl{i},'StatesWhenEnabling') ' ' bl{i}]);
end
end
save_system(blk);
// GPD config check
disp_all_val = 1;
%% find model references
topmodel = split(gcs,'/');
topmodel = topmodel(1);
refs = find_system(topmodel, 'BlockType', 'ModelReference');
%% Since the coder loves i so much, there is no j or k.
for ii = 1:length(refs)
open_system(refs{ii})
sys_name = split(refs{ii},'/');
sys_name = sys_name(end);
blks = find_system(sys_name, 'BlockType', 'SubSystem');
for i = 1:length(blks)
hd = getSimulinkBlockHandle(blks(i));
atts = get(hd);
if isfield(atts,'CGPD_Object') && isfield(atts,'pd_sim_dsn')
ori = get_param(blks{i}, 'CGPD_Object');
an = ['mt_' lower(ori(8:end)) 'status'];
if ~strcmp(get_param(blks{i},'pd_sim_dsn'), an)
disp([get_param(blks{i}, 'CGPD_Object') ' ' get_param(blks{i}, 'pd_sim_dsn') ' ' blks{i}]);
set_param(blks{i}, 'pd_sim_dsn', an);
disp(['changed to: ' get_param(blks{i}, 'pd_sim_dsn')])
elseif disp_all_val
disp([get_param(blks{i}, 'CGPD_Object') ' ' get_param(blks{i}, 'pd_sim_dsn') ' ' blks{i}]);
end
end
end
save_system(sys_name)
close_system(sys_name)
end
我是补充( ̄▽ ̄*)
get(gcbh)
, show current block details
我是吐槽(😭)
为毛不支持matlab啊啊啊啊啊。