主要内容

为AUTOSAR元素配置不同的参数值

AUTOSAR软件组件可以通过使用不同的参数灵活地指定AUTOSAR元素的参数值。在Simulink中对具有可变参数值的AUTOSAR元素建模®

  • 创建表示AUTOSAR元素的块。

  • 通过添加表示不同的参数值仿真软件。变体Variable数据对象。

  • 建立AUTOSAR系统常数AUTOSAR。参数数据对象。AUTOSAR数据对象表示确定变量参数活动值的条件值。

  • 将激活时间与AUTOSAR系统常数联系起来仿真软件。变体Control数据对象。激活时间决定了您可以在代码生成的哪个阶段修改变量参数值。

使用可变参数,您可以在代码编译之前或在模型启动时修改参数值。当您构建模型时,生成的C代码包含与变量参数对应的值和条件。导出的ARXML代码包含变量选择如下VARIATION-POINT-PROXY条目和变量控制变量作为表示关联条件值的系统常量。

在预编译时指定变量参数

这个例子展示了如何为包含不同参数的AUTOSAR元素生成代码,而不需要为每组值重新生成代码。在生成的代码中,变量参数值包含在预处理器条件中#如果而且# elif使您能够在代码编译之前在值之间切换。

例如,这是一个AUTOSAR组件模型,它包含一个可变参数,k,它为Gain块建模多个值。您可以从打开模型matlabroot/ /帮助/工具箱/ autosar /例子mAutosarVariantParameter.slx

属性的多个值获得参数并将每个值与可变条件逻辑关联起来。可以将变量条件逻辑指定为表达式或仿真软件。变体包含表达式的对象。

自适应模型。变体(“MySys = = 10”);线性模型。变体(“MySys = = 1”);非线性模型。变体(《MySys = = 2》);k =仿真软件。变体Variable(“选择”, {“自适应”10“线性”, 1“非线性”3});

要对AUTOSAR系统常数建模,该模型定义AUTOSAR。参数数据对象tmpSysCon

tmpSysCon = AUTOSAR.Parameter (int32 (1));tmpSysCon.CoderInfo.StorageClass =“自定义”;tmpSysCon.CoderInfo.CustomStorageClass =“SystemConstant”

的价值tmpSysCon的活动值k

MySys =仿真软件。VariantControl (“价值”tmpSysCon,“ActivationTime”代码编译的);

当你为模型生成代码时:

  • 在ARXML代码中,变量选择显示为VARIATION-POINT-PROXY条目的短名自适应线性,非线性MySys作为表示关联条件值的系统常量出现。

    <变化点-代理> <变化点-代理UUID="744b1a40-2029-54ae-fba9-79a6ca104b8c"> 自适应 CONDITION /DataTypes/SystemConstants/MySys == 10  < variable - point - proxy UUID="af1f057b-45e6-58f7-7e12-b66857813de6"> 线性 CONDITION /DataTypes/SystemConstants/MySys == 1  < change - point - proxy UUID="6ba924d2-49e1-5948-cbd1-c0990240bb21"> 非线性 CONDITION /DataTypes/SystemConstants/MySys == 2   . /
  • 在RTE兼容的C代码中,的值k是否包含在预处理条件中#如果而且# elif.在编译这段代码时,Simulink会计算条件表达式。根据求值为的条件表达式真正的,与该条件逻辑相关联的增益值变为活动的,并仅为该增益值编译代码。然后可以更改变量控制变量的值MySys为不同的增益参数值编译代码。您不需要为不同的增益值重新生成代码。

    参数rtP = {#if Rte_SysCon_ADAPTIVE || Rte_SysCon_LINEAR || rte_syscon_非线性/*变量:k *引用:'/Gain' */ #if Rte_SysCon_ADAPTIVE 10.0 #elif Rte_SysCon_LINEAR 1.0 #elif rte_syscon_非线性3.0 #endif #define PARAMETERS_VARIANT_EXISTS #endif #ifndef PARAMETERS_VARIANT_EXISTS 0 #endif /* PARAMETERS_VARIANT_EXISTS undefined */};

在生成后指定变量参数

这个例子展示了如何为AUTOSAR元素生成可运行程序,该元素可以为不同的变量参数值集运行,而不需要为每一组值重新编译代码。在生成的代码中,变量参数值包含在正则中如果使您能够在模型启动时在值之间切换的条件。

例如,这是一个AUTOSAR组件模型,它包含一个可变参数,k,它为Gain块建模多个值。您可以从打开模型matlabroot/ /帮助/工具箱/ autosar /例子mAutosarVariantParameter.slx

属性的多个值获得参数并将每个值与可变条件逻辑关联起来。可以将变量条件逻辑指定为表达式或仿真软件。变体包含表达式的对象。

自适应模型。变体(“MyPBCrit = = 10”);线性模型。变体(“MyPBCrit = = 1”);非线性模型。变体(《MyPBCrit = = 2》);k =仿真软件。变体Variable(“选择”, {“自适应”10“线性”, 1“非线性”3});

的价值MyPBCrit的活动值k

MyPBCrit =仿真软件。VariantControl (“价值”, 1“ActivationTime”“启动”);

当你为模型生成代码时:

  • 在ARXML代码中,变量选择显示为VARIATION-POINT-PROXY条目的短名自适应线性,非线性MyPBCrit作为表示关联条件值的系统常量出现。

    <变化点-代理> <变化点-代理UUID="e773053e-d2a7-568c-768b-fee924d1fad6">  .自适应 CONDITION < post - build - variable - conditions > < post - build - variable -CONDITION> < match - criteria - ref DEST=" post - build - variable - criterion ">/DataTypes/PostBuildCriterions/MyPBCrit 10    < variable - point - proxy UUID="3ce69abb-b974-591d-c7a8-180c64bedfb5"> 线性 CONDITION < post - build - variable - conditions > < post - build - variable -CONDITION> < match - criteria - ref DEST=" post - build - variable - criterion ">/DataTypes/PostBuildCriterions/MyPBCrit 1    < variable - point - proxy UUID="b4b96126-4744-5093-360b-3965883aeeda"> 非线性 CONDITION < post - build - variable - conditions > < post - build - variable -CONDITION> < match - criteria - ref DEST=" post - build - variable - criterion ">/DataTypes/PostBuildCriterions/MyPBCrit < value >2    
  • 在RTE兼容的C代码中,的值k用正则表达式括起来如果条件。当您执行由此代码构建的可运行代码时,Simulink会计算条件表达式。根据求值为的条件表达式真正的,与该条件逻辑相关联的增益值变为活动的,可运行程序仅为该增益值执行。然后可以更改变量控制变量的值MyPBCrit为不同的增益参数值执行可运行程序。您不需要重新编译代码来为不同的增益参数值构建可运行程序。

    void mBasic_Init(void) {/* Variant参数启动激活时间*/ if (Rte_PbCon_ADAPTIVE()) {rtP. init (void) {/*k = 10.0;} else if (Rte_PbCon_LINEAR()) {rtP.}k = 1.0;} else if (rte_pbcon_非线性()){rtP.}k = 3.0;}}

另请参阅

相关的话题

Baidu
map