zl程序教程

您现在的位置是:首页 >  其他

当前栏目

A2L文件介绍

文件 介绍
2023-09-11 14:15:48 时间

一、概述

A2L文件定义了标定过程中,上位机与ECU之间的通信所需的信息,可以是XCPonCAN,XCPonUSB、XCPonSPI等。
A2L标准分为三个部分,分别是:

1)ASAP-1 标准定义了标定系统与 ECU 之间的通信接口,其又可以分为两层:ASAP-1a 规定了标定系统与 ECU 通信的物理接口和逻辑接口规范;ASAP-1b 规定了标定系统与 ECU 之间的驱动代码规范。

2)ASAP-2 标准规定了 ECU 内部数据单元描述文件规范,包括标定系统与ECU 通信的配置参数和 ECU 内部数据单元的变量地址、转换方法等详细信息。

3)ASAP-3 标准规定了标定系统远程控制通信协议

三部分之间的关系如图1所示。

在这里插入图片描述

图1 A2L标准

A2L 文件包括(如图2所示):设备参数信息、接口数据信息和 ECU 参数信息。
1.设备参数信息: 描述了 ECU 的基本信息和 ECU 数据单元的一些公共属性;
2.接口数据信息: 描述了标定系统与 ECU 通信时所需配置的接口信息;
3.ECU 参数信息:描述了内部数据单元的详细内容。
在这里插入图片描述

图2 A2L格式

一个A2L文件只能有一个Project(项目),而项目中至少要有一个Module,A2L文件的注释和C语言的注释方式是一样的,支持/**/和//两种方式。

二、图2中不同块的意义如下:

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里也只能出现一次。

CHARACTERISTIC
该块用来定义标定变量,里边包含了可以被标定的变量的名字,地址,长度,计算公式,精度,最大最小值等信息,一个MODULE里边可以出现很多次这样的块,也就是说一个ECU可以有很多的标定变量。

AXIS_PTS
该块用来定义数组或查表变量对应的轴的类型,它将被RECORD_LAYOUT块来引用,一个ECU里边可以有很多种不同的轴类型,用于实现查表和插值,一般很少用到。MEASUREMENT该块用来定义测量变量,里边包含了可以被测量的变量的名字,地址,长度,计算公式,精度,最大最小值等信息,一个MODULE里边可以出现很多次这样的块,也就是说一个ECU可以有很多的测量变量。

COMPU_METHOD
该块用于定义计算公式,及原始值和物理值之前的转换关系,这些公式可以被标定变量和测量变量来引用,从而将原始值转换成便于用户阅读和使用的物理值。COMPU_TAB该块用来定义原始值和物理值的映射关系,是一种特殊的转换关系,它一般应用于枚举变量,例如我们想采集一个代表XCP状态机的变量,分别为0对应DISCONNECTED,1对应CONNECTED,2对应RESUME,那么我们就可以把这样的映射关系定义成一个COMPU_TAB,然后关联到对应的变量上,这时候如果上位机采集到1这样的原始值,它就可以将当前的状态显示成“CONNECTED”字样,方便用于阅读和使用。FUNCTION该块为可选项,很少使用。

GROUP
该块是把标定变量和测量变量按照一定的逻辑(比如功能模块)组织起来,在上位机中形成一个下拉菜单,使得用于可以从中选择变量,这块是可选的。

RECORD_LAYOUT
该块用来定义标定变量的物理存储结构(单个变量,二维表,三维表等)。


上述的这些信息块可以分为两类:
一类是随着ECU和XCP实施完成以后就确定的,这类信息一经确定以后再后续的使用过程中是不需要修改的,例如大小端,MEMORY SEGMENT内存分配等,上述HEADER/MOD_PAR/MOD_COMMON属于这一类;

另外一类是当ECU软件有所调整的时候就会变化的,例如已有的标定变量和测量变量的地址,甚至变量名,或者可能会新增变量,上述CHARACTERISTIC/AXIS_PTS/MEASUREMENT/COMPU_METHOD/COMPU_TAB/FUNCTION /GROUPS/RECORD_LAYOUT属于这一类。

第二类中改动最多的尤其是CHARACTERISTIC和MEASUREMENT快中的变量地址信息,因为每次软件变化重新编译都会造成这部分信息的更新地址更新导致的块信息更新需要手动的更改A2L文件才能使得A2L和当前的软件配置起来,只有两者相匹配才能实现正确的标定和测量

三、 A2L块示例

  1. 测量变量vechicle_speed可以进行如下定义,该变量处于RAM中,对应的地址是0xD0001234,它的范围是[0-230] ,它在ECU中以一个UWORD类型来表示,原始值和物理值的转换关系为:Phy = 0.003 X Raw ,即Ax+B中A=0.003,B=0;
  2. 测量变量xcp_state代表XCP的状态,可以进行如下定义,它处于RAM中,在ECU中的地址是0xD0005678,它是一个枚举量,0对应DISCONNECTED,1对应CONNECTED,2对应RESUME;
  3. 标定变量Current_threshold可以进行如下定义,它处在FLASH标定区域,在ECU中的地址是0x00012345,它的范围是[-20,20],是一个有符号量,精度为0.125,即Phy = 0.125 X Raw

我们前边提到的,在每次软件有更新重新编译以后,会导致这些变量在ECU中的地址有变化,那么上边这些变量对应的ECU ADDRESS条目的内容就需要随着改变,变量的地址信息可以从【编译生成的MAP文件】中获得,然后手动更新到A2L中


补充知识

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述

参考文章

https://zhuanlan.zhihu.com/p/94601470
https://blog.csdn.net/sj063658/article/details/88299577

未引用:
各位知乎大神对学习CAN CCP有什么建议?【知乎高赞】
https://www.zhihu.com/question/54660034

A2L文件介绍
https://mp.weixin.qq.com/s?__biz=MzIxMzI3MzUwOA==&mid=2247483903&idx=1&sn=ff75d2ce697f296640d75b949d6655ab&chksm=97b81f34a0cf9622ca1b056fea23722cbb647c59b1b568dd39c8a6ae49edbe39cbfca4c3fdbc#rd

VCU/BMS基于模型开发—A2L文件生成法则
https://zhuanlan.zhihu.com/p/156868448