当前位置: 首页 > news >正文

汽车标定技术--A2L格式分析

     

目录

1.A2L由来

2.A2L格式

2.1 PROJECT

2.2 MODULE中包含的内容

3. INCA和CANape兼容吗? 


        最近有朋友用Vector ASAP2Editor编译的A2L文件在INCA7.4中无法识别,我记得以前做的时候是可以识别的,难不成最近有什么变动吗?出于好奇,我从A2L由来、格式等方面进行解析。

1.A2L由来

        我们知道,要车规ECU的标定和测量,标定上位机如INCA\CANape是需要知道ECU内部标定量观测量的信息(访问地址、转换公式、单位等),还需要知道如何访问这些变量(只读、还是可读写)。

        所以,ASAM组织就提出了一个标准ASAM MCD-2 MC(最初叫ASAP2),用于定义上面提到的这些内容的格式。这个标准定义全名叫做ECU Measurement and Calibration Data Exchange Format,很明显,这是一个描述文件格式标准,他们把这种格式叫做a2l(ASAM MCD-2 MC Language),久而久之,大家都把这个描述文件叫做A2L文件了。一说就知道是干标定的。

2.A2L格式

         A2L文件是一种ASCII格式可读文件,记事本都可以打开,通常需要指定编码格式为UTF-8,如果没有指定就使用默认的Latin-1。

        根据官网介绍,A2L文件至少应包含如下四个层级:

层级描述备注
PROJECT一个A2L一个PROJECT,描述当前项目所有标定测量数据

APAP2_V:描述使用的那一版的标准

A2ML_V::描述使用那一半的AML标准

Module每个module表示一个ECU        目前接触的A2L都只有一个Module
L1 Keyword用于描述ECU的内部所有实际信息包括A2ML、曲线坐标描述、转换公式、标定量等等,有关键词定义
L2 Keyword从L1中继承下来的特性这个一般是对齐方式,例如ALIGNMENT_BYTE等

        今天主要聊一下上文的前三个层级

2.1 PROJECT

        一个A2L文件包含一个PROJECT,描述当前项目所有标定测量数据,在声明PROJECT之前,通常是把ASAP2_VERSION说明出来。猜测CANape和INCA根据自己软件版本首先识别ASAP2这个版本。

        完成版本定义后,继续描述当前项目编号和ECU软件、ECU所有信息。

示例Demo如下:

ASAP2_VERSION 1 71
/begin PROJECT ASAP2_Example ""/begin HEADER "ASAP2 Example File"VERSION "V1.7.1"PROJECT_NO P2016_09_AE_MCD_2MC_BS_V1_7_1_main/end HEADER/begin MODULE Example "".../end MODULE/end PEOJECT

        MODULE表示一个ECU的所有数据描述,因此如上示例所示,MODULE必须处在一个PROJECT中。 

2.2 MODULE中包含的内容

       既然MODULE中包含了ECU所有的描述信息,那么有哪些关键字需要我们注意呢?

ECU描述关键字描述
A2ML用于定义标定测量上位机和ECU之间通信参数的格式
IF_DATA用于定义标定测量上位机和ECU之间通信参数的具体值,包括协议栈配置,该部分语法要与A2ML语法一致
MOD_COMMON定义MODULE其他参数,字节对齐、字节顺序、ECU内存中数据的大小和存储
MOD_PAR定义MODULE特定参数,例如CPU名、版本、ECU指定参数;同时还包括ECU memory定义(通过关键字MEMORY_SEGMENT)

        上面这一部分,我通常把它整体叫做头部份,因为标定量、测量量这些都是可以通过Simulink生成的,因此研究比较少,但还是把一些关键字列举如下:

标定测量关键字描述
CHARACTERISTIC描述标定量的关键词,由地址、格式、转换方式、上下限构成
MEASUREMENT描述观测量的关键词,与标定量关键词类似
FUNCTION用于组测量,捆绑标定量和观测量一起使用
BLOB用于定义标定量的对象,如每个数组的字节

        当然还有标定量、观测量的转换公式关键字 COMPU_METHOD、COMPU_TAB(转换列表)等,这里就不一一提及了。

        那么具体到A2L文件里,上述关键字应该怎么用呢?我们一一来看

        最最重要的文件,A2ML

        A2ML必须最先定义,因为它要为后续关键字提供类型定义,比如说协议层的参数结构体类型,DAQ列表结构体类型,举例如下:

