Model
引用另一个模型来创建模型层次结构

库:
Simulink /
Ports & Subsystems
HDL Coder /
Ports & Subsystems
描述
Model 模块引用指定的模型。该模块显示与引用模型顶层输入和输出端口对应的输入和输出端口。这些端口可将引用模型连接到父模型中的其他模块。
要确定 Model 模块是否比另一个具有类似功能的模块更适合您的目标,请参阅Explore Types of Model Components和比较模型组件的功能。
有关如何引用包含 Model 模块的模型的说明,请参阅引用现有模型。
默认情况下,Model 模块显示引用模型内容的表示。有关详细信息,请参阅预览模型组件的内容。要查看引用模型的内容,请双击 Model 模块。
如果您拥有 Simulink® Coder™ 许可证,您可以通过保护模型来隐藏引用模型的实现细节。要保护模型,请参阅保护模型以隐藏内容 (Simulink Coder)。要引用受保护模型,请参阅引用来自第三方的受保护模型。
示例
端口
输入
Port_1 — 与引用模型的根级模块对应的输入
标量 | 向量 | 矩阵 | 数组 | 总线
Model 模块针对它引用的模型的每个输入端口都有一个对应的输入端口。引用模型的输入端口由 Inport 和 In Bus Element 模块定义。Model 模块端口的名称与引用模型中对应端口的名称相匹配。每个 Model 模块端口的输入信号、消息或函数调用必须对引用模型中的对应端口有效。有关详细信息,请参阅模型引用接口和边界。
提示
引用模型中的信号属性独立于 Model 模块的上下文。例如,信号维度和数据类型不会跨 Model 模块边界传播。要在引用模型中定义信号属性,请为根级 Inport 和 In Bus Element 模块定义模块参数。
连接到输入端口的函数调用会传入引用模型中。要根据函数调用有条件地执行引用模型,请参阅函数调用。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
| bus
| image
复数支持: 是
输出
Port_1 — 与引用模型的根级模块对应的输出
标量 | 向量 | 矩阵 | 数组 | 总线
Model 模块针对它引用的模型的每个输出端口都有一个对应的输出端口。引用模型的输出端口由 Outport 和 Out Bus Element 模块定义。Model 模块上端口的名称与引用模型中对应端口的名称相匹配。Model 模块的输出信号和消息是连接到引用模型中的 Outport 和 Out Bus Element 模块的信号和消息。请参阅模型引用接口和边界。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
| enumerated
| bus
| image
复数支持: 是
控制
Enable — 启用引用模型的控制信号
标量 | 向量 | 矩阵
使能端口显示在 Model 模块的顶部。端口标签是表示使能信号的图标。
连接到端口的控制信号确定何时执行引用模型。有关详细信息,请参阅Conditionally Execute Referenced Models。
依存关系
要使能此端口,请将 Enable 模块添加到引用模型的顶层。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
Trigger — 触发引用模型的控制信号
标量 | 向量 | 矩阵
触发端口显示在 Model 模块的顶部。端口标签是表示触发信号的图标。
连接到端口的控制信号确定何时执行引用模型。有关详细信息,请参阅Conditionally Execute Referenced Models。
依存关系
要启用此端口,请将 Trigger 模块添加到引用模型的顶层,并将其触发器类型设置为上升沿、下降沿或任一沿。
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| Boolean
| fixed point
Function Call — 函数调用事件的控制信号
标量
函数调用端口显示在 Model 模块的顶部。端口标签将引用模型的名称显示为函数。
连接到端口的函数调用控制信号确定何时执行引用模型。有关详细信息,请参阅Conditionally Execute Referenced Models。
依存关系
要启用此端口,请将 Trigger 模块添加到引用模型的顶层,并将其触发器类型设置为函数调用。
initialize — 模型初始化事件的控制信号
标量
初始化事件端口提供触发模型初始化事件的函数调用控制信号,该事件会初始化引用模型的状态。
引用模型可以包含一个对应于模型初始化事件的 Initialize Function 模块。有关详细信息,请参阅使用初始化、重新初始化、重置和终止函数。
依存关系
要启用此端口,请选择显示模型初始化端口。
reset — 模型重置事件的控制信号
标量
重置事件端口提供触发模型重置事件的函数调用控制信号,该事件会重置引用模型的状态。
对于每个模型重置事件,引用模型必须包含一个对应的 Reset Function 模块。有关详细信息,请参阅使用初始化、重新初始化、重置和终止函数。
要指定端口名称,请使用 Reset Function 模块中 Event Listener 模块的事件名称参数。
依存关系
要启用这种类型的端口,请选择显示模型重置端口。
reinit — 模型重新初始化事件的控制信号
标量
重新初始化事件端口提供触发模型重新初始化事件的函数调用控制信号,该事件会重新初始化引用模型的状态。
对于每个模型重新初始化事件,引用模型必须包含一个对应的 Reinitialize Function 模块。有关详细信息,请参阅使用初始化、重新初始化、重置和终止函数。
要指定端口名称,请使用 Reinitialize Function 模块中 Event Listener 模块的事件名称参数。
依存关系
要启用这种类型的端口,请选择 显示模型重新初始化端口。
terminate — 模型终止事件的控制信号
标量
终止事件端口提供触发模型终止事件的函数调用控制信号,该事件会读取并保存引用模型的状态。
引用模型可以包含一个对应于模型终止事件的 Terminate Function 模块。有关详细信息,请参阅使用初始化、重新初始化、重置和终止函数。
依存关系
要启用此端口,请选择显示模型终止端口。
D — 用于调度周期性事件的控制信号
标量
周期性事件端口提供指定何时执行模型的函数调用控制信号。有关示例,请参阅Test Rate-Based Model Simulation Using Function-Call Generators。
每个端口标签显示关于周期性事件的信息,例如对应的 Inport 模块的采样时间。例如,此图像中的 Model 模块显示周期性事件端口并引用一个具有以下两个离散速率的模型:0.01 和 0.1。
依存关系
要启用这种类型的端口,请将速率调度方式设置为端口。
参数
要以交互方式修改 Model 模块参数,请选择 Model 模块。然后,在 Simulink 工具条的模型模块选项卡上,点击模块参数。
常设
指定 Model 模块的基本信息。
模型名称 — 引用模型的文件名
''
(默认) | 字符向量
指定引用模型的文件名。文件名必须为模型的有效 MATLAB® 标识符,如Choose Valid Model File Names中所定义。文件扩展名是可选的。
要选择要引用的模型,请点击浏览。要查看指定的模型,请点击打开模型。
编程用法
您可以用不同格式查询引用模型的名称:
ModelFile
- 带文件扩展名的模型名称。如果不指定文件扩展名,则由 Simulink 在 MATLAB 路径中找到的第一个匹配项确定文件扩展名。ModelNameDialog
- 带或不带文件扩展名的模型名称,具体取决于您是否指定了文件扩展名。ModelName
- 不带文件扩展名的模型名称。如果为ModelName
指定带文件扩展名的模型名称,则 Simulink 通过设置ModelNameDialog
和ModelFile
来保留文件扩展名。
参数:ModelNameDialog |
类型:字符向量 |
值:'' | '<filename>' |
默认值:'' |
仿真模式 — 模型引用的仿真模式
普通 (默认) | 加速 | 软件在环(SIL) | 处理器在环(PIL)
指定 Model 模块的仿真模式。Model 模块的仿真模式可以不同于其引用模型和模型层次结构中的其他模型的仿真模式。
普通 - 以解释方式执行引用模型,就像引用模型是在父模型中直接实现的原子子系统一样。
加速 - 为引用模型创建一个 MEX 文件。然后,通过运行 S-Function 来执行引用模型。
软件在环(SIL) - 此选项需要 Embedded Coder® 许可证。根据代码接口参数设置生成生产代码。代码针对主机平台编译并在主机平台上执行。
处理器在环(PIL) - 此选项需要 Embedded Coder 许可证。根据代码接口参数设置生成生产代码。此代码针对目标平台编译并在目标平台上执行。对于主机与目标之间的数据交换,软件提供了目标连接 API 实现,支持在 PIL 仿真的每个时间步进行此类数据交换。
Model 模块的四个角指示 Model 模块的仿真模式。对于普通模式,四个角为空心三角形。对于加速模式,四个角为实心三角形。对于 SIL 和 PIL 模式,四个角为实心三角形,且模块图标上显示有 (SIL)
或 (PIL)
字样。
虽然您可以为模型指定任何仿真模式,但当您引用该模型时,Model 模块会指定引用模型实例的仿真模式。父模型的仿真模式可以覆盖 Model 模块的仿真模式。
有关详细信息,请参阅为模型层次结构选择仿真模式。
编程用法
参数:SimulationMode |
类型:字符向量 |
值:'Normal' | 'Accelerator' | 'Software-in-the-loop' | 'Processor-in-the-loop' |
默认值:'Normal' |
代码接口 — 从顶层模型或引用模型生成代码的选项
模型引用 (默认) | 顶层模型
指定是从顶层模型还是从引用模型为 SIL 和 PIL 仿真模式生成代码。要将生成的代码部署为使用引用模型的较大应用程序的一部分,请指定模型引用。要将生成的代码部署为独立应用程序,请指定顶层模型。
模型引用 - 代码是作为模型层次结构的一部分从引用模型生成的。代码生成使用
slbuild('
命令。model
', 'ModelReferenceCoderTarget')顶层模型 - 代码是使用独立的代码接口从顶层模型生成的。代码生成使用
slbuild('
命令。model
')
依存关系
要启用此参数,请将仿真模式设置为软件在环(SIL) 或处理器在环(PIL)。
编程用法
参数: CodeInterface |
类型:字符向量 |
值:'Model reference' | 'Top model' |
默认值:'Model reference' |
模型事件仿真
控制引用模型何时执行并更改状态。
显示模型初始化端口 — 显示初始化事件端口的选项
off (默认) | on
选中此参数可显示初始化事件端口。清除此参数可删除该端口。
依存关系
要启用此参数,请引用未配置为条件执行的模型。
编程用法
模块参数:ShowModelInitializePort |
类型:字符向量 |
值:'off' | 'on' |
默认值:'off' |
显示模型重新初始化端口 — 显示重新初始化事件端口的选项
off (默认) | on
选中此参数可显示重新初始化事件端口。清除此参数可删除这些端口。
依存关系
要启用此参数,请引用未配置为条件执行且包含 Reinitialize Function 模块的模型。
编程用法
模块参数:ShowModelReinitializePorts |
类型:字符向量 |
值:'off' | 'on' |
默认值:'off' |
显示模型重置端口 — 显示重置事件端口的选项
off (默认) | on
选中此参数可显示重置事件端口。清除此参数可删除这些端口。
依存关系
要启用此参数,请引用未配置为条件执行且包含 Reset Function 模块的模型。
编程用法
模块参数:ShowModelResetPorts |
类型:字符向量 |
值:'off' | 'on' |
默认值:'off' |
显示模型终止端口 — 显示终止事件端口的选项
off (默认) | on
选中此参数可显示终止事件端口。清除此参数可删除该端口。
依存关系
要启用此参数,请引用未配置为条件执行的模型。然后,选择显示模型初始化端口。
编程用法
模块参数:ShowModelTerminatePort |
类型:字符向量 |
值:'off' | 'on' |
默认值:'off' |
调度速率 — 调度周期性事件的选项
off (默认) | on
速率调度方式 — 创建分区或周期性事件端口的选项
端口 (默认) | 调度编辑器
创建端口或分区。
依存关系
要启用此参数,请进行如下设置:
父模型不能是导出函数模型。
父模型不能使用定步长求解器和单任务模式。
选择调度速率。如果父模型是基于速率的模型,而引用模型是导出函数模型,则会自动选择调度速率。
编程用法
模块参数:ScheduleRatesWith |
类型:字符向量 |
值:'Ports' | 'ScheduleEditor' |
默认值:'Ports' |
实例参数
为模型参数指定特定于实例的值。
实例参数 — 显示实例参数并指定引用模型的值
数字 | 工作区变量 | 数学表达式 | 结构体或结构体字段
显示实例参数并指定特定于实例的值。实例参数是已在引用模型中进行配置、用于对模型的每个实例使用不同值的模块参数。
要指定特定于实例的值,请使用表中的值列。要指定参数值可以被父模型覆盖,请选中参数复选框。有关在引用模型中配置实例参数以及在 Model 模块中指定特定于实例的值的详细信息,请参阅 参数化可重用引用模型的实例。
更改特定于实例的值时,可以使用非完全结构体,该结构体的字段仅对应于您希望更改其值的实例参数。不包含在此非完全结构体中的实例参数保持其值不变。在结构体中包含实例参数名称和值,指定为字符向量。
编程用法
模块参数:ParameterArgumentValues |
类型:结构体 |
值:结构体 |
默认值:不包含字段的结构体 |
模块参数:InstanceParameters |
类型:结构体数组 |
值:包含下列字段的结构体:Name 、Value 、Path 和 Argument 。 |
求解器
使用引用模型的配置参数和引用该模型的每个 Model 模块的模块参数的组合来配置局部求解器参数。
引用模型配置参数使用局部求解器 — 在引用模型中使用局部求解器的选项
链接到引用模型配置参数
此参数提供超链接,该超链接可打开模块所引用的模型的“配置参数”对话框。在“配置参数”对话框中,选中或清除引用模型的引用模型时使用局部求解器配置参数。当您选中引用模型时使用局部求解器时,引用模型使用局部求解器。
当您将引用模型配置为使用局部求解器时,局部求解器会在仿真期间计算引用模型的状态值。使用局部求解器可以提高仿真性能,因为它允许您:
与系统的其余部分相比,为动态特性较慢的组件指定较大的步长。
选择更适合引用模型的不同求解器。
有关详细信息,请参阅Use Local Solvers in Referenced Models。
求解器 — 选择局部求解器的选项
链接到引用模型配置参数
此参数提供超链接,该超链接可打开模块所引用的模型的“配置参数”对话框。在“配置参数”对话框中,为求解器参数选择一个值,以指定用作引用模型的局部求解器的求解器。
局部求解器必须为定步长求解器。
依存关系
要启用此参数,请在此模块引用的模型的模型配置参数中选择引用模型时使用局部求解器。
步长 — 为局部求解器指定步长的选项
链接到引用模型配置参数
此参数提供超链接,该超链接可打开模块所引用的模型的“配置参数”对话框。在“配置参数”对话框中,指定引用模型的固定步长(基础采样时间) 参数值以指定局部求解器的步长。
局部求解器步长必须为父求解器步长的整数倍。
依存关系
要启用此参数,请在此模块引用的模型的模型配置参数中选择引用模型时使用局部求解器。
输入信号处理 — 局部求解器输入的外插方法
自动 (默认) | 零阶保持
由于局部求解器的执行与父求解器的执行是分离的,因此局部求解器从模型引用外部进行外插,并将内插值提供给父求解器。有关详细信息,请参阅Use Local Solvers in Referenced Models。
使用此参数指定局部求解器如何从模型引用外部进行外插值。
自动 - 使用默认输入处理,包括数值补偿,可改进顶层求解器和局部求解器之间的数据交换。
零阶保持 - 使用父求解器计算的最后一个值。
指定自动输入处理通常会提高仿真结果的准确度。自动输入处理比零阶保持输入处理的计算量更大。
在以下任一情况下,考虑使用零阶保持输入处理:
当仿真结果可接受但零阶保持输入处理和性能令人担忧时
当引用模型没有输入端口时
当输入端口值不影响连续状态计算时
当导数的重要部分基于状态本身时,例如,来自模型中的反馈回路
需要提高在给定步长条件下的局部求解器稳定性
依存关系
要启用此参数,请在此模块引用的模型的模型配置参数中选择引用模型时使用局部求解器。
编程用法
模块参数:InputSignalHandling |
类型:字符串 | 字符向量 |
值:'Auto' | 'Zero-order hold' |
默认值:'Auto' |
输出信号处理 — 局部求解器输出的插值方法
使用求解器插值 (默认) | 零阶保持
由于局部求解器的执行与父求解器的执行是分离的,因此局部求解器从模型引用外部进行外插,并将内插值提供给父求解器。有关详细信息,请参阅Use Local Solvers in Referenced Models。
使用此参数指定局部求解器用于向父求解器提供值的插值方法。
使用求解器插值 - 使用局部求解器的插值来计算插值状态和输出信号值。
零阶保持 - 将局部求解器在当前时间之前计算的最后一个值用于顶层求解器。
通常,使用求解器插值进行输出处理可以提高准确性。零阶保持输出处理会降低计算复杂度,但也会降低准确性。
依存关系
要启用此参数,请在此模块引用的模型的模型配置参数中选择引用模型时使用局部求解器。
编程用法
模块参数:OutputSignalHandling |
类型:字符向量 |
值:'Use solver interpolant' | 'Zero-order Hold' |
默认值:'Use solver interpolant' |
模块特性
提示
要以编程方式确定 Model 模块是否引用受保护模型,请使用 get_param
函数查询 Model 模块的只读 ProtectedModel
参数。如果引用模型为受保护模型,函数将返回 'on'
。如果引用模型不是受保护模型,函数将返回 'off'
。
扩展功能
C/C++ 代码生成
使用 Simulink® Coder™ 生成 C 代码和 C++ 代码。
实际代码生成支持取决于模块实现。
HDL 代码生成
使用 HDL Coder™ 为 FPGA 和 ASIC 设计生成 Verilog 代码和 VHDL 代码。
HDL Coder™ 提供影响 HDL 实现和综合逻辑的额外配置选项。有关使用 Model 模块进行 HDL 代码生成以及最佳做法和限制的详细信息,请参阅 Model Referencing for HDL Code Generation (HDL Coder)。
另请参阅Generate Black Box Interface for Referenced Model (HDL Coder)和Generate Parameterized Code for Referenced Models (HDL Coder)。
架构 | 描述 |
---|---|
ModelReference(默认值) | 当您要从引用模型和任何嵌套模型生成代码时,请使用 ModelReference 实现。有关详细信息,请参阅 How To Generate Code for a Referenced Model (HDL Coder)。 |
BlackBox | 使用 BlackBox 实现来实例化 HDL 包装器,或实例化与原有或外部 HDL 代码的黑盒接口。如果您指定黑盒接口,HDL Coder 不会尝试为引用模型生成 HDL 代码。 有关详细信息,请参阅 Generate Black Box Interface for Referenced Model (HDL Coder)。 |
对于 BlackBox 架构,您可以自定义端口名称并设置外部组件接口的属性。请参阅Customize Black Box or HDL Cosimulation Interface (HDL Coder)。
BalanceDelays | 检测沿一条路径引入的新延迟,并在其他路径上插入匹配的延迟。默认值为 inherit。另请参阅BalanceDelays (HDL Coder)。 |
ConstrainedOutputPipeline | 通过移动设计中现有延迟的方式来放置在输出端的寄存器的数量。分布式流水线处理不会重新分发这些寄存器。默认值为 |
DistributedPipelining | 流水线寄存器分配或寄存器重定时。默认值为 inherit。另请参阅DistributedPipelining (HDL Coder)。 |
DSPStyle | 乘法器映射的综合属性。默认值为无。另请参阅DSPStyle (HDL Coder)。 |
InputPipeline | 要在生成的代码中插入的输入流水线阶段数。分布式流水线处理和受限输出流水线处理可以移动这些寄存器。默认值为 |
OutputPipeline | 要在生成的代码中插入的输出流水线阶段数。分布式流水线处理和受限输出流水线处理可以移动这些寄存器。默认值为 |
ReferenceModelPrefix | 要在生成代码中插入的引用模型的前缀。代码生成器将此前缀应用于子模型文件名和 HDL 标识符。默认前缀是 注意
|
SharingFactor | 要映射到单个共享资源的功能等效的资源的数量。默认值为 0。另请参阅Resource Sharing (HDL Coder)。 |
StreamingFactor | 并行数据路径或向量的数量,这些路径或向量通过时间多路复用的方式变换为串行标量数据路径。默认值为 0,表示实现完全并行的数据路径。另请参阅Streaming (HDL Coder)。 |
定点转换
使用 Fixed-Point Designer™ 设计和仿真定点系统。
实际数据类型支持取决于模块实现。
版本历史记录
在 R2006a 之前推出R2019a: 不再支持在 Model 模块中指定变体模型
从 R2019a 开始,不再支持在 Model 模块中指定变体模型。Model Variants 模块(一种 Model 模块,预配置为指定变体模型)也不再受支持。包含这些模块的模型如被加载,则会被转换为 Variant Subsystem,其中包含表示变体选择项的 Model 模块。
Variant Subsystem 模块提供以下优势:
您可以将 Model 模块和 Subsystem 模块作为变体选择项来混合使用。
您可以指定具有不同数量的输入和输出端口的变体。
Variant Subsystem 模块参数在更新图期间分析所有选择项并生成预处理器条件句的行为方式不同于 Model 模块参数生成预处理器条件句。Variant Subsystem 模块参数会使仿真和更新图编译所有变体,而不是仅编译活动变体。
如果您的脚本使用变体的 Model 模块参数,您必须更新它们以使用 Variant Subsystem 模块参数。
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)