文件

导出ASAP2文件进行数据测量和校准

ASAM MCD-2 MC标准,也称为ASAP2,是自动化和测量系统标准化协会(ASAM)提出的数据定义标准。ASAP2是用于测量、校准和诊断系统的数据的非面向对象描述。有关ASAM和ASAM MCD-2 MC (ASAP2)标准的更多信息,请参阅ASAM网站https://www.asam.net.

代码生成器允许您在代码生成过程中导出包含关于模型的信息的ASAP2文件。

你可以运行一个交互式ASAP2文件生成示例。在matlab中打开示例®命令提示符,输入以下命令:

RTWDEMO_ASAP2

笔记

金宝app®编码器™金宝app支持ASAP2文件生成是版本中性的。默认情况下,软件生成ASAP2 1.31格式,但生成的模型信息通常与其他ASAP2版本兼容。ASAP2文件生成也是与ASAP2测量和校准工具的特定需求的中性。该软件提供自定义API,您可以用于自定义ASAP2文件生成以生成ASAP2版本,并满足ASAP2工具的特定需求。

你应该知道的事情

要使用ASAP2文件生成,您应该熟悉以下主题:

  • 阿桑和ASAP2标准和术语。请参阅ASAM网站https://www.asam.net.

  • 金宝appSimulink数据对象。数据对象用于提供模型中未包含的信息。有关概述,请参阅数据对象(金宝app模型)。

  • 生成代码中信号和参数的存储和表示。看模拟和调试的数据访问

  • 如果您是嵌入式编码器许可®,请参阅嵌入式编码器主题数据表示和访问(嵌入式编码器)。

目标支持ASAP金宝app2

您可以使用ASAP2文件生成变化的系统目标文件配置。例如,

  • 通用实时目标grt.tlc.)允许您作为代码生成和构建过程的一部分生成ASAP2文件。

  • 嵌入式编码器ert.tlc.)系统目标文件选择还允许您生成ASAP2文件,作为代码生成和构建过程的一部分。

  • ASAM-ASAP2数据定义目标Asap2.tlc.)允许您只生成ASAP2文件,而不构建可执行程序。

下面给出了使用这些目标配置生成ASAP2文件的过程生成ASAP2文件

定义ASAP2信息

定义ASAP2参数和信号的信息

ASAP2文件生成过程需要有关模型中的参数和信号的信息。其中一些信息包含在模型本身中。您必须使用工作区或数据字典中的Simulink数据对象提供其余的。金宝app在某些情况下,使用工作区对象是可选的。

使用模型数据编辑器和内置的Simulink数据对象来提供信息。金宝app例如,您可以使用金宝appsimulink.signal.对象提供测量信息和金宝app仿真软件。参数对象提供特征信息。此外,您可以使用从派生的数据类中使用数据对象金宝appsimulink.signal.金宝app仿真软件。参数提供信息。有关数据对象的信息,请参阅数据对象(金宝app模型)。有关模型数据编辑器的信息,请参阅使用模型数据编辑器配置数据属性(金宝app模型)。

下表包含ASAP2文件生成所需的最小数据属性集。某些数据属性在模型中定义;其他人在物体的属性中提供。对于定义的属性金宝appsimulink.signal.或者金宝app仿真软件。参数对象,表提供关联的属性名称。

数据属性

定义

财产名称

名称(符号)

模型和数据对象

从参数或信号名称解析到的数据对象句柄继承

描述

数据对象

描述

数据类型

模型或数据对象

数据类型

缩放
(如果定点数据类型)

模型或数据对象

数据类型

最低允许值

模型或数据对象

最大允许值

模型或数据对象

马克斯

单位

模型或数据对象

单位

内存地址(可选)

模型或数据对象

MemoryAddress_asap2.(可选;见内存地址属性.)

内存地址属性

如果在代码生成之前内存地址属性是未知的,则代码生成器插入ECU地址生成的ASAP2文件中的占位符文本。通过后处理生成的文件,您可以通过Postprocessing替换占位符的实际地址。查看文件matlabroot./工具箱/ RTW /目标/ ASAP2 / ASAP2 /ASAP2POST.M.例如,ASAP2POST.M.解析您提供和替换的链接器映射文件ECU地址ASAP2文件中的占位符与实际的内存地址。由于链接器映射文件因编译器而异,因此您可能需要修改正则表达式代码ASAP2POST.M.匹配您使用的链接映射的格式。

