从嵌套的变体子系统与代码生成代码编译并启动激活
这个例子演示了如何代码编译
和启动
变体激活时间可以一起使用在两个嵌套的变体子系统。
模型
打开模型slexNestedVSSWithCCAndST.slx
。模型包含一个变种子系统发动机控制器
有两个选择柴油发动机
和汽油发动机
与条件ENGINE_TYPE = = 1
和ENGINE_TYPE = = 2
分别。的变体激活时间
参数的发动机控制器
块设置为代码编译
,两个变量柴油发动机
和汽油发动机
有启动
随着变体激活时间
参数。每个发动机型号有两种选择Effficient模式
和正常模式
。的汽油发动机
有条件PMODE = = 1
和PMODE = = 2
,柴油发动机
有条件DMODE = = 1
和DMODE = = 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;}