上海网站建设的,新手卖家做来赞达网站如何,网站建设内链,企业联系电话目录
1.A2L由来
2.A2L格式
2.1 PROJECT
2.2 MODULE中包含的内容
3. INCA和CANape兼容吗#xff1f; 最近有朋友用Vector ASAP2Editor编译的A2L文件在INCA7.4中无法识别#xff0c;我记得以前做的时候是可以识别的#xff0c;难不成最近有什么变动吗#xff1f;出于好…
目录
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都只有一个ModuleL1 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 FileVERSION V1.7.1PROJECT_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可以从这里入手。 鉴于没有工具可以验证将这方面猜想委托朋友验证一下各位静候结果吧。