目录
封装是一种自定义模块界面,它可隐藏模块内容,使用它自己的图标和参数对话框将内容以原子块的形式显示。它可以封装模块逻辑,提供对模块数据的受控访问,并简化模型的图形外观。
当封装模块时,将创建封装定义并随模块一同保存。封装只改变模块接口,而不改变底层模块特征。可以通过在封装上定义对应的封装参数,提供对一个或多个底层模块参数的访问。
封装 Simulink 模块可以:
-
在模块上显示有意义的图标
-
为模块提供自定义对话框
-
提供一个对话框,只允许访问底层模块的所选参数
-
提供特定于封装模块的用户自定义说明
-
使用 MATLAB® 代码初始化参数
直线方程 y = mx + b 的模型如图所示:
极少数模块不能封装,如:
-
Scope 模块
-
Simulink Function 模块
-
Initialize Function、Terminate Function 和 Reset Function 模块
-
Gauge 模块
封装术语
术语 | 说明 |
---|---|
封装图标 | 使用绘图命令生成的封装模块图标。封装图标可以是静态的,也可以随底层模块参数值动态变化。 |
封装参数 | 在 Mask Editor 中定义并显示在封装对话框中的参数。在封装对话框中设置封装参数值将会设置对应的模块参数值。 |
封装初始化代码 | 用于初始化封装模块或反映当前参数值的 MATLAB 代码。在 Mask Editor 对话框的 Initialization 窗格中添加封装初始化代码。例如,添加初始化代码以便自动设置参数值。 |
封装对话框回调代码 | 当封装参数的值更改时在基础工作区中运行的 MATLAB 代码。使用回调代码动态更改封装对话框的外观和反映当前参数值。例如,在对话框上启用可见参数。 |
封装文档 | Mask Editor 中定义的封装模块的说明和用法信息。 |
封装对话框 | 包含用于设置封装参数值的字段并提供封装说明的对话框。 |
封装工作区 | 定义了封装参数的封装或包含初始化代码的封装都会有一个封装工作区。此工作区用来存储封装参数的计算值和封装使用的临时值。 |
创建简单封装
可以使用 Mask Editor 以交互方式封装模块,也可以编程方式封装模块。该例子使用 Mask Editor 来封装模块。
有关封装的示例,参考Simulink封装示例。调用指令为:
open_system([docroot '/toolbox/simulink/examples/slexMaskingExample'])
打开 Mask Editor
(1)打开要在其中封装模块的模型。例如,打开 subsystem_example。此模型包含一个 Subsystem 模块,该模块为直线方程建模:y = mx + b。
(2)选择 Subsystem 模块,在 Subsystem 选项卡上,在 Mask 组中,点击 Create Mask。
如图所示:
点击之后,如图所示:
定义封装
Mask Editor 包含四个选项卡,可以定义模块封装和自定义封装对话框。
Icon & Ports 选项卡
使用此选项卡创建模块封装图标。可以使用左侧的 Options 窗格指定图标属性和图标可见性。
向模块封装添加图像。
(1)在 Block frame 下拉框中,选择 Visible。
(2)在 Icon transparency 下拉框中,选择 Opaque。
(3)在 Icon units 下拉框中,选择 Autoscale。
(4)要限制图标旋转,请从 Icon rotation 列表中选择 Fixed。
(5)在 Icon drawing commands 文本框中,键入:
x = [0 0.5 1 1.5];y = [0 0.5 1 1.5];
% An example to defines the variables x and y
plot(y,x) % Command to plot the graph
(6)要保存所做更改,请点击 Apply。要预览模块封装图标而不退出 Mask Editor,请点击 Preview。
如图所示:
Parameters & Dialog 选项卡:
使用此选项卡向封装对话框添加参数、显示和操作等控制项。
向模块封装添加 Edit 框。
(1)在左窗格的 Parameter 下,点击 Edit 两次以向 Dialog box 窗格中添加两个新行。
(2)分别在 Prompt 和 Name 列中键入值,在 Prompt 中键入 Slope 和 Intercept。在 Prompt 列中输入的值将出现在封装对话框中。在 Name 列中输入的值是封装参数名称。封装参数名称必须是有效的 MATLAB 名称。
(3)在右窗格的 Property editor 下,为 Properties、Dialog 和 Layout 部分中的字段提供输入值。
(4)点击 Apply。
如图所示:
(5)要预览封装对话框而不退出 Mask Editor,请点击 Preview。
Initialization 选项卡:
使用此窗格指定 MATLAB 代码来控制封装参数。例如,可以为封装参数提供预定义的值。以示例中的方程 y = mx + b 为例。要设置对应于“m”的子模块的值,可以使用初始化窗格中的 set_param 函数。
Documentation 选项卡:
使用此选项卡可添加封装的名称、说明以及其他信息。
Documentation 选项卡包含以下字段:
(1)Type:在此框中,可以添加模块封装的名称。封装名称显示在封装对话框的顶部。不能添加换行符。
(2)Description:在此框中,可以添加模块封装的说明。默认情况下,说明显示在封装名称下面,并且可以包含换行符和空格。
(3)Help。可以在此框中添加有关模块封装的其他信息。当点击封装对话框上的 Help 时,将会显示此信息。可以使用纯文本、HTML 和图形、URL 和命令在 Help 字段中添加信息。
在 Mask Editor 中添加信息后,点击 Apply 或 OK。现在模块已完成封装。
如图所示:
对封装进行操作
(1)可以预览封装,还可以选择取消模块封装或编辑模块封装。
(2)双击封装模块。
如图所示:
随即显示封装对话框。
(3)在封装对话框的 Slope 和 Intercept 框中键入值。要查看输出,请对模型进行仿真。
(4)点击 OK。
(5)要编辑封装定义,请选择子系统模块,然后从工具条中的 Subsystem 选项卡中点击 Edit Mask。
(6)选择封装模块,并在 Subsystem Block 选项卡上的 Mask 组中,点击 Look Under Mask 以查看:
-
封装子系统内的模块
-
封装模块的内置模块对话框
-
链接的封装模块的基础封装对话框