[simulink] --- 数据字典(上)

简介: [simulink] --- 数据字典

1 simulink数据字典的概念

简单来说,数据字典的作用就是把一个模型用到的所有数据对象都统一放到一个地方管理起来。Simulink中,数据对象包括信号对象、参数对象、枚举量、常量等。也就是说,数据字典是很多个数据对象的集合。

2 数据对象的简单概念

举个最简单的数据对象的例子,新建一个Simulink模型,其中有3个Gain模块,他们的放大参数相同,都是2。

如果要修改的话,就必须每个模块都打开来,把其中的2改成3,会很麻烦。为了解决修改很麻烦的问题,可以在Matlab工作空间建立一个常量Gain_Const=2,再把Gain模块中的放大参数改成Gain_Const常量,如下图所示。需要修改的时候直接把值改成3就行了。这里的Gain_Const就是一个常量的数据对象

3 数据对象的管理方式

上一节例子中Simulink模型在仿真的时候可以关联到Matlab工作空间中的Gain_Const常量。但这么做有一个问题,那就是下次重启Matlab的时候,工作空间里的Gain_Const常量就没了,要重新添加进去,才能仿真Simulinnk模型。

因此,要把这些个数据对象保存到本地,然后仿真的时候要加载进工作空间才行。至于怎么把数据对象本地化,博主见过有3种管理方法。

3.1 mat文件或者m文件

右键选中Matlab工作区中的所有数据对象(上面的例子里只有一个),将它们另存到本地的mat文件或m文件中。路径最好在Simulink文件的相同路径下。

在每次打开demo.slx模型前,都把这个demo.mat文件加载到Matlab工作空间中。

博主认为这么做会有些弊端。首先,每次加载一下文件会很麻烦,不过这还是可以忍受的。比较关键的是,查找和修改数据对象不方便。在企业级项目中,模型往往都很大,里面包含的数据对象非常多,工作区会有许多数据对象,非常不好找。

因为这些弊端,所以很多项目都不用这种原始的方式管理数据字典。

3.2 Excel表格&m脚本

这种方式是把所有的数据对象都写进一个表格中,包括数据对象的类型(信号对象、枚举量、常量等)、参数(包括维度、初始值、StorageClass等)和数值都按照一定的规范列在表格中。然后通过写一个Matlab脚本,把表格中的数据对象定义写到工作空间中。

这个方法本质还是工作空间中的数据对象,但是因为引入了表格,使得数据对象的搜索和查找变得更容易了。不过依然避免不了手动加载到工作空间这一步骤,改一次表格的内容,就要重新运行一次脚本,也是挺麻烦的,所以博主也不推荐。

3.3 Simulink自带的数据字典文件

通过建立一个Simulink自带的数据字典文件(以sldd为后缀),并将其和Simulink模型关联,就可以实现数据对象的管理。博主强烈推荐,下一章会举例讲解sldd文件的建立和关联。

4 建立数据字典并关联模型

4.1 建立数据字典

1> 打开模型上方工具栏的Model Explorer

2> File–>New–>Data Dictionary建立一个数据字典,将其命名为demo.sldd,保存在Sminulink文件同一个路径下

3> 选中demo下的Design Data,点击上方的Add Matlab Variable,这时中间的数据字典展示栏会显示一个默认的名为“Var”的常量对象

4> 将它的Name修改为Gain_Const,Value改为2.

5> 右键demo–>Save Changes

至此,数据字典文件创建完成,一个常数对象添加到数据字典中。接下来就要把数据字典和模型相关联起来。

相关文章
[simulink] --- 数据字典(下)
[simulink] --- 数据字典(下)
376 0
[simulink] --- simulink辅助技巧
[simulink] --- simulink辅助技巧
136 1
|
6月前
[simulink] --- 数据字典
[simulink] --- 数据字典
147 0
[simulink] --- simulink信号
[simulink] --- simulink信号
154 0
|
6月前
|
C语言
[simulink] --- simulink模块(三)
[simulink] --- simulink模块
425 0
|
6月前
|
存储 缓存
[simulink] --- simulink模块(一)
[simulink] --- simulink模块
459 0
|
6月前
|
存储
[simulink] --- simulink模块(二)
[simulink] --- simulink模块
283 0
|
6月前
[simulink] --- simulink中stateflow的使用
[simulink] --- simulink中stateflow的使用
128 0
|
6月前
|
异构计算
【Simulink】锁相环模块
【Simulink】锁相环模块