A2L文件解析_a2l变量物理值转换-程序员宅基地

本文在 https://blog.csdn.net/sj063658/article/details/88299577 基础上进行了排版优化处理,使其看起来更清晰有条理。版权所有属于原作者

综述

ASAP2标准是一个比较复杂的标准,详细的一条一条讲解标准内容并没有太大的价值,我们将主要以一种应用的方式来带领大家认识ASAP2标准理解作为ASAP2表现形式的A2L文件的作用,最后学会如何阅读和修改A2L文件。首先我们要搞清楚什么是A2L什么是ASAP2标准,简单来说ASAP2标准是ASAM组织制定的一套标准,该标准规定了上位机(Master)和ECU(Slave)之间的通讯所需要的所有信息(可以是XCPonCAN,XCPonUSB等,也可以是CCP,还可以是UDS),而A2L文件就是ASAP2标准的表现形式,符合ASAP2标准的A2L文件主要含有两部分内容:ECU的描述信息和通讯方式的描述信息。 什么是ASAP2标准ASAP2标准是ASAM在1998年提出来的,现在它的名字叫做ASAM MCD-2MC/D,是ASAP标准中的第二部分。整个ASAP有3部分内容,ASAP1描述了上位机(Master)和ECU(Slave)之间的通讯协议,我们这个系列文章介绍的XCP以及它的前身CCP都是属于ASAP1标准,ASAP2规定了Master端如何去描述和解析Slave端的信息,ASAP3规定了如何使用第三方工具和设备操作和控制上位机(Master),例如如何使用台架软件来控制标定测量工具去对ECU进行控制和测试。ASAP2标准目前的版本为v1.6,对应的文件全名为:ASAM_MCD-2MC_DataSpecifcation_V1.6.pdf 什么是A2L文件前边介绍了,A2L文件是基于ASAP2标准书写完成的,那么A2L文件到底是什么东西了。首先它是采用ASAP2指定的一套类XML语言的描述性语言(采用开标签和关标签来描述信息)书写的文件,它里边包含了某个特定的ECU中的软件和系统信息,还包含了上位机和ECU通讯方式的约定,它用来指导上位机和ECU的通讯交互过程,让他们对交互的信息有一致的认识,从而是上位机工具准确且友好的将ECU中的信息展现给用户。

A2L文件结构及内容

