主要内容

从嵌套的变体子系统与代码生成代码编译并启动激活

这个例子演示了如何代码编译启动变体激活时间可以一起使用在两个嵌套的变体子系统。

模型

打开模型slexNestedVSSWithCCAndST.slx。模型包含一个变种子系统发动机控制器有两个选择柴油发动机汽油发动机与条件ENGINE_TYPE = = 1ENGINE_TYPE = = 2分别。的变体激活时间参数的发动机控制器块设置为代码编译,两个变量柴油发动机汽油发动机启动随着变体激活时间参数。每个发动机型号有两种选择Effficient模式正常模式。的汽油发动机有条件PMODE = = 1PMODE = = 2,柴油发动机有条件DMODE = = 1DMODE = = 2。引擎的类型可以选择在构建生成的代码和一个控制器的模式可以选择开始前执行的代码。

两变种子系统传播条件子系统之外的变体允许控制零活跃的变体关闭。当这些旗帜被打开,这个模型将错误在编译的条件代码编译启动变体激活时间将混合尺寸和外港块。有关更多信息,请参见注意事项和限制启动变体激活时间了

open_system (“slexNestedVSSWithCCAndST.slx”);

生成代码

点击使用嵌入式编码器生成代码与ERT目标生成代码。在生成的代码中,您可以看到不同的条件有关发动机控制器出现与预处理器#如果条件和相关条件模式作为定期出现如果

的混合代码编译启动变体激活时间可以微调变体的选择。在生成的可执行文件,你可以的汽油发动机控制器或柴油发动机控制器。在启动时,您可以决定是否你想要的有效的模式或者是正常模式汽油发动机柴油发动机控制器。为此,编写一个定制的代码,可以选择不同的变体启动激活时间系统初始化块。选择不同的变体,导航到模型设置> >自定义代码生成代码。指定头文件源文件作为# include“ChangeDieselController.h”ChangeDieselController.c分别。

ChangeDieselController.c负责在初始化函数中选择启动的变体。

# include“rtwtypes。h”走读生int32_T DMODE;空白ChangeDieselEngineController(){/ /选择柴油控制器在启动。/ /这是一个例子,所以是硬编码的值。/ /在实际场景中,这可以从传感器和阅读价值/ /决定哪个控制器在启动时你想要的。DMODE = 1;}

的帮助下,这段代码中,您可以选择启动的变体model_initialize功能和生成代码。

无效slexNestedVSSWithCCAndST_initialize(空白){ChangeDieselEngineCOntroller ();utAssert (DMODE = = (1) + (DMODE = = 2) = = 1);utAssert (PMODE = = (1) + (PMODE = = 2) < = 1);slexNestedVSSWithCCAndST_DW。systemEnable = 1;}