文章目录
在多个开发者协同开发模型时,为了避免不同开发者重复地配置模型参数,可以将已经预设好的参数作为函数保存,不同的开发者在进行实际开发时,就可以直接运行函数进行模型参数配置。
|-问题引入,为什么要保存模型的配置?
在simulink建模时,模型的参数配置会直接影响代码的生成,尤其是当开发者采用的是模型引用的方式进行建模与集成,不同的模型采用不同的配置时,会直接导致模型无法运行。
基于上述原因,需要将预设好的模型配置在每个开发者所建立的模型中做修改,但是如果每个开发者都要根据企业需求自行配置,这个工作耗时,下面有两种方法进行模型配置的批量保存与修改。
|-基于脚本的模型配置保存与修改
|-模型配置的保存
首先假设用户在 pre_set.slx
模型中预设完成了模型的配置,如何保存这个配置。
% 打开模型,用于获取模型句柄
open('pre_set');
% 获取模型配置集
currentModelSet = getActiveConfigSet('pre_set')
% 储存当前模型的配置为MyConfig.m
saveAs(currentModelSet,'Config_Template')
执行后会生成 Config_Template.m 的文件
|-Config_Template中包含了什么
打开生成的 Config_Template.m 文件
首先cs = Simulink.ConfigSet;
获取Simulink的配置集
然后cs.set_param(‘Attributes’, Value);
定义各种参数
function cs = Config_Template()
% MATLAB function for configuration set generated on 26-Feb-2019 16:01:47
% MATLAB version: 9.5.0.944444 (R2018b)
cs = Simulink.ConfigSet;
% Original configuration set version: 1.18.1
if cs.versionCompare('1.18.1') < 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
% Do not change the order of the following commands. There are dependencies between the parameters.
cs.set_param('Name', 'Configuration'); % Name
cs.set_param('Description', ''); % Description
% Original configuration set target is grt.tlc
cs.switchTarget('grt.tlc','');
cs.set_param('HardwareBoard', 'None'); % Hardware board
cs.set_param('Solver', 'ode45'); % Solver
% Solver
cs.set_param('StartTime', '0.0'); % Start time
cs.set_param('StopTime', '10.0'); % Stop time
cs.set_param('SolverType', 'Variable-step'); % Type
......
|-将保存的配置给到开发者的模型
- 复制 Config_Template.m文件,重命名为ActiveConfig.m
- 修改Config_Template.m文件,将
cs = Simulink.ConfigSet;
做如下替换:
open(modelName)
cs = getActiveConfigSet(modelName);
- 修改函数名为
function cs = ActiveConfig(modelName)
- 保存该文件
- 在command_window中调用
ActiveConfig(modelName)
这个函数即可(modelName为不同开发者所建立的模型名)。
|-基于TLC的模型配置的修改
上述方法进行模型配置的统一,较为便捷,且可以做进一步优化,即将ActiveConfig函数作为插件配到Simulink开发环境下。
这里又挖了一个坑,如何将一些基本功能的脚本编写成插件插入到Simulink开发环境中
另一种模型配置的修改方法是编写TLC文件和对应的Callback函数,这里不做介绍,之前写过一下:https://blog.csdn.net/qq_26915769/article/details/84841952