一个A2L文件只能有一个Project(项目),而项目中至少要有一个Module,A2L文件的注释和C语言的注释方式是一样的,支持/**/和//两种方式。
上边文件结构中,不同的文件块的意义:

  1. HEADER这个块里边包含了项目信息,包括项目编号,项目版本等信息
  2. MODULE这个块里边包含了在标定测量层面来描述ECU需要的所有信息,一个ECU对应一个MODULE块,MODULE由许多子块来组成1MOD_PAR这个块里包含了用于管理ECU的数据,例如客户名,编号,CPU类型,ECU的内存分配等,其中最重要的就是ECU的内存分配,开发人员需要根据ECU内存分段情况定义MEMORY SEGMENT和SEGMENT里边的PAGE,这里的SEGMENT/PAGE的概念和在线标定中的概念是一致的,请参考在线标定篇章,一个MODULE里边只能出现一次。
  3. MOD_COMMON这个块用来指定ECU的一些标准的一般性描述信息,比如大小端,数据的对齐方式,FLOAT变量的处理方式等,一个MODULE里边只能出现一次。
  4. CHARACTERISTIC这个块用来定义标定变量,里边包含了可以被标定的变量的名字,地址,长度,计算公式,精度,最大最小值等信息,一个MODULE里边可以出现很多次这样的块,也就是说一个ECU可以有很多的标定变量。
  5. AXIS_PTS这个块用来定义数组或查表变量对应的轴的类型,它将被RECORD_LAYOUT块来引用,一个ECU里边可以有很多种不同的轴类型,用于实现查表和插值。
  6. MEASUREMENT这个块用来定义测量变量,里边包含了可以被测量的变量的名字,地址,长度,计算公式,精度,最大最小值等信息,一个MODULE里边可以出现很多次这样的块,也就是说一个ECU可以有很多的测量变量。
  7. COMPU_METHOD用于定义计算公式,及原始值和物理值之前的转换关系,这些公司可以被标定变量和测量变量来引用,从而将原始值转换成便于用户阅读和使用的物理值。
  8. COMPU_TAB这个块用来定义原始值和物理值的映射关系,是一种特殊的转换关系,它一般应用于枚举变量,例如我们想采集一个代表XCP状态机的变量,分别为0对应DISCONNECTED,1对应CONNECTED,2对应RESUME,那么我们就可以把这样的映射关系定义层一个COMPU_TAB,然后关联到对应的变量上,这时候如果上位机采集到1这样的原始值,它就可以将当前的状态显示成“CONNECTED”字样,方便用于阅读和使用。
  9. FUNCTION这个块不是必须。
  10. GROUPS这个块这个把标定变量和测量变量按照一定的逻辑(比如功能模块)组织起来,在上位机工具中形成一个下拉菜单,使得用于可以从中选择变量,这个块不是必须的。
  11. 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块示例测量变量vechicle_speed可以进行如下定义,该变量处于RAM中,对应的地址是0xD0001234,它的范围是[0-230] ,它在ECU中以一个UWORD类型来表示,原始值和物理值的转换关系为:Phy = 0.003 X Raw ,即Ax+B中A=0.003,B=0;测量变量xcp_state代表XCP的状态,可以进行如下定义,它处于RAM中,在ECU中的地址是0xD0005678,它是一个枚举量,0对应DISCONNECTED,1对应CONNECTED,2对应RESUME;标定变量Current_threshold可以进行如下定义,它处在FLASH标定区域,在ECU中的地址是0x00012345,它的范围是[-20,20],是一个有符号量,精度为0.125,即Phy = 0.125 X Raw我们前边提到的,在每次软件有更新重新编译以后,会导致这些变量在ECU中的地址有变化,那么上边这些变量对应的ECU ADDRESS条目的内容就需要随着改变,变量的地址信息可以从编译生成的MAP文件中获得,然后手动更新到A2L中。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/IOT2017/article/details/91971544

智能推荐

oracle 12c 集群安装后的检查_12c查看crs状态-程序员宅基地

文章浏览阅读1.6k次。安装配置gi、安装数据库软件、dbca建库见下:http://blog.csdn.net/kadwf123/article/details/784299611、检查集群节点及状态:[root@rac2 ~]# olsnodes -srac1 Activerac2 Activerac3 Activerac4 Active[root@rac2 ~]_12c查看crs状态

解决jupyter notebook无法找到虚拟环境的问题_jupyter没有pytorch环境-程序员宅基地

文章浏览阅读1.3w次,点赞45次,收藏99次。我个人用的是anaconda3的一个python集成环境,自带jupyter notebook,但在我打开jupyter notebook界面后,却找不到对应的虚拟环境,原来是jupyter notebook只是通用于下载anaconda时自带的环境,其他环境要想使用必须手动下载一些库:1.首先进入到自己创建的虚拟环境(pytorch是虚拟环境的名字)activate pytorch2.在该环境下下载这个库conda install ipykernelconda install nb__jupyter没有pytorch环境

国内安装scoop的保姆教程_scoop-cn-程序员宅基地

文章浏览阅读5.2k次,点赞19次,收藏28次。选择scoop纯属意外,也是无奈,因为电脑用户被锁了管理员权限,所有exe安装程序都无法安装,只可以用绿色软件,最后被我发现scoop,省去了到处下载XXX绿色版的烦恼,当然scoop里需要管理员权限的软件也跟我无缘了(譬如everything)。推荐添加dorado这个bucket镜像,里面很多中文软件,但是部分国外的软件下载地址在github,可能无法下载。以上两个是官方bucket的国内镜像,所有软件建议优先从这里下载。上面可以看到很多bucket以及软件数。如果官网登陆不了可以试一下以下方式。_scoop-cn

Element ui colorpicker在Vue中的使用_vue el-color-picker-程序员宅基地

