关于Simulink的数据对象知识。
1. 什么是Simulink数据对象
理解数据对象,请先补充软件面向对象编程的概念(本文略)。
在Simulink,你可以创建数据对象,以便为信号、状态和模块参数指定值、值范围、数据类型、可调性以及其他特征。可以在 Simulink® 对话框中使用对象名称指定信号、状态和参数特征。
对象存在于工作区中(基础工作区、模型工作区或 Simulink 数据字典)。利用数据对象,只需更改工作区对象的值,即可对信号、状态和参数特征进行模型范围的更改。
内置包Simulink中定义了两个数据类,即Simulink.Signal和Simulink.Parameter,可以用它们创建数据对象。
要存储查找表数据以便在查找表模块(例如 n-D Lookup Table)之间共享,可以使用 Simulink.LookupTable 和 Simulink.Breakpoint 类。
通过定义内置数据类的子类,可以自定义数据对象属性和方法。
2. 命名约定
如上图片,可以看出,在Matlab中,文件夹名称前面带“+”号代表是类定义的包,名称前面带“@”代表是类。
Simulink 使用圆点表示法为数据类命名:
package.class
- package 是包含类定义的包的名称。
- class 是类的名称。
3. 在 Simulink 模型中使用数据对象
要通过修改工作区或数据字典中的变量为信号、模块参数和状态指定仿真和代码生成选项,请使用数据对象。将这些对象与模型图中的信号、参数和状态相关联。
创建/应用数据对象,常见的有三种方法:
- 在Property Inspector中(Modeling-Design-Property Inspector),第3.1节介绍
- 在Model Data Editor中,第3.2节介绍
- 模型资源管理器的 Model Hierarchy,第4节介绍
3.1 使用参数对象
您可以使用参数对象(而不是 MATLAB® 数值变量)为模块参数指定值。例如,要创建并使用名为 myParam 的 Simulink.Parameter 对象来指定 Gain 模块的 Gain 参数,请执行以下操作:
-
在模型中,在 Modeling 选项卡上,在 Design 下,点击 Property Inspector。
-
在模型中,点击目标 Gain 模块。Property Inspector 显示模块的属性和参数。
-
将 Gain 参数的值设置为 myParam。
-
在参数值旁边,点击操作按钮(竖着的三个点图标) ,然后选择 Create。
-
在 Create New Data 对话框中,将 Value 设置为 Simulink.Parameter(15.23),然后点击 Create。
Simulink.Parameter 对象 myParam 出现在基础工作区中(如果想放入数据字典,请先创建数据字典,然后这里Location中就可以选择)。属性对话框显示对象将参数值 15.23 存储在 Value 属性中。 -
使用属性对话框,通过调整对象属性指定模块参数的其他特征。例如,要指定参数可采用的最小值和最大值,请使用 Minimum 和 Maximum 属性。
现在,Gain 参数在仿真期间使用值 15.23。
3.2 使用信号对象
可以将信号线或模块状态(例如 Unit Delay 模块的状态)与信号对象相关联。
3.2.1 用于信号
要使用信号对象控制模型中某个信号的特征,请使用与该信号相同的名称在工作区中创建对象。
- 在模型中,在 Modeling 选项卡上,点击 Model Data Editor。
- 在模型数据编辑器中,选择 Signals 选项卡。
- 在模型中,选择目标信号。模型数据编辑器突出显示与信号对应的行。
- 在模型数据编辑器中的 Name 列中,给定信号名称,如 mySig。
- 点击信号名称旁边的按钮(三个竖着的点)。选择 Create and Resolve。
- 在 Create New Data 对话框中,将 Value 设置为 Simulink.Signal。使用 Location 下拉列表选择要存储对象的工作区(默认值为 “Base Workspace”,同理可以选择数据字典)。点击 Create。
目标工作区中出现 Simulink.Signal 对象 mySig。Simulink 选择信号属性 Signal name must resolve to Simulink signal object,从而强制模型中的信号使用信号对象存储的属性。 - 将打开新对象的属性对话框。
3.2.2 用于状态
使用信号对象来控制模块(例如 Discrete-Time Integrator 模块)的状态特征。
- 在模型中,在 Modeling 选项卡上,点击 Model Data Editor。
- 在模型数据编辑器中,选择 States 选项卡。
- 在模型中,选择拥有目标状态的模块。模型数据编辑器突出显示与该状态对应的行。
- 在模型数据编辑器中的 Name 列中,给定状态名称,例如 myState。
- 点击状态名称旁边的按钮(竖着的三个点)。选择 Create and Resolve。
- 在 Create New Data 对话框中,将 Value 设置为 Simulink.Signal。使用 Location 下拉列表选择要存储对象的工作区(默认值为 “Base Workspace”,同理可以选择数据字典)。点击 Create。
Simulink.Signal 对象 myState 出现在目标工作区中。Simulink 选择模块参数 State name must resolve to Simulink signal object,从而强制模型中的状态使用信号对象存储的属性。 - 使用属性对话框指定状态特征。点击 OK。
4. 从内置数据类包 Simulink 创建数据对象
我们更常用的是从内置的数据类包(Simulink.Parameter和Simulink.Signal)中通过用户界面的形式或编程的形式创建这些对象。方法大致如下:
- 在模型资源管理器的 Model Hierarchy 窗格中,选择要包含数据对象的工作区。例如,点击 Base Workspace。
- 在工具栏上,点击 Add Parameter
或 Add Signal
旁边的箭头。从下拉列表中选择 Simulink Parameter 或 Simulink Signal。
基础工作区中将出现一个参数对象或信号对象。新参数对象的默认名称为 Param。新信号对象的默认名称为 Sig。 - 要在模型资源管理器工具栏上创建 Simulink.LookupTable 和 Simulink.Breakpoint 对象,请使用
按钮。