目录
封装是一种自定义模块用户界面,它可隐藏模块内容,使用它自己的图标和参数对话框将内容以原子块的形式向用户显示。Mask Editor 对话框可帮助创建和自定义模块封装。当创建或编辑封装时,Mask Editor 对话框会打开。可以通过以下任一方式访问 Mask Editor 对话框:
(1)要创建封装,需要执行下列操作:
-
在 Diagram选项卡中,在Mask下,点击 Create Model Mask。如图所示:
-
选择模块,并在 Block 选项卡上,在 Mask 组中,点击 Create Mask。Mask Editor 随即打开。如图所示:
(2)要编辑封装,需要执行下列操作:
-
在 Block 选项卡的 Mask 组中,点击 Edit Mask。
-
右键点击模块并选择 Mask > Edit Mask。
注:也可以使用键盘快捷方式 Ctrl + M 打开 Mask Editor。
Icon & Ports 窗格
-
Options
-
Preview
-
Icon drawing commands
Icon & Ports 窗格可以创建一个包含描述性文本、状态方程、图像以及图形的模块图标。如图所示:
Icon & Ports 窗格分为以下各部分:
-
Options:提供可以应用于封装图标的不同控制项的列表。
-
Preview:显示模块封装图标的预览。
-
Icon drawing commands:能够通过使用 MATLAB 代码绘制封装图标。
Options
左窗格中可用的 Options 是一个控制项列表,允许指定封装图标的属性。这些选项包括:
-
Block frame
-
Icon transparency
-
Icon units
-
Icon rotation
-
Port rotation
-
Run Initialzation
Block frame
模块边框是围绕模块的矩形。可以通过将 Block Frame 参数设置为 “Visible” 或 “Invisible”,来选择显示或隐藏边框。默认值是使模块边框可见。例如,下图显示 AND 门模块的可见和不可见的模块边框。如图所示:
Icon transparency
根据隐藏还是显示图标下的内容,可以将图标透明度设置为 “Opaque”、“Opaque with ports” 或 “Transparent”。默认选项 “Opaque” 将隐藏诸如端口标签等信息。透明图标将显示模块边框,不透明图标将隐藏模块边框。如图所示:
对于子系统模块,如果将图标透明度设置为 “Opaque with ports”,端口标签将可见。如图所示:
注:将图标透明度设置为 “Transparent”,则 Simulink 不隐藏模块边框,即使将 Block Frame 属性设置为 “Invisible” 也是如此。
Icon units
此选项控制绘制命令使用的坐标系。它仅适用于 plot、text 和 patch 绘制命令。可以从以下选项中选择:“Autoscale”、“Normalized” 和 “Pixel”。如图所示:
- “Autoscale” 缩放图标以适应模块边框。当模块调整大小时,图标也调整大小。例如,下图显示使用这些向量绘制的图标:
X = [.0 .2 .3 .4 .9]; Y = [.4 .6 .3 .5 .8];
- “Pixel” 使用以像素表示的 X 值和 Y 值绘制图标。在调整模块大小时,图标大小不会自动调整。要强制图标随模块一起调整大小,基于模块大小定义绘制命令。
Icon rotation
在模块发生旋转或翻转时,可以选择是旋转或翻转图标,还是让图标固定在其原始方向。默认值是不旋转图标。图标旋转方式与模块端口旋转方式一致。下图显示在旋转 AND 门模块时选择 “Fixed” 和 “Rotates” 图标旋转的结果。如图所示:
Port rotation
此选项允许指定封装模块的端口旋转类型。相关选择包括:
-
“Default”
顺时针旋转后端口将重新排序,以保持从左到右的端口编号顺序(对于位于模块上下两端的端口)以及从上到下的端口编号顺序(对于位于模块左右两侧的端口)。
-
“physical”
端口随模块一起旋转,而不在顺时针旋转后重新排序。
Default 旋转选项适用于控制系统和其他建模应用,它们的模块图通常采用从上到下和从左到右的方向。它通过最大限度减少旋转后重新连接模块以保持标准方向的需求,简化了模块图的编辑。
类似地,physical 旋转选项适用于电子、机械、液压和其他建模应用,它们的模块表示物理组件,线条表示物理连接。physical 旋转选项可以更保真地对所代表的设备行为进行建模(即端口随模块一起旋转,就像它们在物理设备上那样)。此外,该选项还可避免因为旋转而导致线条交叉,从而使模块图更容易解读。
例如,下面两个图表示相同的晶体管电路。一张图中表示晶体管的封装模块使用 default 旋转,而另一张图中使用 physical 旋转。
这两张图都避免了线条交叉而使图难以解读。下图显示了发生单次顺时针旋转后的模块图。
注:使用 default 旋转的图引入了线条交叉,而使用 physical 旋转的图没有发生这种情况。此外,使用 default 旋转的图无法通过编辑来删除线条交叉。
Run Initialization
Run initialization 选项用于控制封装初始化命令的执行。相关选择包括:
-
Off(默认值):不执行封装初始化命令。当封装绘制命令与封装工作区之间不存在依存关系时,建议将 Run initialization 值指定为 Off。将该值设置为 Off 有助于优化 Simulink 性能,因此这样将不会执行封装初始化命令。
-
On:如果封装工作区不是最新的,则执行封装初始化命令。如果指定此选项,不管封装工作区与封装绘制命令之间是否存在依存关系,都会在执行封装绘制命令之前执行封装初始化命令。
-
Analyze:仅在存在工作区依存关系的情况下才执行封装初始化命令。如果指定此选项,Simulink 将在执行封装图标绘制命令之前执行封装初始化命令。Analyze 选项是为了实现向后兼容性,其他情况下不建议使用。对于 R2016b 或以前的 Simulink 模型,建议使用 Upgrade Advisor 进行升级。
Preview
此部分显示模块封装图标的预览。仅当封装包含绘制的图标时,模块封装预览才可用。当添加图标绘制命令并点击 Apply 时,预览图像将刷新并显示在 Icon & Ports 窗格的 Preview 部分。
Icon drawing commands
中部窗格中的 Icon drawing commands 文本框能够添加代码来绘制模块图标。可以使用 Mask icon drawing commands 表中所列的命令来绘制模块图标。
Mask icon drawing commands
绘制命令 | 说明 | 语法示例 | Preview |
---|---|---|---|
color | 更改后续封装图标绘制命令的绘图颜色 | color('red'); port_label('output',1,'Text') | ![]() |
disp | 在封装图标上显示文本。 | disp('Gain') | ![]() |
dpopy | 在封装图标上显示传递函数 | dpoly([0 0 1], [1 2 1], 'z') | ![]() |
droots | 在封装图标上显示传递函数 | droots([-1], [-2 -3], 4) | ![]() |
fpritf | 在封装图标上居中显示变量文本 | fprintf('Sum = %d', 7) | ![]() |
image | 在封装图标上显示 RGB 图像 注意:要从用户界面添加封装图标图像,请点击上下文菜单中的 Mask > Add Mask Icon。 | image('b747.jpg') | ![]() |
patch | 在封装图标上绘制指定形状的彩色补片 | patch([0 10 20 30 30 0], [10 30 20 25 10 10],[1 0 0]) | ![]() |
plot | 在封装图标上绘制由一系列点连接而成的图形 | plot([10 20 30 40], [10 20 10 15]) | ![]() |
port_label | 在封装图标上绘制端口标签 | port_label('output', 1, 'xy') | ![]() |
text | 在封装图标上的特定位置显示文本。 您必须在 Icon units 框中选择 | text(5,10, 'Gain') | ![]() |
block_icon | 将包含在子系统中的模块的图标提升到子系统封装 | block_icon(BlockName) 此处,模块的图标提升到它的 Subsystem 模块。 | ![]() |
注:Simulink 不支持匿名函数内的封装绘制命令。
绘制命令按照将它们添加到 Icon drawing commands 文本框中的相同顺序执行。绘制命令可访问封装工作区中的所有变量。如果任何绘制命令无法成功执行,模块图标会显示问号 。
在以下情况下,绘制命令在绘制模块后执行:
-
在封装对话框进行了更改并已应用。
-
在 Mask Editor 中进行了更改。
-
对模块图进行了更改,并且这些更改会影响模块的外观,例如旋转该模块。
Parameters & Dialog 窗格
-
Controls
-
Dialog box
-
Property editor
通过 Parameters & Dialog 窗格,可以使用 Parameters、Display 和 Action 选项板中的对话框控件设计封装对话框。如图所示:
Parameters & Dialog 窗格分为以下各部分:
Parameter & Dialog 窗格
部分 | 部分说明 | 子部分 | 子部分说明 |
---|---|---|---|
Controls | 控件是封装对话框中用户可与之交互以添加或处理数据的元素。 | 参数 | 参数是参与仿真的用户输入。Parameters 选项板具有一组参数对话框控件,您可以将它们添加到封装对话框中。 |
Display | Display 选项板上的 Controls 允许您在封装对话框中将对话框控件分组,并显示文本和图像 | ||
操作 | Action 控件允许您在封装对话框中执行一些操作。例如,您可以点击封装对话框中的超链接或按钮。 | ||
Dialog box | 也可以点击对话框控件或将其从选项板拖放到 Dialog box 以创建封装对话框。 | 不适用 | 不适用 |
Property editor | Property editor 允许您查看和设置 Parameters、Display 和 Action 控件的属性。 | Properties | 定义所有对话框控件的基本信息,例如 Name、Value、Prompt 和 Type。 |
Attributes | 定义封装对话框控件的解释方式。属性仅与参数相关。 | ||
Dialog | 定义对话框控件在封装对话框中的显示方式。 | ||
布局 | 定义对话框控件在封装对话框上的布局。 |
Controls
控件部分被进一步划分为 Parameters、Display 和 Action 部分。控件Table列出了不同控件及其说明。
控件Table
控件 | 说明 | |
---|---|---|
Parameters | ||
| Edit | 允许通过在字段中键入来输入参数值。 您可以将约束与 |
| Check box | 接受布尔值。 |
| Popup | 允许从可能值列表中选择参数值。当您选中 Evaluate 复选框时,关联的变量会保存所选项的索引。请注意,索引从 1 开始,而不是从 0 开始。禁用 Evaluate 时,关联的变量将保存所选项的字符串。 |
![]() | Combo box | 允许从可能值列表中选择参数值。也可以键入此列表中的值或不在此列表中的值。当选中 Evaluate 复选框时,关联的变量会保存所选项的实际值。 可以将约束与 Combo box 参数相关联。 |
| Radio button | 允许从可能值列表中选择参数值。单选按钮的所有选项都显示在封装对话框中。 |
| Slider | 允许滑动到由最小值和最大值定义的范围内的值。Slider 参数可以接受数字或变量名称形式的输入。如果指定的变量是基础工作区或模型工作区变量,则可以通过 Slider 调整变量值。 可以使用 Scale 下拉菜单调整线性刻度或对数刻度中的值。还可以动态控制滑块范围。 注意:为 Slider 指定的值将自动应用。 |
| Dial | 允许拨动到由最小值和最大值定义的范围内的值。Dial 参数可以接受数字或变量名称形式的输入。如果指定的变量是基础工作区或模型工作区变量,则可以通过 Dial 调整变量值。 可以使用 Scale 下拉菜单调整线性刻度或对数刻度中的值。 还可以动态控制刻度盘范围。 注意:为 Dial 指定的值将自动应用。 |
| Spinbox | 允许在由最小值和最大值定义的范围内微调值。可以指定值的步长大小。 注意:为 Spinbox 指定的值将自动应用。 |
DataTypeStr | 允许指定封装参数的数据类型。可以将 Min、Max 和 Edit 参数与数据类型参数相关联。 | |
| Min | 指定 DataTypeStr 参数的最小值。 |
| Max | 指定 DataTypeStr 参数的最大值。 |
| Unit | 允许为封装模块的输出值或输入值设置测量单位。参数 Unit 可以接受任何测量单位作为输入。例如,表示角速度的 rad/sec,表示加速度的 meters/sec2,或表示距离的 km 或 m。 |
| Custom Table | 允许在封装对话框中添加表。可以在 Property editor 的 Values 部分将值添加为嵌套元胞数组。 |
![]() | Promote parameter | 允许有选择地将模块参数从底层模块提升到封装层。点击 Type options 字段可打开 Promoted Parameter Selector 对话框。在此对话框中,可以选择要提升的模块参数。点击 OK 将其关闭。 |
| Promote all | 允许将所有底层模块参数提升到封装层。当提升所有参数时,提升操作将删除之前已提升的参数。 |
Container | ||
| Panel | 对话框控件组的容器。可使用 Panel 对对话框控件进行逻辑分组。 |
| Group box | 将封装对话框中的其他对话框控件和容器进行分组的容器。 |
| Tab | 将封装对话框中的对话框控件进行分组的选项卡。选项卡包含在选项卡容器中。一个选项卡容器可以有多个选项卡。 |
![]() | Table | 以表格形式对 Edit、Check box 和 Popup 参数进行分组的容器。还可以对 Table 容器中列出的内容进行搜索和排序。 |
| CollapsiblePanel | 将对话框控件进行分组的容器,与 Panel 类似。可以选择展开或折叠 CollapsiblePanel 对话框控件。 |
Display | ||
| Text | 封装对话框中显示的文本。 |
| Image | 封装对话框中显示的图像。 |
| Text Area | 在封装对话框中添加自定义文本或 MATLAB 代码。 |
| Listbox Control | 允许从可能值列表中选择值。可以选择多个值(Ctrl + 点击)。 |
| Tree Control | 允许从可能值的层次结构树中选择值。可以选择多个值(Ctrl + 点击)。 |
Action | ||
| Hyperlink | 封装对话框中显示的超链接文本。 |
| Button | 封装对话框上的按钮控件。可以对按钮编程使其执行特定操作。还可以在按钮控件上添加图像。 |
Dialog box
可以通过将对话框控件从 Controls 部分拖到 Dialog box,来构建对话框控件的层次结构。也可以点击 Controls 部分的选项板,将所需控件添加到 Dialog box 中。可以在 Dialog box 中添加最多 32 级的层次结构。
Dialog box 显示三个字段:Type、Prompt 和 Name。
-
Type 字段显示对话框控件的类型,不能编辑。它还显示参数对话框控件的序列号。
-
Prompt 字段显示对话框控件的提示文本。
-
Name 字段将自动填充,用于唯一地标识对话框控件。可以选择在 Name 字段中添加不同的值(有效的 MATLAB 名称),但不能与内置参数名称相同。
在 Dialog box 上,Parameter 控件以浅蓝色背景显示,而 Display 和 Action 控件以白色背景显示。可以在层次结构中移动对话框控件,可以复制和粘贴对话框控件,也可以删除某个节点。
Property editor
允许查看和设置 Parameter、Display 及 Action 对话框控件的属性。下面显示了 Parameter 的 Property editor:
可以设置 Parameter、Action 和 Display 对话框控件的以下属性。
Property editor
属性 | 说明 |
---|---|
Properties | |
Name | 唯一地标识封装对话框中的对话框控件。必须为所有对话框控件设置 Name 属性。 |
Value | Parameter 对话框控件的值。Value 属性仅适用于 Parameter 对话框控件。 |
Prompt | 标识封装对话框中的参数的标签文本。Prompt 属性适用于除 Panel 和 Image 对话框控件之外的所有对话框控件。 |
Type | 对话框控件的类型。可以使用 Type 字段更改 Parameter 和 Container 类型。不能将任何容器类型更改为 Tab,反之亦然。 |
Expand | 用于指定可折叠的 Panel 对话框控件默认情况下是处于展开还是折叠状态。 |
Type options | Type options 属性允许设置特定的 Parameter 属性。Type options 属性适用于 Popup、Radio button、DataTypeStr 和 Promoted 参数。 |
File path | 可以使用 Image 对话框控件向封装中添加图像。还可以在 Button 对话框控件上显示图像。无论是哪种情况,都应在为这两个对话框控件启用的 File path 属性中提供图像的路径。对于 Button 对话框控件,为 Prompt 属性指定一个空字符向量以便能够显示图像。 |
Word wrap | Word wrap 属性用于对长文本进行换行。Word wrap 属性仅适用于 Text 对话框控件。 |
Maximum 和 Minimum | Maximum 和 Minimum 属性允许为 Spinbox、Slider 和 Dial 等控件指定一个范围。 |
Step size | 允许指定值的步长大小。此属性仅适用于 Spinbox 对话框控件。 |
Tooltip | 允许为选定的对话框控件类型指定工具提示。当将光标悬停在封装对话框中的对话框控件上时,将显示工具提示。可以为除 Group box、Tab、CollapsiblePanel 和 Panel 之外的所有对话框控件类型添加工具提示。 |
Scale | 允许将 Slider 和 Dial 对话框控件的调整刻度设置为 linear 或 log 。 |
Attributes | |
Evaluate | Simulink 使用在封装对话框中键入的封装参数值,或者,它也可以计算指定的内容并将其用作计算结果。选择参数的 Evaluate 选项可指定执行参数计算(默认值)。要禁止计算,请清除该选项。 |
Tunable | 默认情况下,可以在仿真期间更改封装参数值。要防止在仿真期间更改参数值,请清除 Tunable 选项。如果封装参数不支持参数调优,Simulink 将忽略封装参数的 Tunable 选项设置。仿真时,这些参数将在 Mask 对话框中禁用。可以指定禁用调优的参数的类型。例如,可调模式设置为 run-to-run 模式的 Combo box 参数可以在快速重启模式下仿真时更改其 Typeoptions 属性。 也可以在快速重启模式下仿真模型时更改封装参数值。根据为 Tunable 属性和仿真模式指定的值,封装参数可以是只读的或读写的。
|
Read only | 表示参数不能进行修改。 |
Hidden | 表示参数不能显示在封装对话框中。 |
Never save | 表示参数值永远不会保存在模型文件中。 |
Constraint | 允许向所选参数添加约束。 |
Dialog box | |
Enable | 默认情况下 Enable 处于选中状态。如果清除此选项,选定控件将无法进行编辑。封装模块的用户不能设置该参数的值。 |
Visible | 仅当选择此选项时,选定控件才会出现在封装对话框中。 |
Callback | 希望 Simulink 在用户向选定控件应用更改时执行的 MATLAB 代码。Simulink 使用基础工作区执行回调代码。 |
Layout | |
Item location | 用于设置对话框控件要在当前行或新行中出现的位置。 |
Align Prompts | 允许对齐封装对话框中的参数。除 Table 以外的所有 Display 控件类型都支持此选项。 |
Prompt location | 用于将对话框控件的提示位置设置为对话框控件的顶部或左侧。 不能为 Check box、Dial、DataTypeStr、Collapsible Panel 和 Radiobutton 设置 Prompt location 属性。 |
Orientation | 用于指定滑块和单选按钮的水平或垂直方向。 |
Horizontal Stretch | 如果选择此选项,则当调整封装对话框的大小时,封装对话框上的控件将水平拉伸。默认情况下,Horizontal Stretch 复选框处于选中状态。 |
Initialization 窗格
-
Dialog varables
-
Initialzation commands
-
Allow library block to modify its contents
-
初始化命名的规则
Initialization 窗格允许添加用于初始化封装模块的 MATLAB 命令。如图所示:
当打开模型时,Simulink 会查找位于在模型顶层或开放式子系统中的可见封装模块。仅当这些可见的封装模块满足以下任一条件时,Simulink 才对这些模块执行初始化命令:
-
封装模块具有图标绘制命令。
- 封装模块属于一个库,并且已启用 Allow library block to modify its contents。
(1)当执行以下操作时,模型中所有封装模块的初始化命令将会运行:
-
更新图
-
开始仿真
-
开始代码生成
-
点击对话框上的 Apply
(2)当执行以下操作时,个别封装模块的初始化命令将会运行:
-
使用 Mask Editor 或 set_param 命令更改定义封装的任何封装参数,例如 MaskDisplay 和 MaskInitialization。
-
旋转或翻转封装模块(如果图标依赖于初始化命令)。
-
致使图标被绘制或重绘,并且图标绘制依赖于初始化代码。
-
通过使用模块对话框或 set_param 命令更改封装参数的值。
-
在同一模型中或不同模型之间复制封装模块。
Initialization 窗格包含此部分中描述的控件。
Dialog variables
Dialog variables 列表会显示对话框控件和关联的封装参数的名称,这些参数在 Parameters & Dialog 窗格中定义。还可以使用该列表更改封装参数的名称。要更改名称,请双击列表中的名称。随即会出现包含现有名称的编辑字段。编辑现有名称,然后按 Enter 或在编辑字段外部点击以确认所做的更改。
Initialization commands
在此字段中输入初始化命令。可以输入任何有效的 MATLAB 表达式,其中包含 MATLAB 函数和脚本、运算符以及在封装工作区中定义的变量。初始化命令在封装工作区而非基础工作区中运行。
Allow library block to modify its contents
仅当封装模块位于库中时,才会启用此复选框。选择此选项可允许修改封装模块的参数。如果封装模块是封装子系统,则此选项允许添加或删除模块并设置该子系统内模块的参数。如果未选择此选项,则当封装库模块尝试以任何方式修改其内容时,都将会生成错误。
初始化命令的规则
以下规则适用于封装初始化命令:
-
不使用初始化代码创建其外观或控件设置会随其他控件设置的更改而更改的封装对话框。改用专门为此用途提供的封装回调。
-
避免在初始化命令的前面加上变量名称 MaskParam_L_ 和 MaskParam_M_。这些特定前缀是保留项,仅供内部变量名称使用。
-
如果模块位于一个封装子系统中,而该封装子系统又位于正在初始化的其他封装子系统中,则应避免使用 set_param 命令来设置这些模块的参数。
Documentation 窗格
在 Documentation 窗格中,可以定义或修改封装模块的类型、说明和帮助文本。
Type
封装类型是显示在封装对话框中和模块的所有 Mask Editor 窗格上的模块分类。当 Simulink 显示封装对话框时,它会为封装类型添加后缀(mask)。要定义封装类型,请在 Type 字段中输入类型。文本可以包含任何有效的 MATLAB 字符,但不能包含换行符。
Description
封装说明是描述模块的用途或功能的简要帮助文本。默认情况下,封装说明显示在封装对话框中的封装类型下面。要定义封装说明,请在 Description 字段中输入说明。文本可以包含任何合法的 MATLAB 字符。Simulink 自动对较长的行进行换行。可以使用 Enter 键强制换行。
Help
封装模块的 Online Help(联机帮助)提供 Type 和 Description 字段所提供信息之外的其他信息。当封装模块用户点击封装对话框上的 Help 按钮时,将会在一个单独的窗口中显示此信息。要定义封装帮助,请在 Help 字段中键入以下某一项:
-
URL 设定
-
web 或 eval 命令
-
文字或 HTML 文本
(1)提供 URL
如果 Mask help 字段的第一行是一个 URL,Simulink 会将该 URL 传递给默认 Web 浏览器。该 URL 可以以 https:、www:、file:、ftp: 或 mailto: 开头。示例:
https://www.mathworks.com
file:///c:/mydir/helpdoc.html
一旦浏览器处于活动状态,MATLAB 和 Simulink 将无法再控制其操作。
(2)提供一个 web
命令.
如果 Mask help 字段的第一行是一个web命令,Simulink 会将该命令传递给 MATLAB,以便在 MATLAB Online Help 浏览器中显示指定的文件。示例:
web([docroot '/MyBlockDoc/' get_param(gcb,'MaskType') '.html'])
(3)提供一个 eval
命令
如果 Mask help 字段的第一行是一个 eval 命令,Simulink 会将该命令传递给 MATLAB,以便执行指定的计算。示例:
eval('open My_Spec.doc')
(4)提供文字或 HTML 文本
如果 Mask help 字段的第一行不是 URL 或者web或 eval命令,Simulink 将在 MATLAB Online Help 浏览器中的某个标题下显示该文本,该标题是 Mask type 字段的值。文本可以包含任何合法的 MATLAB 字符、换行符和任何标准的 HTML 标记,包括像 img 这样显示图像的标记。
Simulink 首先将该文本复制到临时文件夹,然后使用web命令显示该文本。如果希望文本显示图像,则可以提供图像文件的 URL 路径,也可以将图像文件放在临时文件夹中。使用tempdir可查找 Simulink 用于系统的临时文件夹。
其他选项
以下按钮将出现在 Mask Editor 上: