说明:本文基于 MATLAB 2016a
配置集(Configuration Set)就是模型的参数配置集合,simulink 建模十分灵活强大,所以需要众多的参数设置,常用有几个方面(MathWorks 自称为 componets,即“组件”):
• Solver // 解算器
• Data Import/Export // 数据输入输出
• Optimization // 优化
• Diagnostics // 诊断
• Hardware Implementation // 硬件实现
• Model Referencing // 模型参考
• Simulation Target // 模拟目标
ps. 不同的 MathWorks 产品,配置集中会显示不同的默认组件
ps. 上述组件的中文翻译都是直译,一般使用时直呼英文名称,翻译的不准仅作参考
示例
任意模型界面,通过 Ctrl + H 可以打开 Model Explorer,如下图,包含三个模型,demo_model1~3,所有模型的 Configuration 处于激活状态
选中某个 Configuration,可以在 Contents 中看到内容(只显示 Default 内容,即上述常用组件),在最右 Dialog 中更改配置集名称、添加备注等
可以右键单击某个 Configuration,使其处于激活状态
一个模型可以有多个 Configuration,但只能有一个处于激活状态,通过激活不同的配置集,快速对模型参数进行配置
选中 Contents 中的某个组件,最右 Dialog 中显示其具体内容,和在模型中 Ctrl + E 显示的内容一致
导出配置集
可以在 Model Explorer 中的模型右击,Configuration → Export Active Configuration 导出配置集:
• 导出的配置集可以是 .m 文件或 .mat 文件
• 前者包含创建配置集的函数
• 后者包含配置集对象
• 如果要在模型中导入配置集,必须是配置集对象,即 .mat 文件
以上操作也可以通过 Matlab 代码实现,在 Command Window 中:
cs = getConfigSet('demo_model1','Configuration1'); // 将模型 demo_model1 中的 Configuration1 保存成 ConfigSet 对象,名为 cs
save('Config_model1_1.mat','cs'); // 这里也可以保存成 .m 文件
配置集 .m 文件
function cs = Config_model1()
%---------------------------------------------------------------------------
% MATLAB function for configuration set generated on 15-Jul-2018 17:24:58
% MATLAB version: 9.0.0.341360 (R2016a)
%---------------------------------------------------------------------------
cs = Simulink.ConfigSet;
% Original configuration set version: 1.16.2
if cs.versionCompare('1.16.2') < 0
error('Simulink:MFileVersionViolation', 'The version of the target configuration set is older than the original configuration set.');
end
% Original environment character encoding: GBK
if ~strcmpi(get_param(0, 'CharacterEncoding'), 'GBK')
warning('Simulink:EncodingUnMatched', 'The target character encoding (%s) is different from the original (%s).', get_param(0, 'CharacterEncoding'), 'GBK');
end
% Original configuration set target is ert.tlc
cs.switchTarget('ert.tlc','');
% Do not change the order of the following commands. There are dependencies between the parameters.
cs.set_param('Name', 'Configuration1'); % Name
cs.set_param('Description', ''); % Description
% Solver
cs.set_param('StartTime', '0.0'); % Start time
cs.set_param('StopTime', '11'); % Stop time
cs.set_param('SolverType', 'Fixed-step'); % Type
cs.set_param('EnableConcurrentExecution', 'off'); % Show concurrent execution options
cs.set_param('SampleTimeConstraint', 'Unconstrained'); % Periodic sample time constraint
cs.set_param('Solver', 'FixedStepDiscrete'); % Solver
cs.set_param('FixedStep', '0.01'); % Fixed-step size (fundamental sample time)
cs.set_param('SolverMode', 'Auto'); % Tasking mode for periodic sample times
cs.set_param('AutoInsertRateTranBlk', 'off'); % Automatically handle rate transition for data transfer
cs.set_param('PositivePriorityOrder', 'off'); % Higher priority value indicates higher task priority
% Data Import/Export
cs.set_param('LoadExternalInput', 'off'); % Load external input
cs.set_param('LoadInitialState', 'off'); % Load initial state
上述为部分配置集的 .m 代码,可以看出,主要是通过代码对参数进行设置,好处:
1. 众多参数中,常用配置不多,其他都保持默认,默认的可以删除,只保留需变更的配置项即可
2. 直接将其他模型的 .m 文件价拷贝过来即可