Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

设置模型层次结构的配置参数

引用模型使用配置集的方式与模型独立执行时相同。默认情况下,层次结构中的每个模型都有自己的配置集。当您在模型层次结构的上下文中打开引用模型时,通过点击 Model Settings 按钮箭头,然后选择 Referenced Model 下的 Model Settings 来访问其配置参数。

由于每个模型都可以拥有自己的配置集,因此配置参数值在不同模型中可能会有所不同。此外,某些参数值本质上与模型引用不兼容。Simulink® 对不一致或不可用的配置参数的响应取决于参数:

  • 如果参数的不一致无关紧要,或者存在无风险的平凡解,Simulink 会忽略或解决该不一致而不发出警告。

  • 如果存在可能可接受的非平凡解,Simulink 会以静默方式解决冲突,通过警告解决冲突或生成错误。有关详细信息,请参阅在 Accelerator 模式下忽略的诊断

  • 如果不存在可接受的解,Simulink 会生成错误。更改部分或全部参数值以消除问题。

使用配置引用管理配置参数

要将一个外部存储的配置集指定给多个模型,可以使用配置引用。配置引用可帮助您消除配置参数不兼容。

可以将顶层模型的配置引用传播到单个引用模型或模型层次结构中的所有引用模型。有关示例,请参阅Share a Configuration Across Referenced Models

对所有引用模型仿真的配置要求

一些配置参数选项可能会导致模型层次结构中出现不兼容。Simulink 会尽可能自动解决违反这些要求的情况,但大多数情况下需要更改部分或所有模型中的参数。

对话框窗格选项要求
SolverStart time

顶层模型和所有引用模型的编译后的开始时间必须相同。

编译后的开始时间是指定的开始时间后的第一个仿真步。仿真步是模型中具有最快离散速率的增量,从 0 开始。

Stop timeSimulink 使用顶层模型的 Stop time 进行仿真,从而会覆盖引用模型中的任何不同 Stop time
Type顶层模型的 TypeSolver 应用于整个层次结构。请参阅求解器设置
Solver
Data Import/ExportInitial state对于顶层模型,可以选择此项;但对于引用模型,必须清除此项。

Math and Data Types

Application lifespan (days)

对于代码生成,父模型和引用模型的设置必须相同。

对于仿真,父模型和引用模型的此选项的设置可以不同。

Model ReferencingTotal number of instances allowed per top model在引用模型中不得为 “Zero”。一般建议指定为 “One” 而不是 “Multiple”,而且有时必须这样指定。请参阅模型实例数设置
Code Generation > OptimizationDefault parameter behavior如果父模型将此选项设置为 “Inlined”,则引用模型不能设置为 “Tunable”。

求解器设置

模型引用对固定步长和可变步长求解器均适用。模型层次结构中的所有模型都使用同一求解器,它始终是顶层模型指定的求解器。如果顶层模型指定的求解器类型与任何引用模型指定的求解器类型不兼容,则会发生错误。

顶层模型求解器类型引用模型求解器类型兼容性
Fixed-stepFixed-step允许
Variable-stepVariable-step允许
Variable-stepFixed-step允许,引用模型是多速率模型且同时指定了离散采样时间和连续采样时间时除外
Fixed-stepVariable-step错误

如果顶层模型求解器与任一引用模型求解器之间存在不兼容性,则必须更改一个模型或同时更改这两个模型以使用兼容的求解器。有关求解器的信息,请参阅比较求解器求解器选择标准

模型实例数设置

引用模型必须指定它可以被引用,以及它是最多可以引用一次还是可以有多个实例。Total number of instances allowed per top model 参数提供此设定。此参数的可能值有:

  • Zero” - 模型不能引用此模型。如果在另一个模型中引用此模型,则会发生错误。

  • One” - 模型层次结构最多可引用一次此模型。如果存在多个模型实例,则会发生错误。此值有时是建议值,有时是必需值。

  • Multiple” - 如果模型层次结构不包含禁止多个引用的构造,则可以多次引用此模型。如果模型不能被多次引用,即使只存在一次引用,也会发生错误。

对于仅引用一次的模型,将 Total number of instances allowed per top model 设置为 “Multiple” 会略微降低执行效率。但是,此设置不会影响仿真或执行 Simulink Coder™ 生成的代码所得到的数据值。仅存在一个模型实例时指定 “Multiple” 可避免在按如下方式重用模型时更改或重新编译模型:

  • 在同一层次结构中重用模型

  • 在不同层次结构中多次重用模型

某些模型属性和构造要求将 Total number of instances allowed per top model 设置为 “One”。有关详细信息,请参阅模型重用

在 Accelerator 模式下忽略的诊断

对于在 Accelerator 模式下引用的模型,如果将这些配置参数的值设置为 “None” 以外的值,则 Simulink 会忽略这些值:

  • Array bounds exceeded (ArrayBoundsChecking)

  • Inf or NaN block output (SignalInfNanChecking)

  • Simulation range checking (SignalRangeChecking)

  • Division by singular matrix (CheckMatrixSingularityMsg)

  • Wrap on overflow (IntegerOverflowMsg)

此外,对于在 Accelerator 模式下引用的模型,如果您为以下 Configuration Parameters > Diagnostics > Data Validity > Data Store Memory Block 参数设置的值不是 “Disable all”,Simulink 将忽略这些参数。有关详细信息,请参阅数据存储诊断

  • Detect read before write (ReadBeforeWriteMsg)

  • Detect write after read (WriteAfterReadMsg)

  • Detect write after write (WriteAfterWriteMsg)

在 Accelerator 模式下的模型引用仿真期间,Simulink 会临时将若干 Configuration Parameters > Diagnostics > Data Validity 参数设置为 “None”(如果它们设置为 “Warning” 或 “Error”)。您可以使用模型顾问来检查发生更改的参数。有关详细信息,请参阅在 Accelerator 模式下忽略的诊断

可以使用模型顾问来确定 Accelerator 模式下引用的特定模型,这些模型的上述配置参数将被 Simulink 忽略。

  1. Modeling 选项卡上,点击 Model Advisor

  2. 选择顶层模型,然后点击 OK

  3. 选择 By Task > Model Referencing > Check diagnostic settings ignored during accelerated model reference simulation

  4. 点击 Run This Check 按钮。

要查看标识的诊断(设置为产生警告或错误)的运行结果,请在 Normal 模式下仿真模型。检查诊断警告,然后在 Accelerator 模式下进行仿真。

注意

Configuration Parameters 对话框的 Code Generation 窗格上的配置参数不会影响 Normal 模式或 Accelerator 模式下的仿真。Code Generation 参数仅影响 Simulink Coder 本身的代码生成。Accelerator 模式仿真要求代码生成来创建仿真目标。Simulink 在生成目标时使用所有 Code Generation 参数的默认值,并在代码生成完成后还原原始参数值。

相关主题