主要内容

在模拟和代码生成工作流的不同阶段激活变量

使用可变激活时间,Simulink金宝app®在模拟和代码生成工作流的不同阶段设置不同块和不同参数中的活动选择。

主动选择设置:

  • 在模型编译阶段,或仿真工作流的仿真循环阶段。

  • 在模型编译阶段,代码编译阶段,或者代码生成工作流的模型启动阶段。

看到在变量块和变量参数中设置活动选项的阶段

为了设置活动选项,Simulink计算您在工作区浏览金宝app器、命令行或回调中指定的变体控件,例如InitFcnPreLoadFcn,PostLoadFcn.有关回调的详细信息,请参见模型的回调

在中间阶段设置活动选择,使您能够重用前一次运行的工件,从而提高模拟和代码生成工作流的速度。它还使您能够在模拟和代码生成之前分析不兼容的变体选择,例如数据类型和维度不匹配。

例如,使用生成的代码代码编译激活时间包含所有选项。在代码编译之前,您可以指定变量控制变量的值。Simulink根据变量控制变量的值设置主动选择,代码只针对主动选择进行有条件编译。金宝app每次更改变量控制变量的值时,都可以重用相同的代码。代码有条件地编译给定的主动选择。

类似地,使用生成的代码启动激活时间也包含所有选项。在运行代码的可执行文件之前,您可以通过更改变量控制变量的值来指定活动选项。每次更改变量控制变量的值时,都可以重用相同的可执行文件。可执行文件为给定的主动选择有条件地运行。此外,启动激活时间使您可以跳过重新编译,直接开始模拟模型。为了得到准确的结果,不需要重新编译模型。

请注意

在模拟和代码生成工作流的任何给定阶段,只有一种选择可以被激活。

在模拟和代码生成的不同阶段,对每个激活时间的变体控件进行评估

在变量块和变量参数中设置活动选项的阶段

这些表描述了在仿真和代码生成工作流中,Simulink设置变量块和变量参数的主动选择金宝app的阶段。

仿真工作流程阶段 描述 变体激活时间
模型编译 这是模拟工作流程的第一阶段。在该阶段,对模型的块参数表达式和回调函数进行求值,确定信号属性、采样时间属性和块执行顺序,并对块进行优化,提高仿真速度。
simulation-loop Simu金宝applink从仿真开始时间到仿真结束时间,以一定的时间间隔依次计算系统的状态和输出。 启动

有关模拟工作流程中各阶段的详细信息,请参见动态系统仿真阶段“,

代码生成工作流的各个阶段 描述 变体激活时间
模型编译 这是模拟工作流程的第一阶段。在该阶段,对模型的块参数表达式和回调函数进行求值,确定信号属性、采样时间属性和块执行顺序,并对块进行优化,提高仿真速度。
代码编译 C代码被翻译成机器代码。 代码编译
模式启动 中央处理单元执行模型的机器代码指令。 启动

变量块和变量参数中变量激活时间的类型

金宝appSimulink使用这些变量激活时间在模拟和代码生成工作流的不同阶段设置变量块和变量参数的主动选择:

更新图

在仿真过程中,Simulink在信号属金宝app性传播到块之前,在模型编译阶段的开始设置并保留主动选择。不活跃的选择从模拟工作流程中删除。信号属性然后只传播到主动选择,因此只有主动选择参与后续的模拟阶段。信号属性在整个模型中不进行一致性分析。

代码生成工作流程与仿真工作流程相同。由于在模型编译阶段只保留活动的选择,而删除非活动的选择,因此在代码生成阶段生成的代码只包含活动的选择。

有关如何使用更新图不同块和不同参数中的激活时间,请参见变体激活时间而且ActivationTime

更新图表分析所有选项

在仿真过程中,Simulink将信号属金宝app性传播给所有的变量选择。分析选项中的信号属性,以检查每个块是否可以接受连接到其输入的信号。金宝app然后,Simulink在模型编译阶段的后期设置并保留主动选择。不活跃的选择从模拟工作流中删除,因此只有活跃的选择参与模拟的后续阶段。

代码生成工作流程与仿真工作流程相同。由于在模型编译阶段只保留活动的选择,而删除非活动的选择,因此在代码生成阶段生成的代码只包含活动的选择。

有关如何使用更新图表分析所有选项不同块和不同参数中的激活时间,请参见变体激活时间而且ActivationTime

代码编译

仿真流程与更新图表分析所有选项

