CAN/CANFD
CCP/UDS
Bootloader/OTA
ECU/VCU/FCU
Simulink/ECUCoder
Ethernet
Hardware
Download
上一篇
下一篇
A2L文件介绍
一.A2L关键字
-1.1.ASAP2_VERSION
-1.2.PROJECT
-1.3.HEADER
-1.4.MODULE
-1.5.MOD_PAR
-1.6.MOD_COMMON
-1.7.RECORD_LAYOUT
-1.8.MEASUREMENT
-1.9.CHARACTERISTIC
-1.10.COMPU_METHOD
-1.11.GROUP
-1.12.预定义类型
二.A2L文件示例
三.使用A2L文件示例
四.A2L文件编辑工具
五.手动制作A2L文件示例
六.A2L文件小结
回到顶部
A2L文件介绍
一.A2L关键字
-1.1.ASAP2_VERSION
-1.2.PROJECT
-1.3.HEADER
-1.4.MODULE
-1.5.MOD_PAR
-1.6.MOD_COMMON
-1.7.RECORD_LAYOUT
-1.8.MEASUREMENT
-1.9.CHARACTERISTIC
-1.10.COMPU_METHOD
-1.11.GROUP
-1.12.预定义类型
二.A2L文件示例
三.使用A2L文件示例
四.A2L文件编辑工具
五.手动制作A2L文件示例
六.A2L文件小结
回到顶部
# A2L文件介绍 A2L文件遵循ASAM MCD-2 MC标准 (ASAP2),即ASAP描述文件,是用来描述ECU内部数据的文件。A2L文件用来具体描述ECU内部的数据信息,包括数据存储的地址,数据长度、数据类型等。定义了标定过程中,上位机与ECU之间的通信所需的信息,支持CCP、XCP on CAN、XCP on Ethernet 等。 想要实现CCP/XCP测量与标定的功能,需要A2L文件的辅助,它定义了测量标定过程中,上位机与ECU之间通信所需的信息,包括了设备参数信息、接口数据信息和ECU参数信息。 - 设备参数信息: 描述了ECU的基本信息和ECU数据单元的一些公共属性; - 接口数据信息: 描述了标定系统与ECU通信时所需配置的接口信息; - ECU 参数信息:描述了内部数据单元的详细内容。 ## 一.A2L关键字
一个A2L文件只能对应一个项目工程,其中至少包含一个MODUL用于存放标定测量所需的信息,注释与C语言相同(//或者/* */)。 这些信息块可以分为两类: 第一类信息会在ECU与CCP确定交互方案后得到固化,例如HEADER、MOD_PAR、MOD_COMMON等关键字中的信息。 第二类信息在ECU软件做出调整后,可能增加了新的变量,已有的标定变量和监控变量的地址,变量名称都可能发生改变,例如CHARACTERISTIC、MEASUREMENT等关键字中的信息。 在ECU软件做出调整后,CHARACTERISTIC和MEASUREMENT中变量的地址信息更改次数相对最多,每次软件修改后,都会重新编译,使得这部分信息更新,需要从编译生成的map文件中找到相应的变量名称与地址信息,手动的更改A2L文件,才能与当前的软件相配置,进行正确的标定和测量,网络上也有不少脚本可以将MAP文件中的变量地址整合到A2L文件中。 A2L文件中的主要关键字含义如下。 ### 1.1.ASAP2_VERSION
ASAP2版本号,对于不同的标定测量软件要求不同,部分标定软件并不会读取版本号信息,本章使用v1.31的A2L文件作为演示示例。 ### 1.2.PROJECT
包含了整个项目的信息,一个A2L文件对应一个项目工程 。 ### 1.3.HEADER
包含了项目信息,包括项目编号,项目版本等信息。 ### 1.4.MODULE
一个ECU对应一个MOUDLE模块,其中包含了标定测量需要的所有信息,例如MOD_PAR,MOD_COMMON,RECORD_LAYOUT,MEASUREMENT,CHARACTERISTIC,COMPU_METHOD,GROUP等关键字。 ### 1.5.MOD_PAR
用于管理ECU的数据,例如客户名,编号,CPU类型,ECU的内存分配等。 ### 1.6.MOD_COMMON
用来指定ECU的一些标准的一般性描述信息,比如字节格式Intel或Motorola、数据格式的对齐方式、FLOAT变量的处理方式等,一个MODULE里也只能出现一次。 ### 1.7.RECORD_LAYOUT
定义标定类型的物理存储结构,例如:单个变量,二维表,三维表等。 ### 1.8.MEASUREMENT
监控变量,也称为测量量,用于监测ECU运行内存中的变量,例如发动机扭矩、转速、冷却液温度等。每一个监控变量都需要建立自己的变量描述。 /begin MEASUREMENT // 标志符开始 /* Name */ 唯一标识符 /* Long Identifier */ “注释,描述" /* Data Type */ 数据类型,见表1-1中[datatype类型] /* Conversion Method */ 转换方式,见COMPU METHOD /* ResoLution */ 位的最小可能变化 /* Accuracy */ 与精确值的可能偏差 /* Lower Limit */ 最小值 /* Upper Limit */ 最大值 ECU ADDRESS 该监控变量在内存中的地址 /end MEASUREMENT // 结束符 ### 1.9.CHARACTERISTIC
标定变量,修改储存在ECU内存中的变量参数,一般是固定的数值、曲线、MAP图。例如:PID参数、传感器电压曲线、扭矩输出MAP等。 /begin CHARACTERISTIC // 标志符开始 /* Name */ 唯一标识符 /* Long Identifier */ "注释,描述" /* Type */ 变量类型,见表1-1中[type类型] /* ECU Address */ 该标定变量在内存中的地址 /* Record Layout */ 标定类型 /* Maximum Difference */ 最大浮动 /* Conversion Method */ 转换方式,见COMPU METHOD /* Lower Limit */ 最小值 /* Upper Limit */ 最大值 /end CHARACTERISTIC // 结束符 ### 1.10.COMPU_METHOD
用于定义计算公式以及原始值和物理值的转换关系,可以被标定变量和测量变量来引用,从而将原始值转换成便于用户阅读和使用的物理值。 /begin COMPU_METHOD // 标志符开始 /* Name of CompuMethod */ 唯一标识符 /* Long Identifier */ "注释,描述" /* ConversionType */ 见表1-1中[ConversionType类型] /* Format */ “%[总长].[小数点位数]” /* Units */ “物理单位” /* Lower Limit */ 最小值 /* Upper Limit */ 最大值 COMPU TAB REF 见COMPU_VTAB //选择TAB_VERB时需要 Coefficients a b c d e f //选择RAT_FUNC时需要 /end COMPU_METHOD // 结束符 ### 1.11.GROUP
把标定变量和测量变量按照一定的逻辑组织起来,在上位机中形成一个下拉菜单,使得用于可以从中选择变量,属于可选项。 ### 1.12.预定义类型
A2L文件预定义类型如表1-1所示。 | 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 | MAP表 | | **ConversionType类型** | **描述** | | RAT_FUNC | 有理转换Rational, y=(axx+bx+c)/(dxx+ex+f) | | TAB_VERB | 字符表转换Verbal Table | | **IndexMode类型** | **描述** | | COLUMN_DIR | 竖向排序 | | ROW_DIR | 横向排序 | | **addrtype类型** | **描述** | | PBYTE | 相关内存位置有一个指向该表值或轴点值的1字节指针 | | PWORD | 相关内存位置有一个指向该表值或轴点值的2字节指针 | | PLONG | 相关内存位置有一个指向该表值或轴点值的4字节指针 | | DIRECT | 相关的内存位置具有第一个表值或轴点值,所有其他的都跟随递增地址 |
表1-1 A2L文件预定义类型
## 二.A2L文件示例
使用Simulink/ECUCoder搭建模型,编译模型时,会自动生成对应的A2L文件,节省了手动制作A2L文件的时间。 以下是一个简易的A2L文件示例。 ![](images/2023-01-16-15-01-02-image.png) 如上图所示,注释部分提到了一些重要的消息: A2L文件名称:CCP_Test.a2l 模型名称:CCP_Test Simulink代码版本: 9.1 (R2019a) 23-Nov-2018 目标选择:ec5744.tlc 嵌入式硬件选择:Freescale MPC5500 ![](images/2023-01-16-09-30-45-image.png) 如上图所示,标定软件提取的重要信息为: ASAP2版本号:1.31 项目工程:ECUCoder Project 字节顺序(数据格式):MSB_FIRST(即Motorola格式) ![](images/2023-01-16-09-49-45-image.png) 如上图所示,定义的部分标定变量格式为: Scalar_BOOLEAN:格式为1个UBYTE Scalar_UBYTE:格式为1个UBYTE Scalar_BYTE:格式为1个SBYTE Scalar_UWORD:格式为1个UWORD ![](images/2023-01-16-15-02-32-image.png) 如上图所示,A2L文件中测量量的定义为: 变量名称:Test_Sum 数据类型:FLOAT64_IEEE 转换方法:根据CCP_Test_CM_double 最小值:-1.7E+308 最大值:1.7E+308 ECU地址:0x40001110 ![](images/2023-01-16-15-03-39-image.png) 如上图所示,A2L文件中转换方法的定义为: 转换方式的名称:CCP_Test_CM_double 描述:Q = V 转换类型:RAT_FUNC 数据格式:15位数,小数点前5位,小数点后10位 单位:无 系数:f(x)=(0xx+1x+0)/(0xx+0x+1) ![](images/2023-01-16-15-20-04-image.png) 如上图所示,A2L文件中GROUP中的含义: 名称:Root_Function_Call_Subsystem1 描述:在 "CCP_Test/Function-Call Subsystem1"模块中 该GROUP中的标定量:Add_Num1、Add_Num2 该GROUP中的测量量:Test_Sum ## 三.使用A2L文件示例
学习理解与使用A2L文件是电控软件工程师的基础技能之一。本章以[MeCa软件](./download.html)为例讲解了使用A2L的基本方法。 将上述CCP_Test模型生成的S19文件刷写到ECU中,使用MeCa软件加载上述A2L文件(也可使用CANape等软件)。 ![](images/2023-01-16-15-28-17-image.png) 添加标定量与测量量。 ![](images/2023-01-16-15-27-17-image.png) 修改标定量,实现加法功能,由测量量监测结果。 ![](images/2023-01-16-15-28-37-image.png) ## 四.A2L文件编辑工具
使用Simulink/ECUcoder搭建模型并编译模型时,会自动生成A2l文件。如果不使用自动生成的A2L文件,我们可以通过编译器生成的.map与.elf文件手动编辑A2L文件。 本章将介绍一款由英特佩斯公司免费提供的A2L文件的制作工具“ASAP2 Editor”,如图4-1所示,ASAP2 Editor软件[下载地址](./download.html)。 ![](images/6665cfcdcb2cdd8a50c7386872a1cb9e5725f229.PNG)
图4-1 ASAP2 Editor
与查找map文件纯手工编辑A2L文件相比,ASAP2 Editor提供了更加便捷的编辑环境,通过导入编译器生成的.elf文件,能够获取测量标定量的名称与地址,用户可以通过基于对话框的可视化窗口来输入和编辑所有信息,编辑完成后,点击“Generate”即可生成A2L文件。 ## 五.手动制作A2L文件示例
本章使用ASAP2 Editor软件手动制作了一个A2L文件,过程如下。 **1.新建工程** ![](images/2023-03-03-10-30-56.PNG) **2.加载.elf文件** ![](images/e3ff34d0581aa08332238396c42ab7f93de5218d.PNG) **3.设置基础信息** ![](images/2023-03-03-10-59-26.PNG) - Project name:对应关键字PROJECT。 - Module name:对应关键字MODULE。 - Byte order:对应关键字MOD_COMMON中的数据格式的对齐方式。 - Calibration Protocol:选择标定协议,以CCP为例。 - CRO,DTO,Station Address:设定交互的CANID和ECU地址。 如果使用RapidECU的话,CRO ID为0x100,DTO ID为0x101,ECU地址为0x00。 - Associated map file:选择关联的map文件。 **4.添加数据转换公式** ![](images/2023-03-03-13-50-14-image.png) 对应关键字COMPU_METHOD,这里添加一个double类型和一个uint16类型。 **5.添加测量量** ![](images/2023-03-03-14-10-57-image.png) 将左侧需要监测的变量拖入Measurements选项卡中,会自动获取该变量的地址,大小,变量名等信息,修改数据格式与转换方式即可。 **6.添加标定量** ![](images/035f82960f5df028e7679c1de09e6672f13c0f16.PNG) 将左侧需要标定的变量拖入Characteristics选项卡中,会自动获取该变量的地址,大小,变量名等信息,修改数据类型,数据格式,转换方式即可。 **7.生成A2L文件** ![](images/abf808fcb02b5d0ff0440e68af6e6297a90f8e54.PNG) 点击“Build All”,在最下方信息框中查看是否出现错误,点击“Generate”生成A2L文件,使用MeCa,CANape等测量标定软件加载该文件即可对ECU进行测量标定工作。 ## 六.A2L文件小结
A2L文件是描述控制器测量与标定变量的重要文件。在几乎所有用到标定功能的电控系统开发项目中都需要使用到A2L文件,学习理解与使用A2L文件是电控软件工程师的基础技能之一。ECUCoder可以在编译模型的同时自动生成A2L文件。如果需要手动制作A2L文件的话,可以使用[ASAP2 Editor软件](./download.html)。