可以使用有条件执行的子系统,这些子系统使用控制输入端口,例如启用,触发,重置,函数调用作为变量选择的子系统不同的子系统块。有关有条件执行系统的更多信息,请参见有条件执行的子系统概述.
请注意
当变体激活时间参数的不同的子系统块被设置为代码编译
,所有变体选择中的控制端口块的类型必须相同。例如,您不能使用启用子系统和函数调用子系统块作为选择在不同的子系统块,代码编译
激活时间。
变量选择块上的控制输入端口和父模块上相应的输入端口不同的子系统块必须具有相同的名称。
考虑这个模型不同的子系统块命名控制器
和两个启用子系统块,线性
和非线性
,作为不同的选择。变量的条件线性
和非线性
块VSSMODE = = 0
和VSSMODE = = 1
,分别。如果你使用启用子系统块的线性
选择,然后非线性
选择也必须是一种启用子系统.
当您从这个模型生成代码时,线性
和非线性
选择由相应的变量条件保护。
step() {#if VSSMODE==0 //线性选择.......#elif VSSMODE==1 //非线性选择.......# endif
导出函数模型是Simulink金宝app®为可以与外部环境和调度程序集成的独立函数生成代码的模型。你可以用不同的子系统块与函数调用子系统块作为变体选择来创建导出功能模型。有关导出功能模型的更多信息,请参见导出功能模型概述.
考虑一个包含不同的子系统块命名VariantFcnCall
有两个函数调用子系统块,线性
和非线性
,作为不同的选择。变量条件设置为线性
和非线性
的选择是VSS_MODE = = 0
和VSS_MODE = = 1
,分别。的VariantFcnCall
块有一个根级函数调用导入块,fcn
控件上的控制端口具有相同的名称线性
和非线性
选择块。的变体激活时间参数的VariantFcnCall
被设置为代码编译
.
您还可以使用类似的多点进入功能的建模模式模型块。
在本例中,输入fcln1
,fcln2
,fcln3
通过不同的子系统块,模型
,它使用模型块作为变量选择。
当您从这个模型生成代码时,导出函数的定义,fcn
,包含了C
预处理条件#如果
和# endif
.的代码线性
和非线性
选择由相应的变量条件保护。有关配置模型以生成代码的更多信息,请参见为代码生成准备包含变量的模型.
void fcn(void) {/* RootInportFunctionCallGenerator: '/RootFcnCall_InsertedFor_fcn_at_outport_1' */ #if VSSMODE == 0 rtdwork . line . discretefilter = rtU. outport_1';In1 - 0.5 * rtdwork . linear . discrete tefilter_states;rtDWork.Linear。DiscreteFilter_states = rtDWork.Linear.DiscreteFilter;#endif /* VSSMODE == 0 */ #if VSSMODE == 1三机一体,rtCP_LookupTable_bp01Data, rtCP_LookupTable_tableData, 4U) - 0.5 * rtDWork.Nonlinear.DiscreteFilter_states; rtDWork.Nonlinear.DiscreteFilter_states = rtDWork.Nonlinear.DiscreteFilter; #endif /* VSSMODE == 1 */ #if VSSMODE == 0 rtY.Out1 = rtDWork.Linear.DiscreteFilter; #endif /* VSSMODE == 0 */ #if VSSMODE == 1 rtY.Out1 = rtDWork.Nonlinear.DiscreteFilter; #endif /* VSSMODE == 1 */ }
为了维护出口函数的整体定义,fcn
,使用可变条件时,使用变异来源块,如图所示。
在生成的代码中,导出函数的定义,fcn ()
,由= = 1
.
void fcn(void) {..... . php . php . php . php . php . php . php . php . php . php} # endif
可以使用与此类似的代码段引用此函数。
.....#if A==1 fcn(
当将变量条件传播到条件子系统时,将为所有端口设置相同的条件。
考虑这个模型。的不同的子系统块,VariantFcnCall
,有条件的子系统块作为选择。的尺寸。fcn
在VariantFcnCall
对应于变量选择块上的控制输入端口。对于一个输入,变异来源带条件块= = 1
连接到fcn
端口。的VariantFcnCall
块获取连接到的信号的可变条件fcn
端口。分配给块的条件然后传播到连接到它的输入和输出端口的块。当您在设置后模拟此模型时一个= 1
,变条件= = 1
传播的VariantFcnCall
Block and to the三机一体
和着干活
块连接到它,如变体条件图例所示。
当使用有条件执行的系统作为变量选择时,不支持这些条金宝app件不同的子系统布洛克:
行动的港口块在变量选择中。
迭代器端口块的变体选择不同的子系统与变体激活时间设置为代码编译
.
将模型配置为AUTOSAR组件,并将可运行子系统作为变体选择。
初始化函数,重置功能,终止函数,金宝app仿真软件的功能块。
请注意
Initialize和Terminate事件端口始终是无条件的,因为它们控制了所引用模型的模型默认和特定于块的初始化和终止事件。如果在引用的模型中定义Initialize函数块,则它对应于显式的Initialize事件。