主要内容

配置AUTOSAR CompuMethods

AUTOSAR软件组件使用计算方法(CompuMethods)在AUTOSAR数据的内部值和物理表示之间进行转换。CompuMethods的常用用途是线性数据缩放、校准和测量。

嵌入式编码器®导入ARXML代码中描述的AUTOSAR CompuMethods,并在AUTOSAR创作工具(AAT)和Simulink之间的往返中保存它们金宝app®.在Si金宝appmulink中,您可以修改导入的CompuMethods或创建和配置新的CompuMethods。

本节介绍在Simulink中配置AUTOSAR CompuMethods的示例。金宝app

配置AUTOSAR CompuMethod属性

您可以在模型中以图形方式或编程方式配置AUTOSAR CompuMethod属性。可以修改的CompuMethod属性包括名称、类别、单位、显示格式、AUTOSAR包和Simulink数据类型。金宝app

若要使用图形界面配置CompuMethod,请打开AUTOSAR字典并选择CompuMethods视图。这个视图显示了模型中可修改的CompuMethods,无论是从ARXML代码导入还是在Simulink中创建。金宝app

选择CompuMethod并编辑可用字段。

  • 的名字-指定名称文本

  • 类别——选择相同的线性RatFuncTextTable,或LinearAndTextTable(见数据类型的CompuMethod分类

  • 单位—从型号中可选的单元中选择

  • DisplayFormat-可选地指定校准和测量工具用于显示数据的格式。使用一个ANSI®Cprintf格式说明符字符串。例如,% 2.1 d指定带符号的十进制数,最小宽度为两个字符,最大精度为一个数字。该字符串产生一个显示值,例如12.2。有关构造格式说明符字符串的详细信息,请参见配置DisplayFormat

  • —为CompuMethods指定生成AUTOSAR包的路径

  • 金宝app模型数据类型-指定引用CompuMethod的S金宝appimulink数据类型列表

要修改CompuMethod的AUTOSAR包,您可以执行以下操作之一:

  • 中输入包路径参数字段。

  • 要打开AUTOSAR包浏览器,请单击控件右侧的按钮字段。使用浏览器导航到现有包或创建并选择包。在浏览器中选择软件包后,单击应用, CompuMethod参数值随所选内容一起更新。有关AUTOSAR包浏览器的详细信息,请参见为组件、接口、CompuMethod或SwAddrMethod配置AUTOSAR包

若要将CompuMethod与模型中使用的Simulink数据类型相金宝app关联,请选择CompuMethod并单击添加右边的按钮金宝app模型数据类型.此操作将打开一个包含可用数据类型列表的对话框。在值列表中,选择a金宝app仿真软件。NumericType金宝app仿真软件。AliasType,或输入Simulink枚举类型的名称。金宝app属性中添加类型金宝app模型数据类型列表中,点击好吧

设置金宝app模型数据类型属性,打开模型并使用AUTOSAR属性函数调用类似如下:

arProps = autosar.api.getAUTOSARProperties(“cmSpeed”);集(arProps,‘/ pkg / CompuMethods / RpmCm’,‘SlDataTypes’,{' SpeedRpmAdt '})sltypes =得到(arProps ' / pkg / CompuMethods / RpmCm ', ' SlDataTypes ')
sltypes = ' speeddrpmadt '

创建AUTOSAR CompuMethods

您可以在您的模型中创建AUTOSAR CompuMethods,以图形方式或编程方式。若要使用图形界面创建AUTOSAR CompuMethod,请打开AUTOSAR字典并选择CompuMethods视图。若要打开“添加CompuMethod”对话框,请单击添加按钮.为CompuMethod配置初始属性,例如名称、类别、单位、校准的显示格式、要生成的AUTOSAR包以及相关的Simulink数据类型。金宝app当你点击好吧, AUTOSAR字典中的CompuMethods视图被更新为新的CompuMethod。

生成代码时,导出的ARXML代码包含CompuMethod定义及其引用。

为线性函数配置CompuMethod方向

对于源自Simulink的设计,可以控制导出的金宝appCompuMethod,包括方向CompuMethod值的内部表示和物理表示之间的转换。使用AUTOSAR字典或AUTOSAR属性函数时,可以指定下列之一CompuMethod方向值:

  • InternalToPhys(默认)-生成CompuMethod部分用于将内部值转换为其物理表示形式。

  • PhysToInternal——生成CompuMethod将物理值转换为其内部表示的部分。

  • 双向——生成CompuMethod内部到物理和物理到内部转换方向的部分。

指定CompuMethodMATLAB中的方向®命令窗口中,使用AUTOSAR属性函数调用类似如下:

hModel = 'autosar_swc_expfcns';openExample (hModel);arProps = autosar.api.getAUTOSARProperties (hModel);集(arProps,‘XmlOptions’,‘CompuMethodDirection’,“双向”);get (arProps,‘XmlOptions’,‘CompuMethodDirection’)

指定CompuMethod在AUTOSAR字典中选择方向XML选项.为参数选择一个值CompuMethod方向.点击应用

当您为您的模型生成代码时,导出的ARXML代码中的CompuMethods包含所请求的方向部分。例如,这里有一个CompuMethod生成,CompuMethod方向设置为双向

< COMPU-METHOD UUID = "……" > <字>COMPU_EngSpdValue LINEAR< COMPU-INTERNAL-TO-PHYS >< compute - scales > < compute - scale > intToPhys intToPhys< LOWER-LIMIT INTERVAL-TYPE="CLOSED">0 24000 < compute - reason - coeffs > < compute - numerator > 0 1  < compute -分母> 8   < / COMPU-INTERNAL-TO-PHYS >< COMPU-PHYS-TO-INTERNAL >< compute - scales > < compute - scale > physToInt 0 3000 < compute - rational - coeffs > < compute - numerator > 0  8  < compute - denominator > 1   < / COMPU-PHYS-TO-INTERNAL >< / COMPU-METHOD >

请注意

为布尔或枚举数据类型生成的TEXTTABLE类别的CompuMethods仅使用InternalToPhys,与方向参数设置无关。

导出CompuMethod单元引用

ARXML导入器保存了在导入的CompuMethods中找到的单元和物理维度信息。该软件在AUTOSAR创作工具(AAT)和Simulink之间的往返中保存CompuMethod单元和物理尺寸信息。金宝app

对于源自Simulink的设计,导出器为每个设计生成金宝app一个单元引用CompuMethod.按照惯例,每个CompuMethod引用一个名为NoUnit.例如,这是一个布尔数据类型CompuMethod以及它引用的单位。

< COMPU-METHOD UUID = "……" > <字>COMPU_Boolean TEXTTABLE /mymodel_pkg/mymodel_dt/NoUnit< / UNIT-REF >… < unit uuid ="…"" > <字>NoUnit < factor-si-to-unit >1 < offset-si-to-unit >0 

为每个导出提供一个单元CompuMethod有助于支持输金宝app出AUTOSAR数据的校准和测量工具的使用。

修改SCALE_LINEAR_AND_TEXTTABLE CompuMethod的线性缩放

您可以导入和导出使用线性和TEXTTABLE缩放的AUTOSAR CompuMethod。导入引用SCALE_LINEAR_AND_TEXTTABLE类别的CompuMethods的应用程序数据类型金宝app仿真软件。NumericType金宝app仿真软件。AliasTypeSimulink工作空间中的数据对象。金宝app在Si金宝appmulink中,您可以修改CompuMethods的线性缩放。TEXTTABLE伸缩是只读的。

例如,这里有一个带有一个线性尺度和两个TEXTTABLE尺度的CompuMethod。

当您将CompuMethod导入模型时,导入器会创建一个金宝app仿真软件。NumericType线性缩放。若要修改线性缩放,请打开金宝app仿真软件。NumericType数据对象,并修改其字段。

要对TEXTTABLE缩放信息进行只读访问,请使用AUTOSAR属性得到函数调用类似如下:

> > arProps = autosar.api.getAUTOSARProperties(“mySWC”);>> %获取COMPU_myType TEXTTABLE规模的字面量>> Get (arProps,'/simple_ar_package/simple_ar_dt/COMPU_myType','CellOfEnums') ans = 'SensorError' 'SignalNotAvailable' >> %获取COMPU_myType TEXTTABLE规模的内部值>> Get (arProps,'/simple_ar_package/simple_ar_dt/COMPU_myType','IntValues') ans = 350 351

为双比例参数配置合理函数CompuMethod

对于AUTOSAR双缩放参数(存储两个相同物理值的缩放值),软件生成CompuMethod类别RAT_FUNC.计算方法可以是一阶有理函数。

配置并生成一个双缩放参数:

  1. 打开一个AUTOSAR模型。对于本例,创建一个常数引用AUTOSAR双缩放参数的块。在模型中,连接常数块到Simulink输金宝app出端口。

  2. 打开模型数据编辑器(在建模选项卡上,单击模型数据编辑器),然后选择参数选项卡。的参数项常数块。使用价值列引用双缩放参数的名称。本例使用参数nameT1Rec

  3. 创建T1Rec数据对象。在模型数据编辑器中,值的右侧T1Rec,点击操作按钮并选择创建

    2 .在“创建新数据”对话框中设置价值AUTOSAR。DualScaledParameter并点击创建.一个AUTOSAR。DualScaledParameter数据对象出现在基本工作区中。打开双缩放参数属性对话框。

  4. 配置双缩放参数的属性T1Rec.执行以下MATLAB代码。该代码设置了从内部校准时间值到物理频率(时间倒数)值的转换。

    %从时间到频率的转换% f = 1/ tF = (0*T + 1)/(1*T+0);T1Rec。CompuMethodName =立方厘米的指定AUTOSAR CompuMethod名称T1Rec。数据类型=“fixdt(1, 32岁,0.01,0)';T1Rec.CalToMainCompuNumerator = 1;T1Rec。CalToMainCompuDenominator=[1 0]; T1Rec.CalibrationMin = 0.001; T1Rec.CalibrationMax = 1.0; T1Rec.CalibrationValue = 0.1500; T1Rec.CoderInfo.StorageClass =“自定义”;T1Rec.CoderInfo。标识符='';T1Rec.CoderInfo。CustomStorageClass =“InternalCalPrm”;T1Rec.CoderInfo.CustomAttributes。PerInstanceBehavior =...由软件组件的所有实例共享的参数;T1Rec。描述=''% T1Rec。Min = [];% T1Rec。Max = [];T1Rec。单位='';T1Rec。CalibrationDocUnits =“m / s²”
  5. 检查属性对话框中的双缩放参数T1Rec.下面是MATLAB代码设置的主要属性。

  6. 这里是由MATLAB代码设置的校准属性。

  7. 如果CompuMethod在AUTOSAR属性中,方向还没有设置为双向,请使用AUTOSAR字典,XML选项视图,来设置它。

  8. 从模型生成代码。

当您从模型生成代码时,ARXML导出器会生成一个CompuMethod的类别RAT_FUNC

< COMPU-METHOD UUID = "……" > <字>立方厘米< /字> <目录>RAT_FUNC /mymodel_pkg/mymodel_dt/m_s_ < compute - internal - to - phys > < compute - scales > < compute - scale > < compute - rational - coeffs > < compute - numerator > -100  < compute - denominator >  0 -1    < compute - physto - internal > < compute - scales > < compute - scale > < compute - rational - coeffs > < compute - numerator > 100  < compute -分母> 0< v >1      

CompuMethod是否从为?生成的应用程序数据类型引用T1Rec

< APPLICATION-PRIMITIVE-DATA-TYPE UUID = "……" > <字>T1Rec_DualScaled VALUE   < sw - calibre - access >READ-WRITE < compute - method - ref DEST=" compute - method ">/mymodel_pkg/mymodel_dt/立方厘米 /mymodel_pkg/mymodel_dt/ApplDataTypes/ DataConstrs/DC_T1Rec_DualScaled    

应用程序数据类型T1Rec_DualScaled是否从参数数据原型中引用T1Rec

< PARAMETER-DATA-PROTOTYPE UUID = "……" > <字>T1Rec   < sw - calibre - access >READ-WRITE < sw - calibre - policy >STANDARD    /mymodel_pkg/mymodel_dt/ApplDataTypes/T1Rec_DualScaled< / TYPE-TREF >…< / PARAMETER-DATA-PROTOTYPE >

相关的例子

更多关于