可以使用有条件执行的子系统,这些子系统使用控制输入端口,例如启用,触发,重置,函数调用子系统作为变型子系统有关条件执行系统的更多信息,请参阅条件执行子系统概述.
请注意
当变体激活时间参数变型子系统块被设置为代码编译
,所有变量选项中的控制端口块类型必须相同。例如,您不能使用启用子系统和函数调用子系统块作为选择在变型子系统有代码编译
激活时间。
变量选择块上的控制输入端口和父级上的相应输入端口变型子系统块必须具有相同的名称。
用A来考虑这个模型变型子系统块命名控制器
和两个启用子系统阻碍,线性
和非线性
,作为变体选择。在不同的条件下线性
和非线性
块VSSMODE = = 0
和VSSMODE = = 1
分别地如果你使用启用子系统块的线性
选择,然后非线性
选择也必须是一种启用子系统.
当您从这个模型生成代码时,线性
和非线性
选择由相应的变量条件保护。
step() {#if VSSMODE==0 //线性选择.......#elif VSSMODE==1 //非线性选择.......# endif
导出函数模型是Simulink金宝app®为可与外部环境和调度器集成的独立函数生成代码的模型。你可以使用变型子系统阻挡函数调用子系统块作为变体选择来创建导出功能模型。有关导出功能模型的更多信息,请参见导出功能模型概述.
考虑一个包含变型子系统块命名VariantFcnCall
有两个函数调用子系统阻碍,线性
和非线性
,作为不同的选择。变量条件设置为线性
和非线性
选择是VSS_模式==0
和VSS_模式==1
,分别。的VariantFcnCall
块具有根级函数调用inport块,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
可以使用与此类似的代码段引用此函数。
….. #如果A==1 fcn()#endif……
将变量条件传播到条件子系统时,将为所有端口设置相同的条件。
考虑这个模型。的变型子系统块,VariantFcnCall
,具有条件子系统块作为选项。输入端口fcn
在…上VariantFcnCall
对应于变量选择块上的控制输入端口。对于一个输入,变异源带条件块= = 1
连接到fcn
端口。的VariantFcnCall
块获取连接到的信号的可变条件fcn
港口。分配给块的条件随后传播到连接到其输入和输出端口的块。设置后模拟此模型时A=1
,变条件= = 1
传播到VariantFcnCall
Block and to the内
和着干活
块连接到它,如变体条件图例所示。
当将有条件执行的系统用作系统中的变量选项时,不支持金宝app这些条件变型子系统布洛克:
行动的港口块在变量选择中。
迭代器端口块的变体选择变型子系统与变体激活时间设置为代码编译
.
将模型配置为AUTOSAR组件,将runnable配置为变量子系统选项。
初始化函数,重置功能,终止函数,及金宝app仿真软件的功能阻碍。
请注意
Initialize和Terminate事件端口始终是无条件的,因为它们控制了所引用模型的模型默认和特定于块的初始化和终止事件。如果在引用的模型中定义Initialize函数块,则它对应于显式的Initialize事件。