Simulink数据字典中的配置影响了模型生成的代码。本文举例说明如何通过Matlab脚本创建或修改Simulink数据字典。
1 数据字典的概念
数据字典中存储了Simulink模型中的数据信息和模型配置信息。在生成代码的时候,模型和数据字典一般是配套的。
数据字典通常分为两个分区,Design Data和Configurations,分别存储了数据信息和配置信息。
对于模型中的输入输出接口、观测量和标定量一般会在Design Data中定义好。模型的相关配置和生成代码的配置信息一般在Configurations中定义好,而不采用模型自身的配置。
2 手动创建/修改数据字典
1.首先在matlab命令行输入’daexplr’,打开Model Explorer
2.点击File–New–Data Dictionary,在弹出的窗口中新建数据字典
3.在左侧的视图栏会出现刚刚建立的数据字典,选中Design Data分区
4.在上方的工具栏可以新建参数、信号等,并配置属性
3 通过脚本创建/修改数据字典
假设有一模型demo.slx,
通过脚本根据Outport端口名称建立数据字典,Signal属性如下:
Name | Signal1 |
---|---|
Data Type | single |
Initial Value | 0 |
Storage Class | ExportToFile |
Header File | Global.h |
Destination File | Global.c |
Owner | Jackson |
需要通过Simulink.data.dictionary类的方法完成数据字典的建立和修改,脚本如下:
function CreateSldd()
%创建Signal1的Simulink.Signal对象
Signal1Obj = Simulink.Signal;
Signal1Obj.DataType = 'single'; %类型
Signal1Obj.InitialValue = '0'; %初始值
Signal1Obj.StorageClass = 'ExportToFile (Custom)'; %存储方式
Signal1Obj.CoderInfo.CustomAttributes.HeaderFile = 'Global.h'; %头文件
Signal1Obj.CoderInfo.CustomAttributes.DefinitionFile = 'Global.c'; %源文件
Signal1Obj.CoderInfo.CustomAttributes.Owner = 'Jackson'; %Owner
%创建数据字典并加入Signal1对象
dictionaryObj = Simulink.data.dictionary.create('demo.sldd');
sectionObj = getSection(dictionaryObj,'Design Data');
addEntry(sectionObj,'Signal1',Signal1Obj);
end
运行脚本,会在Matlab当前路径创建demo.sldd的数据字典文件,里面包含了名为“Signal1”的信号对象,属性如图所示
如果已有数据字典文件,则脚本改用Simulink.data.dictionary.open()即可添加数据字典内容。