/begin A2MLblock "IF_DATA" taggeunion if_data{"XCP" struct {taggedstruct {block "PROTOCOL_LAYER" struct {uint;  /* XCP protocol layer version, current 0x100*/uint;  /* T1 [ms] Time-out of the standard CTO, for example CONNECT*/uint;  /* T2 [ms] Time-out of the checksum calculation*/uint;  /* T3 [ms] Time-out of the non-volatile memory programming:PROGRAM_START, PROGRAM_VERIFY, PROGRAM_PREPARE*/uint;  /* T4 [ms] Time-out of the non-volatile memory programming: PROGRAM_CLEAR*/uint;  /* T5 [ms] Time-out of the non-volatile memory programming: PROGRAM, PROGRAM_RESET, PROGRAM_MAX*/uint;  /* T6 [ms] Time-out of the command CONNECT(USER_DEFINED)*/uint;  /* T7 [ms] Time-out of the pre-action*/uchar; /* MAX_CTO: Indicates the maximum length of a CTO packet in bytes. */uint;  /* MAX_DTO: Indicates the maximum length of a DTO packet in bytes. */enum {"BYTE_ORDER_MSB_LAST" = 0,"BYTE_ORDER_MSB_FIRST" = 1};};};};
/end A2ML

       那么上述A2ML如何使用的呢?我们来看,关键词PROTOCOL_LAYER,举例如下:

/begin IF_DATA XCP /begin PROTOCOL_LAYER0x100 0x20 0x20 0x20 0x20 0x20  0x20 0x20 0x8  0x8 BYTE_ORDER_MSB_LAST ADDRESS_GRANULARITY_BYTE/end PROTOCOL_LAYER
/end IF_DATA XCP

        是不是非常清晰,0x100,表示当前XCP协议使用的1.00版本,后面数字就与A2ML里定义的一样,比如说各种timeout时间阈值,CTO长度等等。大家可以根据自己的A2L进行分析。

3. INCA和CANape兼容吗? 

        朋友最近遇到的问题如下:

        首先是没有正确的项目描述,看了一下具体文档,由PROJECT关键字,那是否是ASAP2版本问题呢?

        修改版本之后,暂时能获取到项目,但又出现了如下问题:

        这里提到了AML的描述变化了,很明显,用CANape带的ASAP2Editor修改的A2L文件生成的头部份是与INCA有出入的。因此需要项目对比A2ML描述。

        经过对比发现描述上有如下区别:

        可以看到INCA报错也说没有定义 ECU_ACCESS_ALLOWED,可以从这里入手。

        鉴于没有工具可以验证,将这方面猜想委托朋友验证一下,各位静候结果吧。

 

 

相关文章:

汽车标定技术--A2L格式分析

目录 1.A2L由来 2.A2L格式 2.1 PROJECT 2.2 MODULE中包含的内容 3. INCA和CANape兼容吗? 最近有朋友用Vector ASAP2Editor编译的A2L文件在INCA7.4中无法识别,我记得以前做的时候是可以识别的,难不成最近有什么变动吗?出于好…...

Linux操作系统使用及C高级编程-D9D10Linux 服务搭建与使用

TFTP服务器 TFTP(Trivial File Transfer Protocol)即简单文件传输协议,是TCP/IP协议中一个用来在客户机与服务器之间进行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。端口号为69 1、使用客户服务器方式和使用UDP数据…...

git下载安装配置及Git在Gitee上拉取和上传代码教程

一、Git下载安装和配置 Git是一个分布式版本控制系统,用于跟踪文件的变化并协作开发。以下是安装和配置Git的简单步骤: 安装Git 下载Git安装程序:Git下载地址。 运行安装程序,按照提示进行安装。 在安装过程中,选择…...

ospf路由选路及路由汇总

一、知识补充 1、ABR和ASBR 1.1 ABR ABR指的是边界路由,通常位于两个或多个区域之间,用于在不同的OSPF区域之间传递信息。当一个路由器同时连接到两个或多个区域时,它就成为了ABR,它需要维护每个区域的拓扑信息和路由表&#x…...

Oracle 11g 多数据库环境下的TDE设置

19c的TDE wallet的设置是在数据库中设置的,也就是粒度为数据库,因此不会有冲突。 而11g的设置是在sqlnet.ora中,因此有可能产生冲突。 这里先将一个重要概念,按照文档的说法,wallet是不能被数据库共享的。 If there …...

vue3使用pinia实现数据缓存

文章目录 前言一、pinia是什么?二、安装pinia三、注册pinia四、使用pinia定义数据及方法使用 优化如有启发,可点赞收藏哟~ 前言 vue2以前一直使用vuex实现状态管理 vue3之后推出了pinia… 一、pinia是什么? 直观、类型安全、轻便灵活的Vue …...

【CSS】min 和 max 函数(设置最大最小值)

文章目录 min() 函数:允许你从逗号分隔符表达式中选择一个最小值作为 CSS 的属性值 width: min(1vw, 4em, 80px);max() 函数:让你可以从一个逗号分隔的表达式列表中选择最大(正方向)的值作为属性的值 width: max(10vw, 4em, 80p…...

ip地址跟wifi有关系吗

​你可能已经听说过IP地址和Wi-Fi这两个词,但你有没有想过它们之间是否有关系呢?在这篇文章中,我们将深入探讨IP地址与Wi-Fi之间的密切联系。从基本概念到应用实例,虎观代理小二二将为您解答这个问题。 首先,让我们来了…...

[算法学习笔记](超全)概率与期望

引子 先来讲个故事 话说在神奇的OI大陆上,有一只paper mouse 有一天,它去商场购物,正好是11.11,商店有活动 它很荣幸被选上给1832抽奖 在抽奖箱里,有3个篮蓝球,12个红球 paper mouse能抽3次 蒟蒻的p…...

SpringCloud相关

文章目录 Gateway动态路由灰度策略 FeignRibbon SpringCloud五大组件分别对应(1)服务注册与发现(2)客服端负载均衡(3)断路器(4)服务网关(5)分布式配置 Gatewa…...

在 Linux 和 Windows 系统下查看 CUDA 和 cuDNN 版本的方法,包括使用 nvcc 命令

一直都比较头疼cuda与cudnn版本查看问题,两个系统不一样也不好查看,命令不通用 Linux 查看 CUDA 版本 方法一: nvcc --version或 nvcc -V如果 nvcc 没有安装,那么用方法二。 方法二: 去安装目录下查看&#xff…...

4.10每日一题(二元函数极值相关重要性质,反复学习)

...

idea项目中java类名出现带 j 小红点,如何解决?

目录 一、问题描述 二、问题解决方案 1、寻找异常问题 2、解决方案 2.1常规操作方法 2.2 快速操作方法 一、问题描述 一打开idea的java项目,发现所有的文件边上都有带J的大红点 虽然,在 git bash 中进行编译时无异常。 但是视觉上给人的感受就是…...

生产环境_移动目标轨迹压缩应用和算法处理-Douglas-Peucker轨迹压缩算法

场景: 我目前设计到的场景是:即在地图应用中,对GPS轨迹数据进行压缩,减少数据传输和存储开销,因为轨迹点太频繁了,占用空间太大,运行节点太慢了,经过小组讨论需要上这个算法&#x…...

HINSTANCE是什么?

HINSTANCE 就是 HMODULE:...

uniapp小程序定位;解决调试可以,发布不行的问题

遇见这个问题;一般情况就两种 1、域名配置问题; 2、隐私协议问题 当然,如果你的微信小程序定位接口没开启;定位也会有问题; 第一种,小程序一般是腾讯地图;所以一般都会用https://apis.map.qq.co…...

C++学习 --pair

目录 1, 什么是pair 2, 创建pair 2-1, 标准数据类型 2-2, 自定义数据类型 3, 查询元素 3-1, 标准数据类型 3-2, 自定义数据类型 1, 什么是pair 数据以键值对形式存放的容器&…...

Android Frgment中onActivityResult无效的问题

前言 最近在fragment中使用二维码扫描 发现拿不到onActivityResult返回 查了资料说是启动模式 或者是返回值为负数 断点调试 发现根本没走onActivityResult方法 问题 onActivityResult 在附属Activity中被拦截了 所以没有触发该方法 解决 在Fragment所依赖的Activity中执…...

【C#二开业务冠邑】通过界面查看数据来源

前言 重构框架(CS【C#】转BS【Java】)时,突然发现公司的代码和数据库,有部分都没有写注释,嘎嘎,这不非常影响开发效率,于是乎,开始帮公司整理表结构和数据来源,也从而加…...

使用大语言模型 LLM 做文本分析

本文主要分享 传统聚类算法 LLM与嵌入算法 嵌入算法聚类 LLM的其他用法 聚类是一种无监督机器学习技术,旨在根据相似的数据点的特征将其分组在一起。使用聚类成簇,有助于解决各种问题,例如客户细分、异常检测和文本分类等。尽管传统的聚…...

ES6从入门到精通:前言

ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

PHP和Node.js哪个更爽?

先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

12.找到字符串中所有字母异位词

&#x1f9e0; 题目解析 题目描述&#xff1a; 给定两个字符串 s 和 p&#xff0c;找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义&#xff1a; 若两个字符串包含的字符种类和出现次数完全相同&#xff0c;顺序无所谓&#xff0c;则互为…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...