主要内容

在有条件执行的子系统中使用变体子系统块

您可以使用有条件执行的子系统,该子系统使用控制输入端口,例如启用触发重置,而且功能呼叫作为变量选择的子系统不同的子系统块。有关有条件执行系统的更多信息,请参见有条件执行的子系统概述

笔记

变体激活时间参数的不同的子系统块设置为代码编译,所有变体选择中的控制端口块的类型必须相同。例如,您不能使用启用子系统功能呼叫子系统块作为选择内的选择不同的子系统块,代码编译激活时间。

变量选择块上的控制输入端口和父模块上相应的输入端口不同的子系统块必须具有相同的名称。

创建一个变体子系统,选择启用子系统

考虑这个模型不同的子系统块命名控制器和二启用子系统块,线性非线性,作为不同的选择。变量的条件线性非线性块是vssmode == 0.vssmode == 1,分别。如果你使用启用子系统线性选择,然后非线性选择也必须是一个启用子系统

当您从此模型生成代码时,线性非线性选择被相应的变体条件保护。

step(){#if vssmode == 0 //线性选择代码....... #elif vssmode == 1 //非线性选择代码....... #endif

使用变体子系统块创建导出功能模型

出口函数模型是Simulink金宝app®为可以与外部环境和调度程序集成的独立函数生成代码的模型。你可以用不同的子系统块与功能呼叫子系统块作为变体选择以创建导出功能模型。有关导出功能模型的更多信息,请参阅导出功能模型概述

考虑包含a的模型不同的子系统块命名VariantFcnCall两者功能呼叫子系统块,线性非线性,作为不同的选择。设置的变体条件线性非线性的选择是VSS_MODE = = 0VSS_MODE = = 1,分别。这VariantFcnCall块有一个根级函数调用导入块,fcn,并且对控件端口提供相同的名称线性非线性选择块。这变体激活时间参数的VariantFcnCall被设置为代码编译

您还可以使用类似的多点进入功能的建模模式模型块。

在此示例中,输入FCLN1.FCLN2.,FCLN3.通过了不同的子系统堵塞,模型,它使用模型块作为变体选择。

导出功能模型的代码生成

从此模型生成代码时,导出函数的定义,fcn,包含C预处理条件#如果# endif。代码线性非线性选择被相应的变体条件保护。有关配置模型以生成代码的详细信息,请参阅为代码生成准备包含变量的模型

void fcn(void){/ * rootinportfunctioncallgenerator:' / rootfcncall_insertedfor_fcn_at_outport_1'* / #if vssmode == 0ttdwork.linear.discretyefilter = RTU.in1  -  0.5 * RTDWork.linear.discretefilter_states;RTDWork.Linear.DiscreteFilter_states = RTDWork.linear.DiscreteFilter;#endif / * vssmode == 0 * / #if vssmode == 1 rtdwork.nonlinear.discretefilter = look1_binlxpw(rtu.in1,rtcp_lookupt_bp01data,rtcp_lookupt_bp01data,rtcp_lookupt_tabledata,4u) -  0.5 * RTDWork.nonlineR.discretefilter_states;RTDWork.NONLINEAR.DISCRETEFILTER_STATES = RTDWORK.NONLINEAR.DISCRETEFILTER;#endif / * vssmode == 1 * / #if vssmode == 0 rty.out1 = RTDWork.LineAl.discreteFilter;#endif / * vssmode == 0 * / #if vssmode == 1 rty.out1 = RTDWORK.NONLINEAR.DISCRETEFILTERT;#endif / * vssmode == 1 * /}

在生成的代码中保护导出函数定义

为了保护出口函数的整个定义,fcn,使用变体条件,使用a变异来源块如此示例所示。

使用Variant Source块保护导出函数的定义

在生成的代码中,导出函数的定义,fcn (),被守卫A == 1

#如果a == 1 void fcn(void){......} #endif

可以使用类似于此类似的代码片段来参考此功能。

.....#if A==1 fcn(

将变体条件从变体子系统块传播到条件子系统

当将变量条件传播到条件子系统时,将为所有端口设置相同的条件。

考虑这个模型。这不同的子系统堵塞,VariantFcnCall,有条件的子系统块作为选择。的尺寸。fcnVariantFcnCall对应于变体选择块上的控制输入端口。单输入,单输出变异来源块条件A == 1连接到fcn端口。这VariantFcnCall块获取连接到连接到的信号的变体条件fcn端口。分配给块的条件然后传播到连接到它的输入和输出端口的块。当您在设置后模拟此模型时一个= 1,变体条件A == 1传播的VariantFcnCall块和三机一体OUT1.块连接到它,如变体条件图例所示。

限制

当使用有条件执行的系统作为变量选择时,不支持这些条金宝app件不同的子系统堵塞:

  • 行动港口变体选择中的块。

  • 迭代器端口在变体选择中的块不同的子系统变体激活时间设置代码编译

  • 将模型配置为AUTOSAR组件,并将可运行子系统作为变体选择。

  • 初始化函数重置功能终止功能,金宝appSimulink功能块。

    笔记

    初始化和终止事件端口始终无条件,因为它们控制了所引用模型的模型默认和块特定的初始化和终止事件。如果在引用的模型中定义初始化功能块,则它对应于显式初始化事件。

相关的话题