激活变体在不同阶段的模拟和代码生成工作流
使用变体激活时间,仿真软件金宝app®集在变体块主动选择和变异参数在不同阶段的模拟和代码生成工作流。
主动选择设置:
在编译阶段的模型,或simulation-loop阶段仿真的工作流。
在模型编译阶段,代码编译阶段,或者启动阶段的代码生成工作流模型。
设置活动的选择,模型评估在工作区中您指定的变量控制浏金宝app览器,在命令行中,或者回调,等InitFcn
,PreLoadFcn
,PostLoadFcn
。在回调函数的更多信息,见模型的回调。
设置活动选择在中间阶段提高了仿真的速度和代码生成工作流,可以重用工件从之前的运行。它还使您能够分析变异选择不兼容,比如数据类型和尺寸不匹配,前仿真和代码生成。
例如,生成的代码代码编译
激活时间包含所有的选择。代码编译前,您可以指定变量的值控制变量。基于不同控制变量的值,仿真软件集主动选择和有条件地编译代码只有在积极的选择。金宝app您可以重用相同的代码每次你改变变异控制变量的值。条件编译的代码为给定的主动选择。
同样,你的代码生成启动
激活时间还包含所有的选项。运行的可执行代码之前,您可以指定活动选择通过改变变量的值控制变量。您可以重用相同的可执行每次你改变变异控制变量的值。可执行条件运行给定的主动选择。此外,启动
激活时间允许您跳过重新编译,直接开始模拟模型。重新编译所需的模型不准确的结果。
请注意
只能激活一个选择任何阶段的模拟和代码生成工作流。
阶段设置在变体块主动选择和变异参数
这些表描述的阶段模型集变体块的主动选择和变异参数在仿真和代码生成工作流。金宝app
阶段的模拟工作流程 | 描述 | 变体激活时间 |
---|---|---|
模型编译 | 这是第一阶段的仿真流程。在这个阶段中,块参数表达式和回调函数模型的评估,信号属性,样品时间属性,并阻止执行顺序决定,块优化来提高仿真速度。 | |
simulation-loop | 金宝app仿真软件先后计算系统的状态和输出间隔从仿真开始时间到结束时间。 | 启动 |
在仿真工作流程阶段的更多信息,见在动态系统仿真阶段。
在变异类型的变体激活时间块和变异参数
金宝app仿真软件集变体块的主动选择和变异参数在不同阶段的模拟和代码生成工作流使用这些变体激活时间:
更新图
在仿真中,仿真软件集和保留模型的主动选金宝app择开始编译阶段前的信号属性传播到街区。不活跃的选择从模拟工作流中删除。信号属性然后传播积极的选择,所以只有主动选择参与后续阶段的模拟。分析了信号属性不是模型的一致性。
代码生成工作流仿真工作流程一样。因为只有积极的选择是保留和不活跃的模型中选择删除编译阶段,codegen阶段生成的代码只包含积极的选择。
如何使用信息更新图
激活时间变体块和变异参数,看看变体激活时间和ActivationTime。
更新图分析所有的选择
在仿真中,仿真软件传播信号属性所有变体金宝app的选择。的信号属性的选择进行了分析,以检查是否每一块可以接受的信号连接到它的输入。金宝app仿真软件然后集和保留活动选择在模型编译阶段。不活跃的选择从仿真工作流程,所以只有积极选择参与后续阶段的模拟。
代码生成工作流仿真工作流程一样。因为只有积极的选择是保留和不活跃的模型中选择删除编译阶段,codegen阶段生成的代码只包含积极的选择。
如何使用信息更新图分析所有的选择
激活时间变体块和变异参数,看看变体激活时间和ActivationTime。
代码编译
仿真工作流程是一样的更新图分析所有的选择
。
在代码生成,仿真软件传播信号属性所有变体的选择。金宝app信号的属性在所有的选择进行了分析,以检查是否每一块可以接受的信号连接到它的输入。所有的选项参与codegen阶段的工作流程。因此,生成的代码包含了所有的选项。在代码中,C预处理器的选择是封闭的条件#如果
和其他#
。
金宝app仿真软件设置主动选择只有当你编译代码来生成一个可执行的。换句话说,当你编译代码,编译器接受积极的选择作为输入。编译器编译预处理条件的主动选择和生成一个可执行的主动选择。这个选项不需要您重新生成代码下次你指定一个不同的主动选择。生成的代码只有一次,你可以指定一个不同的主动选择代码编译和构建可执行之前,主动选择。
请注意
在代码编译
:
您必须安装金宝app仿真软件编码器™来生成代码只活跃的选择模型。
您必须安装嵌入式编码器®为活跃的和不活跃的选择生成代码模型。
如何使用信息代码编译
激活时间变体块和变异参数,看看变体激活时间和编译代码有条件地对所有变量参数的值相同和不同的维度。
启动
在仿真中,仿真软件传播信号属性所有变体金宝app的选择。信号的属性在所有的选择进行了分析,以检查是否每一块可以接受的信号连接到它的输入。金宝app仿真软件然后集和保持积极的选择和删除活动选择simulation-loop阶段。只有主动选择参与simulation-loop阶段。这个选项不需要你下次编译模型改变活动的选择。你只编译一次模型,您可以指定一个不同的积极选择simulation-loop前阶段和模拟模型。金宝app仿真软件先后计算模型的状态和输出的积极选择。
在代码生成,仿真软件传播信号属性的所有变量的选择金宝app。信号的属性在所有的选择进行了分析,以检查是否每一块可以接受的信号连接到它的输入。所有的选择参与codegen阶段工作流和因此,生成的代码包含了所有的选项。在代码中,常规的选择是封闭的如果
条件。
金宝app仿真软件设置主动选择只有当你运行是建立从生成的可执行代码。换句话说,当您运行可执行,中央处理单元接受积极的选择作为输入。处理器执行如果
条件主动选择和生成的输出只有主动选择。使用此选项的优点是,你不需要重新生成可执行下次你指定一个不同的主动选择。你只生成可执行一次。您可以指定一个不同的活动选择之前运行的可执行文件,然后生成输出活动的选择。
请注意
在启动
,您必须安装金宝app仿真软件编码器或者嵌入式编码器来生成代码的活跃的和不活跃的选择模型。
与启动
激活时间,您可以:
执行一个快速启动仿真模型和变化主动选择simulation-loop前阶段,而不需要每次都编译模型。这提高了金宝app仿真软件测试™工作流与快速重启。有关更多信息,请参见运行迭代模拟不重新编译模型变体使用快速重启系统,模拟启动激活使用parsim变体子系统,验证和验证变体模型启动激活时间。
执行一个加速器或快速加速器模拟模型。你可以用不同的变体配置模拟模型逐步通过改变活性变异而不需要每次重新生成代码时没有结构的变化模型。有关更多信息,请参见模拟块变体在加速器和快速加速器模式启动激活时间和运行可执行不同的变异参数值而无需重新编译代码。
搜集并汇总报道结果从多个变种的模拟子系统,变异来源,和变体沉块。激活时间设置
启动
覆盖率报告显示所有变体的选择,无论他们在模拟激活。如果一个变种不活跃在模拟、覆盖率分析报告0%的覆盖率,变体的选择。有关更多信息,请参见块模型覆盖变体(金宝app仿真软件覆盖)。从仿真软件模拟并创建实时应用程序模型与变体Speedgoat块和运行它们金宝app®目标计算机硬件连接到你的物理系统。要创建实时模型,必须改变的变体
原子
并设置不同的参数金宝appSimulink.Parameter
。有关更多信息,请参见使用变量和模型实时创建实时应用程序金宝app之外创建独立的可执行文件与不同的变体配置和模拟仿真软件通过改变活性变异通过一个独立金宝app的可执行可执行的输入。看到的更多信息,使用仿真软件编译器创建独立的可执行文件与变异金宝app。
生成HDL代码,其中包含两个活跃的和不活跃的选择不同的子系统块。HDL代码生成,变异控制变量是一个可调端口。你可以设置活动选择通过提供不同控制变量的值在模型启动。有关更多信息,请参见变体子系统:使用变体HDL代码生成子系统(高密度脂蛋白编码器)。
导出和导入模型与内联块,变体和变体子系统独立功能模型单元(FMU)。的变体激活时间必须设置为变体块
启动
。您还可以导入现有FMU利用FMU块。有关更多信息,请参见导出和导入函数模型单元(FMU)与变体模型子系统模块。
对信息的局限性启动
激活时间,看到已知的限制启动变体激活的时间。
继承Simulink.Va金宝appriantControl
变体块继承了激活时间变异控制变量的类型金宝appSimulink.VariantControl
。继承的激活时间变异控制变量帮助你开关变量前后一致地元素,如块和参数。如果一个变体块至少有一个变量控制变量的类型金宝appSimulink.VariantControl
,然后设置的激活时间块继承Simulink.Va金宝appriantControl
建议,以便阻止继承激活时间变异控制变量。
请注意
如果一个变体块有多个变体控制变量的类型金宝appSimulink.VariantControl
,那么所有这些变量必须具有相同的激活时间。
如何使用信息继承Simulink.Va金宝appriantControl
激活时间变体块,明白了变体激活时间。例如,看到的金宝appSimulink.VariantControlVariables for Coherent Switching of Choices in Variant Blocks。
说明不同的变体激活时间
这个图显示的阶段模型集的主动选择激活乘以不同的变体。金宝app
块变体激活时间变体
本节解释如何指定变量的激活时间,所支持的版本控制模式,和变异条件下传播块不同活化时间的变体。金宝app
块使用变体激活时间变体
这个例子说明了如何使用变量指定活动选择激活时间变体。
考虑这个模型。不同的子系统VSS1
有两个潜在的变体,线性
和非线性
。与相关的变异条件表达式线性
是V = = 1
。与相关的变异条件表达式非线性
是V = = 2
。的对话框VSS1
,变体激活时间参数被指定为代码编译
。
当你从这个模型生成代码,生成的代码包含了所有变量的选择VSS1
。在代码中,C预处理器的选择是封闭的条件语句#如果
和# elif
。在你编译代码生成一个可执行文件,您可以指定一个值V
作为一个编译器的输入。在编译的代码,编译器接受的价值V
评估每个预处理条件语句。基于评估的条件真正的
,编译器设置主动选择,然后生成可执行的积极选择。例如,如果您为编译器提供的输入1
、可执行文件只包含线性
变体的选择。
生成的可执行文件非线性
变体的选择,改变编译器的输入值2
和重新编译生成的代码。
金宝app支持不同活化时间变体
本节列出了不同活化时间支持的每种类型的变体:金宝app
阻塞和内联变体分层的变体
基于事件的变体块
金宝app仿真软件的功能——阻止默认继承变体激活时间对应的函数调用者。您可以覆盖继承的激活时间
代码编译
或更新图
通过选择或清除生成预处理条件参数块参数对话框,分别。初始化函数,重置功能,终止函数——变体激活时间是默认设置
更新图
。你可以改变它代码编译
通过选择生成预处理条件参数块参数框。
此表列出了不同活化时间块在不同控制模式下支持的变体。金宝app
变体激活时间 | |||||
---|---|---|---|---|---|
变体块 | 变量控制方式 | 更新图 |
更新图分析所有的选择 |
代码编译 |
启动 |
不同的子系统,变体模型,变异来源,变体水槽 | 表达式 |
✓ | ✓ | ✓ | ✓ |
标签 |
✓ | x | x | x | |
sim codegen切换 |
✓ | ✓ | x | x | |
不同的连接器(Simscape),手动变异来源,手动变体水槽 | 表达式 |
✓ | x | x | x |
标签 |
不支持金宝app | ||||
sim codegen切换 |
不支持金宝app | ||||
金宝app仿真软件的功能,初始化函数,重置功能,终止函数 | 表达式 |
✓ | ✓ | ✓ | x |
标签 |
不支持金宝app | ||||
sim codegen切换 |
不支持金宝app |
请注意
操作符,您可以使用它们来形成一个变异条件表达式在变体块激活时间取决于其变体。看到类型的运营商不同活化时间的变体块。
变异条件块传播不同活化时间的变体
变异条件允许您指定传播条件表达式外部变异块连接块来提高性能。传播条件变体外块时,不选择不要运行仿真过程中,可以提高性能,尤其是在大型模型。传播的变异条件变体外块激活时间的不同而变化。信息,请参阅传播变异条件变体以外的子系统。
通过级联传播条件块在复合条件下结果。金宝app仿真软件不支持从变体块复合条件金宝app启动
和代码编译
变体激活时间。有关更多信息,请参见注意事项和限制启动变体激活时间了。
变体激活时间变异参数
本节解释如何指定变量的激活时间,和变异的支持版本控制模式参数。金宝app
使用变体激活时间变异参数
这个例子说明了如何使用变量指定活动选择激活时间变量参数。
考虑这个模型。的获得参数的获得块参数的值设置为一个变体K
。的变量K
有两个值:3.5
和8.5
。的变体激活时间K
被指定为代码编译
使用金宝appSimulink.VariantControl
。这种设置意味着您可以指定代码编译开始前主动选择。
V = 金宝appSimulink.VariantControl (“价值”,1“ActivationTime”,代码编译的)K = S金宝appimulink.VariantVariable (“选择”,{“V = = 1”,3.5,“V = = 2”,8.5})
当你从这个模型生成代码,生成的代码包含两个活跃的和不活跃的选择K
。在代码中,C预处理器的选择是封闭的条件语句#如果
和# elif
。当你编译这个代码来生成一个可执行文件,编译器接受的价值V
作为输入来评估每个预处理条件语句。基于评估的条件真正的
,编译器设置主动选择,然后生成可执行的积极选择。例如,如果您为编译器提供的输入1
,构建可执行K
设置为3.5
。
生成一个可执行的K
设置为8.5
,改变编译器的输入值2
并再次编译生成的代码。你不需要重新生成代码来生成一个可执行不同的变量值。
金宝app支持不同活化时间变异参数
此表列出了变体激活时间用于变量参数。
请注意
运营商,您可以使用它们来形成一个变异条件表达变异参数中列出参数类型的运营商变体。
变量控制方式 | 变体激活时间 | |||
---|---|---|---|---|
更新图 |
更新图分析所有的选择 |
代码编译 |
启动 |
|
表达式 |
✓ | ✓ | ✓ | ✓ |
标签 |
不支持金宝app | |||
sim codegen切换 |
不支持金宝app |
存储类激活时间为不同的变体
当你指定一个条件表达式来确定主动选择,每个变量表达式的控制变量都有一个与之关联的存储类。使用存储类控制变异的外观和位置控制变量在生成的代码中。存储类也防止存储的优化,如消除变异控制变量在生成的代码中。有关更多信息,请参见选择存储类数据表示控制生成的代码(金宝app仿真软件编码器)。
变异条件表达式中使用的变量必须满足这些标准来生成代码金宝app仿真软件编码器或嵌入式编码器。
变异的变异控制变量条件表达式必须有这些存储类。
此表列出了内置的存储类支持使用不同活化时间来生成代码金宝app金宝app仿真软件编码器和嵌入式编码。
内置的存储类 变体激活时间 代码编译
启动
ExportedGlobal(金宝app仿真软件编码器) x ✓ 模型的默认(金宝app仿真软件编码器) x ✓ ImportedExtern, ImportedExternPointer(金宝app仿真软件编码器) x ✓ 汽车(金宝app仿真软件编码器) x x 此表列出了自定义存储类支持不同活化时间使用嵌入式编码器生成代码。金宝app
定制的存储类 变体激活时间 代码编译
启动
GetSet(嵌入式编码) x ✓ 定义、ImportedDefine(嵌入式编码) ✓ x CompilerFlag(嵌入式编码) ✓ x 常量和ConstVolatile。看到的,常量、挥发性和ConstVolatile(嵌入式编码) x x 设置(嵌入式编码) x ✓ 结构体(嵌入式编码) x ✓ ExportToFile(嵌入式编码) x ✓ ImportFromFile(嵌入式编码) x ✓ 不稳定。看到的,常量、挥发性和ConstVolatile(嵌入式编码) x ✓
如果激活时间的控制变量被设置为一个变体
启动
,然后指定其存储类的这些不支持:金宝app存储类等
定义
生成的宏代码。存储类等
常量
在代码中生成常数合格变量。
利用标量MATLAB®变量变异控制变量变异块没有任何存储类的代码生成、选择
可调
随着默认参数的行为从模型设置下代码生成>优化。这个标准并不适用于AUTOSAR构建变体。
相关的话题
- 选项代表变异参数生成的代码(嵌入式编码)
- 模拟模型与代码编译或启动激活时间保护