在代码生成过程中,Simulink将信号属性传播金宝app到所有变量选择。分析所有选项中的信号属性,以检查每个块是否可以接受连接到其输入的信号。所有的选择都参与了工作流的代码生成阶段。因此,生成的代码包含了所有的选项。在代码中,选项包含在C预处理器条件中#如果而且其他#

金宝appSimulink仅在编译代码以从中生成可执行文件时设置活动选项。换句话说,当编译代码时,编译器接受活动选择作为输入。编译器编译活动选项的预处理器条件,并仅为活动选项生成可执行文件。此选项不要求您在下次指定不同的活动选项时重新生成代码。只需生成一次代码,然后可以在代码编译之前指定不同的活动选项,并为该活动选项构建可执行文件。

请注意

代码编译

  • 您必须安装金宝app仿真软件编码器™仅为模型中的活动选择生成代码。

  • 您必须安装嵌入式编码器®为模型中的主动和非主动选择生成代码。

有关如何使用代码编译不同块和不同参数中的激活时间,请参见变体激活时间而且对相同维数和不同维数的变量参数的所有值有条件地编译代码

启动

在仿真过程中,Simulink将信号属金宝app性传播给所有的变量选择。分析所有选项中的信号属性,以检查每个块是否可以接受连接到其输入的信号。金宝app然后,Simulink在模拟循环阶段设置并保留主动选择,并删除非主动选择。只有主动选择才参与模拟循环阶段。该选项不要求您在下次更改活动选项时编译模型。您只需编译模型一次,然后可以在模拟循环阶段之前指定不同的活动选择并模拟模型。金宝appSimulink依次计算该主动选择的模型的状态和输出。

在代码生成过程中,Simulink将信号属性传播金宝app到所有的变量选择。分析所有选项中的信号属性,以检查每个块是否可以接受连接到其输入的信号。所有的选择都参与了工作流的代码生成阶段,因此,生成的代码包含了所有的选择。在代码中,选项包含在regular中如果条件。

金宝appSimulink仅在运行由生成的代码构建的可执行文件时设置活动选项。换句话说,当您运行可执行文件时,中央处理单元接受活动选择作为输入。处理器执行如果条件的主动选择,并仅为主动选择生成输出。使用此选项的优点是,下次指定不同的活动选项时,不需要重新生成可执行文件。您只需生成一次可执行文件。然后,您可以在运行可执行文件之前指定不同的活动选择,然后为该活动选择生成输出。

请注意

启动,则必须安装金宝app仿真软件编码器或嵌入式编码器为模型中的活动和非活动选择生成代码。

启动激活时间,您可以:

的限制信息启动激活时间,参见启动变量激活时间的已知限制

继承自Simulink。金宝appVariantControl

变体块从其类型的变体控制变量继承激活时间金宝app仿真软件。VariantControl.从变量控制变量继承激活时间可以帮助您一致地切换变量元素,例如块和参数。如果一个变量块有多个类型的变量控制变量金宝app仿真软件。VariantControl,则所有这些变量的激活时间必须相同。

有关如何使用继承自Simulink。金宝appVariantControl不同块中的激活时间,请参见变体激活时间.有关示例,请参见金宝app仿真软件。VariantControl Variables for Coherent Switching of Choices in Variant Blocks

不同变体激活时间的说明

该图显示了Simulink为不同的变量激活时间设置主动选择的阶段。金宝app

在每个激活时间的模拟和代码生成的不同阶段,在变量块和变量参数中设置激活和非激活选择的详细视图

变体块的变体激活时间

本节解释如何指定变量激活时间,支持的变量控制模式,以及变量块中不同激活时间的变量条件传播。金宝app

在不同的方块中使用不同的激活时间

这个例子解释了如何在不同的块中使用不同的激活时间来指定主动选择。

考虑这个模型。变型子系统VSS1有两种可能的变体,线性而且非线性.对象关联的变量条件表达式线性V == 1.对象关联的变量条件表达式非线性V == 2.的对话框VSS1,变体激活时间参数被指定为代码编译

当您从这个模型生成代码时,生成的代码包含的所有变量选择VSS1.在代码中,选项包含在C预处理器条件语句中#如果而且# elif.在编译代码以生成可执行文件之前,可以指定值V作为编译器的输入。在编译代码时,编译器接受值V计算每个预处理器条件语句。基于计算为的条件真正的,编译器设置活动选项,然后仅为活动选项生成可执行文件。例如,如果将输入提供给编译器为1时,可执行文件只包含线性变体的选择。

