>>返回AUTOSAR系列文章目录<<
A2L文件是基于ASAP2标准,采用ASAP2指定的一套类XML语言的描述性语言(采用开标签和关标签来描述信息)书写,描述ECU的通信等相关的参数,以及标定,观测变量的地址以及物理值计算公式等等的文本格式文件。它用来指导上位机和ECU的通讯交互过程,让他们对交互的信息有一致的认识,从而是上位机工具准确且友好的将ECU中的信息展现给用户。
ASAP2标准是ASAM组织制定的一套标准,该标准规定了上位机(Master)和ECU(Slave)之间的通讯所需要的所有信息(可以是XCPonCAN,XCPonUSB等,也可以是CCP,还可以是UDS),而A2L文件就是ASAP2标准的表现形式。
ASAP2标准是ASAM在1998年提出来的,现在它的名字叫做ASAM MCD-2MC/D,是ASAP标准中的第二部分。
整个ASAP有3部分内容:
/begin PROJECT
/begin HEADER
/end HEADER
/begin MODULE
/begin MOD_PAR
/end MOD_PAR
/begin MOD_COMMON
/end MOD_COMMON
/begin RECORD_LAYOUT
/* Name */ Scalar_BOOLEAN
FNC_VALUES 1 UBYTE COLUMN_DIR DIRECT
/end RECORD_LAYOUT
/begin RECORD_LAYOUT
/* Name */ Scalar_FLOAT32_IEEE
FNC_VALUES 1 FLOAT32_IEEE COLUMN_DIR DIRECT
/end RECORD_LAYOUT
/begin CHARACTERISTIC
/* Name */ K_CheckStatus_flag
/* Long Identifier */ "description"
/* Type */ VALUE
/* Memory Address */ 0
/* Record Layout */ Scalar_BOOLEAN
/* Maximum Difference */ 0
/* Conversion Method */ COMPU_METHOD_0
/* Lower Limit */ 0.0
/* Upper Limit */ 1.0
/end CHARACTERISTIC
/begin CHARACTERISTIC
/* Name */ K_DisplayTime_s
/* Long Identifier */ "description"
/* Type */ VALUE
/* Memory Address */ 0
/* Record Layout */ Scalar_FLOAT32_IEEE
/* Maximum Difference */ 0
/* Conversion Method */ COMPU_METHOD_1
/* Lower Limit */ 0.0
/* Upper Limit */ 1000.0
/end CHARACTERISTIC
/begin CHARACTERISTIC
/* Name */ K_DisplayMax_cnt
/* Long Identifier */ "description"
/* Type */ VALUE
/* Memory Address */ 0
/* Record Layout */ Scalar_UWORD
/* Maximum Difference */ 0
/* Conversion Method */ COMPU_METHOD_2
/* Lower Limit */ 0.0
/* Upper Limit */ 65535.0
/end CHARACTERISTIC
/begin MEASUREMENT
/* Name */ V_DEMO2_flag
/* Long Identifier */ "description"
/* Data Type */ UBYTE
/* Conversion Method */ COMPU_METHOD_0
/* Lower Limit */ 0.0
/* Upper Limit */ 1.0
ECU_ADDRESS 0
/end MEASUREMENT
/begin COMPU_METHOD
/* Name */ COMPU_METHOD_0
/* Description */ "Boolean flag"
/* Conversion Type */ TAB_VERB
/* Format */ "%0.2"
/* Units */ ""
COMPU_TAB_REF VTAB_FOR_COMPU_METHOD_20
/end COMPU_METHOD
/begin COMPU_VTAB
/* Name */ VTAB_FOR_COMPU_METHOD_0
/* Description */ "Boolean flag"
/* Conversion Type */ TAB_VERB
/* Num of Elements */ 2
/* Table Element */ 0 "false"
/* Table Element */ 1 "true"
/end COMPU_VTAB
/begin COMPU_METHOD
/* Name */ COMPU_METHOD_1
/* Description */ "Q = V"
/* Conversion Type */ RAT_FUNC
/* Format */ "%6.4"
/* Units */ "s"
COEFFS 0 1 0 0 0 1
/end COMPU_METHOD
/begin COMPU_METHOD
/* Name */ COMPU_METHOD_2
/* Description */ "Q = V"
/* Conversion Type */ RAT_FUNC
/* Format */ "%3.0"
/* Units */ ""
COEFFS 0 1 0 0 0 1
/end COMPU_METHOD
/begin FUNCTION
/end FUNCTION
/begin GROUPS
/end GROUPS
/end MODULE
/end PROJECT
PROJECT:一个A2L文件只能有一个PROJECT,而PROJECT中至少要有一个Module,A2L文件的注释和C语言的注释方式是一样的,支持 /* 和 // 两种方式。
HEADER:该块里边包含了项目信息,包括项目编号,项目版本等信息
MODULE:该块里边包含了在标定测量层面来描述ECU需要的所有信息,一个ECU对应一个MODULE块,MODULE由许多子块来组成
MOD_PAR:这个块里包含了用于管理ECU的数据,例如客户名,编号,CPU类型,ECU的内存分配等,其中最重要的就是ECU的内存分配,开发人员需要根据ECU内存分段情况定义MEMORY SEGMENT和SEGMENT里边的PAGE,这里的SEGMENT/PAGE的概念和在线标定中的概念是一致的,一个MODULE里边只能出现一次。
MOD_COMMON:该块用来指定ECU的一些标准的一般性描述信息,比如大小端,数据的对齐方式,FLOAT变量的处理方式等,一个MODULE里也只能出现一次。
RECORD_LAYOUT:内存布局,描述数据的存放方式(单个变量,二维表,三维表等)。
/begin RECORD_LAYOUT
/* Name */ Scalar_BOOLEAN
FNC_VALUES /*how the table values of CHARACTERISTIC are deposited in memory.*/
/end RECORD_LAYOUT
FNC_VALUES有4个参数:
Position:table values在structure中的位置
DataType:见A2L文件预定义类型[datatype类型]
IndexMode:见A2L文件预定义类型[IndexMode类型]
AddressType:见A2L文件预定义类型[addrtype类型]
/begin CHARACTERISTIC
/* Name */ unique identifier
/* Long Identifier */ "comment, description"
/* Type */ 见A2L文件预定义类型[Type类型]
/* Memory Address */ 内存地址
/* Record Layout */ 见RECORD_LAYOUT
/* Maximum Difference */ table value最大浮动
/* Conversion Method */ 见COMPU_METHOD
/* Lower Limit */ table values范围
/* Upper Limit */ table values范围
/end CHARACTERISTIC
/begin MEASUREMENT
/* Name */ unique identifier
/* Long Identifier */ "comment, description"
/* Data Type */ 见A2L文件预定义类型[datatype类型]
/* Conversion Method */ 见COMPU_METHOD
/* Resolution */ smallest possible change in bits
/* Accuracy */ possible variation from exact value in %
/* Lower Limit */ table values范围
/* Upper Limit */ table values范围
ECU_ADDRESS Addess in the memory
/end MEASUREMENT
/begin COMPU_METHOD
/* Name */ unique identifier
/* Long Identifier */ "comment, description"
/* ConversionType */ 见A2L文件预定义类型[ConversionType类型]
/* Format */ "%[总长].[小数点位数]"
/* Unit */ "物理单位"
/* Lower Limit */ table values范围
/* Upper Limit */ table values范围
COMPU_TAB_REF 见COMPU_VTAB /*ConversionType选择TAB_VERB时需要*/
COEFFS a b c d e f /*ConversionType选择RAT_FUNC时需要*/
/end COMPU_METHOD
/begin COMPU_VTAB
/* Name */ VTAB_FOR_COMPU_METHOD_0
/* Long Identifier */ "comment, description"
/* Conversion Type */ 只能选择TAB_VERB
/* Num of Elements */ number of value pairs
/* Table Element */ float "string"
/end COMPU_VTAB
FUNCTION:这个块不是必须。
GROUPS:该块是把标定变量和测量变量按照一定的逻辑(比如功能模块)组织起来,在上位机中形成一个下拉菜单,使得用于可以从中选择变量,这块是可选的。
datatype类型 | 描述 |
---|---|
UBYTE |
1字节无符号整型 |
SBYTE |
1字节有符号整型 |
UWORD |
2字节无符号整型 |
SWORD |
2字节有符号整型 |
ULONG |
4字节无符号整型 |
SLONG |
4字节有符号整型 |
A_UINT64 |
8字节无符号整型 |
A_INT64 |
8字节有符号整型 |
FLOAT32_IEEE |
4字节浮点型 |
FLOAT64_IEEE |
8字节浮点型 |
Type类型 | 描述 |
---|---|
VALUE |
|
CURVE |
|
MAP |
ConversionType类型 | 描述 |
---|---|
RAT_FUNC |
有理转换Rational,y=(axx+bx+c)/(dxx+ex+f) |
TAB_VERB |
字符表转换Verbal Table |
IndexMode类型 | 描述 |
---|---|
COLUMN_DIR |
deposited in columns |
ROW_DIR |
deposited in rows |
addrtype类型 | 描述 |
---|---|
PBYTE |
相关内存位置有一个指向该表值或轴点值的1字节指针 |
PWORD |
相关内存位置有一个指向该表值或轴点值的2字节指针 |
PLONG |
相关内存位置有一个指向该表值或轴点值的4字节指针 |
DIRECT |
相关的内存位置具有第一个表值或轴点值,所有其他的都跟随递增地址 |
>>返回AUTOSAR系列文章目录<<