[Simulink] 模型配置的保存与修改


在多个开发者协同开发模型时,为了避免不同开发者重复地配置模型参数,可以将已经预设好的参数作为函数保存,不同的开发者在进行实际开发时,就可以直接运行函数进行模型参数配置。

|-问题引入,为什么要保存模型的配置?

在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

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值