目录
一、前言
要想写mdl测试用例,就要了解如何使用M脚本批量执行case,每个case如何调用同一层级的输入输出接口,得到它们的属性;这里记录在B站学到的simulink知识,以备后续想用某个函数或者调用属性翻看。
二、Easy S模板
function newMdlTmpl(modelname)
%model:name
open_system(new_system(modelname));
%set default screen
set_param(gcs,'ScreenColor','green');
%set default solver
set_param(gcs,'Solver','ode4');
%set system target file
set_param(gcs,'SystemTargetFile','ert.tlc');
%save model
save_system(gcs);
%m_h=load_system('modelname');
%get(m_h) %获取属性 v = get(h,propertyName),p = plot(1:10);get(p)
%set(m_h,Name,Value)%设置属性
%close_system('modelname')%关闭模型
三、Easy连连看
mdl_name = 'Link_Delete';
mdl_fullname = [mdl_name,'.slx'];
%delete the generated last time
if exist(mdl_name)
try
delete(mdl_name);
close_system(mdl_name);
catch
close_system(mdl_name);
delete(mdl_name);
end
end
new_system(mdl_name);
save_system(mdl_name);
open_system(mdl_name);
%define some constant
block_lib_path='Simulink/Commonly Used Blocks/';
lib_block_name = {'Gain','Integrator','Data Type Conversion','Saturation','Delay','Discrete-Time Integrator'};
%block to be selected
block_type_num=length(lib_block_name);
block_num=5;%generate 5 pairs
en_num = 500;%enlarge block position offset
for ii=1:block_num
ind = randi(block_type_num,[1,1]);
%copy block into model file as cell format
src_str = strcat(block_lib_path,lib_block_name(ind));
dst_str = strcat(mdl_name,'/',lib_block_name(ind));
%get handle
block_handle =add_block(src_str{:},dst_str{:},'MakeNameUnique','on');
pos = get_param(block_handle,'position');
%another block
add_block(src_str{:},dst_str{:},'MakeNameUnique','on','position',pos+en_num*rand);
end
%set port callback for all blocks generated in the model
blocks_handle = find_system(gcs,'findall','on','type','block');
for ii=1:block_num*2
%get current block's properties
prop=get(blocks_handle(ii));
%set callback to each port(import only)
set(prop.PortHandles.Inport,'ConnectionCallback','delete_pair_blocks');
end
四、Easy封装和库
类似C/C++中函数封装一样,对于可重用的模块也可以封装成通用的库。
第一部分是图标
第二部分是控件:除了display外其他控件都有可设置的回调函数和value
后面两部分是初始化和文档管理。
一个简单的demo:
五、Easy History库
这里利用封装技术设计一个能够记录模型历史记录的子系统,在工程中还是很有用的!