笔记

如果嵌入式编码器在您的系统上许可并安装,并且如果您正在为嵌入目标生成可执行和可链接格式(ELF)或程序数据库(PDB)文件,则可以使用RTW.asap2setaddress.自动化ECU地址替换功能。有关更多信息,请参阅ASAP2文件的自动ECU地址替换(嵌入式编码器)

如果在代码生成之前已知的存储器地址属性,则可以在数据项或数据对象中定义它。默认情况下,MemoryAddress_asap2.财产不存在金宝appsimulink.signal.或者金宝app仿真软件。参数数据对象类。如果要添加该属性,请添加一个调用的属性MemoryAddress_asap2.到了一个是一个子类的自定义类金宝app或者Asap2.班级。有关Simulink数据类的信息,请参阅金宝app定义数据类(金宝app模型)。

下表表示已替换上一个版本的ASAP2对象属性的Simulink对象属金宝app性:

ASAP2和ASAP2之间的差异金宝app参数和信号对象属性

ASAP2对象属性(上一个)

金宝appSimulink对象属性(当前)

longid_asap2.

描述

photicalmin_asap2.

photicalmax_asap2.

马克斯

Units_ASAP2

单位

ASAP2文件的自动ECU地址替换(嵌入式编码器

如果嵌入式编码器在您的系统上许可并安装,并且如果您正在为嵌入目标生成可执行和可链接格式(ELF)或程序数据库(PDB)文件,则可以使用RTW.asap2setaddress.功能自动替换ECU地址占位符内存地址值,具有生成的ASAP2文件中的实际地址。

如果在代码生成之前内存地址属性是未知的,则代码生成器插入ECU地址生成的ASAP2文件中的占位符文本,如下面的示例所示。

/ begin特征/ *名称* / ki / * long标识符* /“”/ *类型* /值/ * ECU地址* /0x0000./ * @ECU_Address@Ki@ * /

替代实际地址ECU地址占位符,使用生成的ASAP2文件使用RTW.asap2setaddress.功能。一般语法如下:

rtw.asap2SetAddress (Asap2file.InfoFile

参数是指定生成的ASAP2文件的名称和生成的可执行ELF文件、来自Microsoft工具链的PDB文件或模型的DWARF调试信息文件的名称的字符向量。当它被调用时,RTW.asap2setaddress.从指定的ELF,PDB或DWARF文件中提取实际的ECU地址,并以实际地址替换ASAP2文件中的占位符,例如:

/ begin特征/ *名称* / ki / * long标识符* /“”/ *类型* /值/ * ECU地址* /0x40009e60.

为查找表定义ASAP2信息

金宝appSimulink编码器软件为查找表数据及其断点生成ASAP2描述。该软件代表1-D表数据曲线信息,2-D表数据为地图信息和断点AXIS_DESCR.AXIS_PTS信息。您可以使用以下Simulink查找表块之一进行模型表:金宝app

  • 直接查询表(n-D) - 1和2维

  • 使用PRELOOKUP - 1和2维度插值

  • 一维查找表

  • 2-D查找表

  • N-D查找表 - 1和2尺寸

该软件支持以下类型的查找表金宝app断点(轴点):

断点类型 生成
调谐并在多台表轴(公共轴)之间共享

com_axis.

固定和非全内(固定轴)

这些变种之一FIX_AXIS

  • fix_axis_par.如果断点是具有等距间隔的整数,并且等距间距是两个的功率

  • fix_axis_par_dist.如果断点是具有等距间距的整数

  • fix_axis_par_list.如果断点是具有非等距间距的整数

可调但不能在多个表之间共享(标准轴)

std_axis.

配置ASAP2代码生成块时:

  • 对于表数据,使用a金宝app仿真软件。参数具有非的数据对象汽车存储类。

  • 对于在多个表轴之间共享的可调断点数据(com_axis.),用金宝app仿真软件。参数具有非的数据对象汽车存储类。

  • 对于固定的、不可调优的断点数据(FIX_AXIS),使用“块参数”对话框中指定的工作空间变量或数组。断点应在代码中存储为整数,因此数据类型应为内置整数类型(INT8.int16INT32.uint8.uint16, 或者UINT32.)、定点数据类型或等效别名类型。

  • 对于在多个表中不共享的可调断点数据(STD_AXIS):

    1. 创建一个金宝app仿真软件。公共汽车对象来定义结构体打包(字段的名称和顺序)。参数结构的字段必须与查找表数据和查找表块的每个轴相对应。例如,在一个n-d查找表块具有2个维度,结构必须仅包含三个字段。此总线对象描述了查找特性的记录布局。

    2. 创建一个金宝app仿真软件。参数对象表示可调参数。

    3. 创建表和轴值。

    4. (可选)指定单位最低,最大值参数对象的属性。属性仅应用于表数据。

这里有一个例子n-d查找表以标准轴格式生成ASAP2文件的记录:

/ begin特征/ *名称* /stdaxisparam....... / *记录布局* /lookup1d_x_word_y_float32_ieee.... begin axis_descr / * x轴点的描述* // *轴类型* / std_axis.../end AXIS_DESCR /end CHARACTERISTIC /begin RECORD_LAYOUT Lookup1D_X_WORD_Y_FLOAT32_IEEE AXIS_PTS_X 1 WORD INDEX_INCR DIRECT FNC_VALUES 2 FLOAT32_IEEE COLUMN_DIR DIRECT /end RECORD_LAYOUT . /

笔记

示例模型RTWDEMO_ASAP2图示了查找表块的ASAP2文件生成,包括可调(COM_AXIS)和固定(FIX_AXIS)查找表断点。

生成ASAP2文件

关于生成ASAP2文件

您可以通过以下方式之一从型号中生成ASAP2文件:

  • 使用通用实时目标或嵌入的编码器目标作为代码生成和构建过程的一部分生成ASAP2文件。

  • 使用ASAM-ASAP2数据定义目标仅生成ASAP2文件,而无需构建可执行文件。

本节讨论如何通过使用内置ASAP2支持的目标生成ASAP2文件。金宝app例如,请参阅ASAP2示例模型RTWDEMO_ASAP2

使用GRT或ERT系统目标文件

使用Generic Real-Time Target或Embedded Coder系统目标文件为模型生成ASAP2数据定义的过程如下:

  1. 使用模型数据编辑器将存储类应用于信号、块状态和块参数,如将存储类应用于单个信号、状态和参数数据元素。使用信号和状态名称来引用相应的测量记录和参数对象名称,以引用特征记录。

    使用其他的存储类汽车丝锥,或者,如果将相应数据类别的默认存储类设置为默认的在代码映射编辑器(默认设置)中,模型默认值。例如,使用ExportedGlobal.将数据项配置为生成的代码中的非结构化全局变量。

    笔记

    如果存在以下一个或多个条件,则在ASAP2文件中不表示参数:

    • 您应用存储类汽车丝锥, 或者默认的(通过模型默认值).

    • 您可以应用一个存储类,导致代码生成器生成宏或不可寻址的变量。

  2. 使用模型数据编辑器为每个数据项配置所需的其余属性。

  3. 在这一点代码生成窗格,点击浏览打开系统目标文件浏览器。在浏览器中,选择grt.tlc.或基于ERET的目标文件,然后单击好的

  4. 选择模型配置参数ASAP2接口

  5. 选择参数仅生成代码

  6. 点击申请

  7. 生成代码。

    代码生成器将ASAP2文件写入构建文件夹。默认情况下,文件名为模型.A2L., 在哪里模型是模型的名称。ASAP2安装文件控制ASAP2文件名。有关详细信息,请参见自定义生成的ASAP2文件

使用ASAM-ASAP2数据定义目标

使用ASAM-ASAP2数据定义目标生成模型的ASAP2数据定义的过程如下:

  1. 使用模型数据编辑器将存储类应用于信号、块状态和块参数,如将存储类应用于单个信号、状态和参数数据元素。使用信号和状态名称来引用相应的测量记录和参数对象名称,以引用特征记录。

    使用除此之外的存储类或自定义存储类汽车丝锥,或者,如果将相应数据类别的默认存储类设置为默认的在代码映射编辑器(默认设置)中,模型默认值。例如,使用ExportedGlobal.将数据项配置为生成的代码中的非结构化全局变量。

    笔记

    如果存在以下一个或多个条件,则在ASAP2文件中不表示数据项:

    • 您将其中一个存储类应用汽车丝锥, 或者默认的(通过模型默认值).

    • 应用自定义存储类,使代码生成器生成宏或不可寻址变量。

  2. 使用模型数据编辑器为每个数据项配置所需的其余属性。

  3. 在这一点代码生成窗格,点击浏览打开系统目标文件浏览器。在浏览器中,选择Asap2.tlc.然后点击好的

  4. 选择模型配置参数仅生成代码

  5. 点击申请

  6. 生成代码。

    代码生成器将ASAP2文件写入构建文件夹。默认情况下,文件名为模型.A2L., 在哪里模型是模型的名称。ASAP2安装文件控制ASAP2文件名。有关详细信息,请参见自定义生成的ASAP2文件

为引用模型生成ASAP2文件

构建过程可以为模型引用层次结构中的每个引用模型生成ASAP2文件。在生成的ASAP2文件中,测量记录表示引用模型内的信号和状态。

要为引用模型生成ASAP2文件,请为顶部模型选择ASAP2文件生成以及参考层次结构中的每个引用的模型。例如,如果您使用的是通用实时目标或嵌入式编码器目标,请按照所描述的过程使用GRT或ERT系统目标文件对于顶级模型和每个引用模型。

将ASAP2文件合并顶部和引用的模型

使用功能RTW.asap2mergemdlrefs.合并为顶部和引用的模型生成的ASAP2文件。该函数具有以下语法:

[状态,信息] = rtw.asap2mergemdlrefs(topmodelname.asap2FileName

  • topmodelname.是包含一个或多个引用模型的模型的名称。

  • asap2FileName是您为合并的ASAP2文件指定的名称。

  • 可选:状态如果合并完成,返回false(逻辑0),否则返回true(逻辑1)。

  • 可选:信息返回有关合并失败的其他信息如果状态是真的。否则,它返回空字符向量。

考虑以下示例。

(地位、信息)= rtw.asap2MergeMdlRefs(“myTopMdl”、“merged.a2l”)
此命令合并为顶部模型生成的ASAP2文件myTopMdl及其引用的文件中的模型merged.a2l.

示例模型RTWDEMO_ASAP2包括合并ASAP2文件的示例。

ASAP2文件的结构

下表概述了ASAP2文件的基本结构,并描述了用于创建文件的每个部分的目标语言编译器(TLC)函数和文件:

  • ASAP2文件的静态部分显示在胆大

  • 函数调用表示() % < FunctionName >

文件部分

ASAP2MAIN.TLC的内容

包含函数定义的TLC文件

文件标题

>

asap2userlib.tlc.

/ begin项目“”

/开始项目“%

asap2setup.tlc.

/开始标题“”
标题内容

/开始头“%
% < ASAP2UserFcnWriteHeader () >

asap2setup.tlc.
asap2userlib.tlc.

/结束头

/结束头

asap2userlib.tlc.

/ begin模块“”
模块内容:

/ begin模块“% < ASAP2ModuleName > "}

asap2setup.tlc.
asap2userlib.tlc.

- a2ml
- mod_par.
——MOD_COMMON
...

% < ASAP2UserFcnWriteHardwareInterface () >

asap2userlib.tlc.

模型依赖模块内容:


调用用户定义函数:

Asap2lib.tlc.

- Record_Layout.
- 特征
——ParameterGroups
- ModelParameters.

... writerecordlayout_templatename()

... writecharaction_templatename()
... WriteCharacteristic_Scalar()

用户/模板/ ......

- 测量
- ExtentSinputs.
- BlockOutputs.

... Writemeasurement()

asap2userlib.tlc.

——COMPU_METHOD

…WriteCompuMethod ()

asap2userlib.tlc.

/结束模块

/结束模块

文件页脚/尾部

% < ASAP2UserFcnWriteFileTail () >

asap2userlib.tlc.

为数据测量和校准创建基于主机的ASAM-ASAP2数据定义文件

此模型显示ASAP2数据导出。ASAP2是自动化和测量系统(ASAM)标准化协会提出的数据定义标准。

打开示例模型

打开示例模型RTWDEMO_ASAP2

Open_System(“rtwdemo_asap2”);

ASAP2是用于测量,校准和诊断系统的数据的非对象化描述。有关ASAM和ASAP2标准的更多信息,请参阅ASAM网站:https://www.asam.net.

ASAP2数据定义是使用Simulink®数据对象和测试点信号实现的。金宝app使用目标语言编译器(TLC),您可以为您的应用程序创建高度自定义的解决方案。金宝搏官方网站有关ASAP2文金宝app件生成的详细信息,请参阅SimulinkCoder®文档。

可以通过选择配置ASAP2文件生成ASAP2接口代码>界面配置参数对话框的窗格。

相关话题