在 MScript第3弹——从EXCEL自动生成Signal和Parameter到Workspace中 一文中,我们将所有设计数据都定义在基础工作区。
将设计数据存储位置设置在基础工作区,可以方便对参数数值进行修改,特别适合在开发初期仿真或快速原型阶段,临时存储设计数据。
而开发过程中需要长久性的存储设计数据时一般会使用数据字典的形式来进行存储,使用数据字典代替基础工作区来分区数据、跟踪更改、控制访问和共享数据。
当然,如果从模型最终的产物代码来说,不管是用基础工作区还是用数据字典,生成的代码都是一样的。
什么是数据字典?
在Simulink中,数据字典用于存储定义参数和信号的设计数据,也包括模型设置相关的数据。
以MATLAB2016b中的数据字典为例,数据字典使用sldd文件格式,可在Model Explorer中打开,数据字典中包括三个部分:
Design Data:包含定义参数、信号以及决定模型行为的设计数据的变量和数据类型。在字典中创建或导入的设计数据存储在此分区中。
Configurations:包含决定如何在仿真过程中配置模型的配置集,如采样时间和仿真开始时间。
Other Data:包含与模型有关但在仿真过程中模型不使用的信息,例如描述模型所表示的物理设备和过程的数据。
在较新版本的MATLAB中另外还有Embedded Coder Dictionary:包含用于 Embedded Coder 的代码生成定义。
使用EXCEL管理数据
我们在对模型设计数据的管理时,可以直接使用数据字典进行管理,包括编辑、添加、删除参数或信号等操作。而实际项目共享设计数据时,对方可能未使用或者安装有MATLAB,此时使用EXCEL来进行设计数据管理,并共享是一种比较方便可行的方式。
例如我们可以设计一个设计数据EXCEL模板,模板中尽可能多的涵盖参数或信号的相关信息
信号数据:
参数数据:
EXCEL导入数据字典
实现思路
读取EXCEL生成m文件
新建数据字典sldd文件
数据字典导入m文件
Step1.读取EXCEL生成m文件
这里偷个懒,代码可参见MScript第3弹——从EXCEL自动生成Signal和Parameter到Workspace中一文。可以根据实际需要,修改或添加代码,对EXCEL中的信息是否完全提取或者选择部分进行提取。
生成m文件格式大致如下,主要包含有参数、信号的定义。
Step2.新建数据字典sldd文件
见Step3代码
Step3.数据字典导入m文件
主要涉及以下几个功能函数:
Simulink.data.dictionary.create 新建数据字典
Simulink.data.dictionary.open 打开数据字典
getSection 获取数据字典分区,设计数据需要导入到Design Data分区
importFromFile 从文件导入数据
saveChanges 保存数据字典修改
代码在PC端查看更方便哦~
clear;clc;% save data dictionary file name[DataDictName,~,~] = uiputfile('*.sldd','Save as a data dictionary file');if DataDictName ~= 0 exist_flag = exist(DataDictName,'file');if exist_flag == 0 % creat new sldd file in current working folder. NewDictObj = Simulink.data.dictionary.create(DataDictName);else % open existing sldd file . NewDictObj= Simulink.data.dictionary.open(DataDictName); end % import matlab file to data dictionary [FileName,~,~] = uigetfile('*.m','Import from Matlab file');if FileName ~= 0 DataSectObj = getSection(NewDictObj,'Design Data'); % import matlab file ImportedVars = importFromFile(DataSectObj,FileName,'existingVarsAction','overwrite'); % save changessaveChanges(NewDictObj); % msgboxmsgbox('New sldd file has been created.'); endend
实现效果
运行代码,弹窗设置保存sldd文件名
导入成功
可用ModelExplorer打开生成的sldd文件