文章浏览阅读4.5k次,点赞2次,收藏3次。首先要有一个color-picker组件 <el-color-picker v-model="headcolor"></el-color-picker>在data里面data() { return {headcolor: ’ #278add ’ //这里可以选择一个默认的颜色} }然后在你想要改变颜色的地方用v-bind绑定就好了,例如:这里的:sty..._vue el-color-picker

迅为iTOP-4412精英版之烧写内核移植后的镜像_exynos 4412 刷机-程序员宅基地

文章浏览阅读640次。基于芯片日益增长的问题,所以内核开发者们引入了新的方法,就是在内核中只保留函数,而数据则不包含,由用户(应用程序员)自己把数据按照规定的格式编写,并放在约定的地方,为了不占用过多的内存,还要求数据以根精简的方式编写。boot启动时,传参给内核,告诉内核设备树文件和kernel的位置,内核启动时根据地址去找到设备树文件,再利用专用的编译器去反编译dtb文件,将dtb还原成数据结构,以供驱动的函数去调用。firmware是三星的一个固件的设备信息,因为找不到固件,所以内核启动不成功。_exynos 4412 刷机

Linux系统配置jdk_linux配置jdk-程序员宅基地

文章浏览阅读2w次,点赞24次,收藏42次。Linux系统配置jdkLinux学习教程,Linux入门教程(超详细)_linux配置jdk

随便推点

matlab(4):特殊符号的输入_matlab微米怎么输入-程序员宅基地

文章浏览阅读3.3k次,点赞5次,收藏19次。xlabel('\delta');ylabel('AUC');具体符号的对照表参照下图:_matlab微米怎么输入

C语言程序设计-文件(打开与关闭、顺序、二进制读写)-程序员宅基地

文章浏览阅读119次。顺序读写指的是按照文件中数据的顺序进行读取或写入。对于文本文件,可以使用fgets、fputs、fscanf、fprintf等函数进行顺序读写。在C语言中,对文件的操作通常涉及文件的打开、读写以及关闭。文件的打开使用fopen函数,而关闭则使用fclose函数。在C语言中,可以使用fread和fwrite函数进行二进制读写。‍ Biaoge 于2024-03-09 23:51发布 阅读量:7 ️文章类型:【 C语言程序设计 】在C语言中,用于打开文件的函数是____,用于关闭文件的函数是____。

Touchdesigner自学笔记之三_touchdesigner怎么让一个模型跟着鼠标移动-程序员宅基地

文章浏览阅读3.4k次,点赞2次,收藏13次。跟随鼠标移动的粒子以grid(SOP)为partical(SOP)的资源模板,调整后连接【Geo组合+point spirit(MAT)】,在连接【feedback组合】适当调整。影响粒子动态的节点【metaball(SOP)+force(SOP)】添加mouse in(CHOP)鼠标位置到metaball的坐标,实现鼠标影响。..._touchdesigner怎么让一个模型跟着鼠标移动

【附源码】基于java的校园停车场管理系统的设计与实现61m0e9计算机毕设SSM_基于java技术的停车场管理系统实现与设计-程序员宅基地

文章浏览阅读178次。项目运行环境配置:Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:Springboot + mybatis + Maven +mysql5.7或8.0+html+css+js等等组成,B/S模式 + Maven管理等等。环境需要1.运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。_基于java技术的停车场管理系统实现与设计

Android系统播放器MediaPlayer源码分析_android多媒体播放源码分析 时序图-程序员宅基地

文章浏览阅读3.5k次。前言对于MediaPlayer播放器的源码分析内容相对来说比较多,会从Java-&amp;amp;gt;Jni-&amp;amp;gt;C/C++慢慢分析,后面会慢慢更新。另外,博客只作为自己学习记录的一种方式,对于其他的不过多的评论。MediaPlayerDemopublic class MainActivity extends AppCompatActivity implements SurfaceHolder.Cal..._android多媒体播放源码分析 时序图

java 数据结构与算法 ——快速排序法-程序员宅基地

文章浏览阅读2.4k次,点赞41次,收藏13次。java 数据结构与算法 ——快速排序法_快速排序法