为生成可执行文件非线性变量选择,将输入值更改为编译器2并重新编译生成的代码。

如何在变量块中设置变量激活时间的示例

金宝app变体块中支持的变体激活时间

本节列出了每种类型的变体块支持的变体激活时间:金宝app

该表列出了不同控制方式下,不同块支持的不同激活时间。金宝app

变体激活时间
变体块 变型控制方式 更新图 更新图表分析所有选项 代码编译 启动
不同的子系统变体模型变异来源变体水槽 表达式
标签 x x x
Sim码原交换 x x
不同的连接器(Simscape)手动变量来源手动变型水槽 表达式 x x x
标签 不支持金宝app
Sim码原交换 不支持金宝app
金宝app仿真软件的功能初始化函数重置功能,终止函数 表达式 x
标签 不支持金宝app
Sim码原交换 不支持金宝app

请注意

可用于在不同块中形成不同条件表达式的操作符取决于其不同的激活时间。看到不同激活时间的不同块中的操作符类型

不同块中不同激活时间的不同条件传播

变量条件传播允许您将变量块之外的条件表达式分配给连接块,以提高性能。当您在Variant块之外传播条件时,不活跃的选择不会在模拟期间运行,这可以提高性能,特别是在大型模型中。不同的激活时间,不同条件在不同块外的传播也不同。有关信息,请参见将不同的条件传播到不同的子系统之外

通过级联块传播条件会导致复合条件。金宝appSimulink不支持来自金宝app不同块的复合条件启动而且代码编译不同的激活时间。有关更多信息,请参见启动变量激活时间的考虑和限制

变量参数中的变量激活时间

介绍如何指定变量激活时间,以及变量参数中支持的变量控制方式。金宝app

在变量参数中使用变量激活时间

这个例子解释了如何在不同的参数中使用不同的激活时间来指定主动选择。

考虑这个模型。的获得参数。获得Block是一个变量参数,其值设置为K.的变量K有两个值:3.5而且8.5.的变体激活时间K指定为代码编译使用金宝app仿真软件。VariantControl.此设置意味着您可以在开始代码编译之前指定活动选项。

如何在变量参数中设置变量激活时间的示例

V = 金宝appSimulink。VariantControl(“价值”, 1“ActivationTime”代码编译的) K = 金宝appSimulink。VariantVariable(“选择”, {“V = = 1”, 3.5,“V = = 2”, 8.5})

当您从这个模型生成代码时,生成的代码包含的活动和非活动选项K.在代码中,选项包含在C预处理器条件语句中#如果而且# elif.编译此代码以生成可执行文件时,编译器接受值V作为输入来计算每个预处理器条件语句。基于计算为的条件真正的,编译器设置活动选项,然后仅为活动选项生成可执行文件。例如,如果将输入提供给编译器为1,可执行文件是为之构建的K设置为3.5

生成可执行文件K设置为8.5,将输入值改为compiler to2并再次编译生成的代码。您不需要重新生成代码来为不同的变量值生成可执行文件。

金宝app在变量参数中支持变量激活时间

该表列出了变量参数可用的变量激活时间。

请注意

中列出了可用于在变量参数中形成变量条件表达式的操作符变量形参中的操作符类型

变型控制方式 变体激活时间
更新图 更新图表分析所有选项 代码编译 启动
表达式
标签 不支持金宝app
Sim码原交换 不支持金宝app

不同变体激活时间的存储类

当指定条件表达式以确定活动选择时,表达式的每个变量控制变量都有一个与之关联的存储类。使用存储类来控制生成代码中变量控制变量的外观和位置。存储类还防止优化,例如在生成的代码中消除变量控制变量的存储。有关更多信息,请参见选择在生成的代码中控制数据表示的存储类(金宝app仿真软件编码器)

变体条件表达式中使用的变量必须满足这些条件才能生成代码金宝app仿真软件编码器或嵌入式编码器。

  • 变量条件表达式中的变量控制变量必须具有这些存储类。

  • 如果将变量控制变量的激活时间设置为启动,则不支持将其存储类指定为其中任何一个:金宝app

    • 存储类,例如定义在代码中生成宏。

    • 存储类,例如常量这会在代码中生成常量限定变量。

  • 使用标量MATLAB®变量作为变量控制变量在变量块中,没有任何存储类用于代码生成,选择可调随着默认参数行为模型设置代码生成>优化.此标准不适用于AUTOSAR后构建变体。

相关的话题