本文研究通过Simulink生成A2L文件的方法,以及其中的一些注意点。

文章目录

  • 1 ASAP2文件
  • 2 生成标定量、观测量的A2L文件
    • 2.1 建模过程
    • 2.2 配置界面
    • 2.3 生成A2L文件
  • 3 生成结构体的A2L文件
  • 4 生成查表相关的A2L文件
  • 5 总结

1 ASAP2文件

ASAP2文件是用于汽车软件测量和标定的文件,其中包含观测量和标定量的很多信息,如名称、类型、地址等。

通常在模型生成代码的过程中,也会同时把A2L文件生成出来。最后用编译好的elf文件或是map文件来更新A2L中的地址信息。

Matlab给我们提供了一套 asap2.tlc 的目标文件,可以用来生成A2L文件。但是,为了生成正确的标定量和观测量,我们需要对模型和A2L文件的关系有足够的了解。后文就会通过一些例子来研究在不改动tlc文件的前提下,模型和A2L文件之间的对应关系。

2 生成标定量、观测量的A2L文件

本章节会从零开始建模、配置标定量、观测量和模型并生成代码和A2L文件。

2.1 建模过程

1)首先打开Matlab,输入如下命令行,在工作空间中创建一个Signal对象和一个Parameter对象;

>> Measurement_1 = Simulink.Signal;
>> Calibration_1 = Simulink.Parameter;


在Simulink中,Parameter数据对象对应的是标定量(Calibration),Signal数据对象对应的是观测量(Measurement)。

2)双击工作区的两个数据对象,分别进行配置如下;


这里,对两个数据对象分别配置了属性,包括Data type,Dimensions等。可以留意一下这里的属性配置,会和后面的A2L文件中对应起来。

3)建立一个简单的Simulink模型如下;

图中把最左边的 const 模块的值设为了 Calibration_1 ,把输出的信号线明明为 Measurement_1 ,并关联了数据对象(也就是蓝色的小叉子)。

这样,模型和数据字典都建立好了。

2.2 配置界面

在一般情况下,是把A2L文件和C代码一起生成出来了,所以先配置Embedded Coder的ert.tlc文件。具体可以参照《Simulink代码生成: Embedded Coder配置》这篇博客。

同时在设置界面的Interface分类中,勾选上ASAP2 interface,就可以顺便一起生成A2L文件。

2.3 生成A2L文件

上述配置完毕后,保存配置和模型,然后Ctrl + B生成代码如下。

生成的代码中,除了源文件和头文件,还多出了A2L文件。

打开A2L文件后,可以在其中找到模型中引用的标定量 Calibration_1 和观测量 Measurement_1 。在2.1章节所配置的属性信息,如数据类型、注释、最大最小值等,都生成在了ASAP2标准所规定的位置。关于ASAP2格式的描述,可以在ASAM的网站下载文档。http://www.asam.net

3 生成结构体的A2L文件

在Simulink中,非虚拟Bus信号生成代码后对应的是一种结构体类型,可以参考以前的博客《Simulink代码生成: Bus信号及其代码》。
如果同时生成ASAP2文件,其中也会生成结构体的定义。

1)创建一个 Bus_1 类型,其中有两个成员 a,a1;

2)再创建一个Signal对象 Measurement_2,但是要把它的Datatype设为Bus_1这个类型;

3)在模型中用Data Store Read模块输出Measurement_2;

4)然后Ctrl + B生成代码;

A2L文件中对结构体的每个成员都定义了一个MEASUREMENT字段,这和结构体的A2L定义规范是一样的。

再打开_type.h文件,可以看到把 Bus_1 定义了一个结构体类型。

4 生成查表相关的A2L文件

查表模块也是建模中常用的模块,其中的断点和查表值用标定量来表示。这里的标定量生成的A2L文件又会有所不同。

1)在Matlab工作空间中再创建两个标定量,分别代表查表模块的断点和查表值;

>> Calibration_Table_Data = Simulink.Parameter;
>> Calibration_Breakpoints = Simulink.Parameter;

其中的配置如图所示;


2)在模型中加一个查表模块,将刚刚的两个参数名填入其中;

3)然后生成代码,观察以下A2L文件的定义;

生成的A2L文件中,会把Calibration_Breakpoints定义为一个轴(AXIS_PTS),然后查表值定义为一个CHARACTERISTIC标定量,再引用断点的那个轴。这个和查表得功能也是一致的,也就是通过标定工具修改查表值,来优化查表模块。

5 总结

本文研究了一些生成A2L的基本用法,可以满足开发中的大部分需求。

>>返回个人博客总目录

Simulink代码生成:生成ASAP2文件相关推荐

  1. simulink怎么生成vxworks的执行程序_从EPB模型谈谈Simulink代码生成

    前段时间有读者朋友问代码生成的例子,说他正在做EPB的仿真模型,但总是和应用串不到一块去,我这里就从一个简单EPB控制模型来谈谈simulink代码生成,总结代码生成方法的同时也顺便回答他的问题. 1 ...

  2. Simulink代码生成:生成C++类

    博主最近在工作中用Simulink生成C++类的代码,因此将一些感悟记录下来.本文通过一个简单的例子研究Simulink生成C++类的代码以及一些相关配置. 文章目录 1 创建模型 2 C++类生成配 ...

  3. Simulink代码生成(三)——rtw文件(代码生成的中间产物)

    Simulink代码生成(三)--rtw文件(代码生成的中间产物) 文章目录 Simulink代码生成(三)--rtw文件(代码生成的中间产物) 一.代码生成过程 二.model.rtw文件解读 一. ...

  4. 【simulink专题】matlab 2022a如何生成A2L文件设置

    前言 在我们使用的Simulink建模过程中,会使用标定量,最终在模型设置中勾选ASAP2 Interface设置后生成A2l文件达到查看标定量的目的,但是最近有小伙伴发现,在新版MATLAB 202 ...

  5. 基于F28335的Simulink代码生成(四)——如何链接可以访问底层文件的外部源文件和头文件

    基于F28335的Simulink代码生成系列文章目录 基于F28335的Simulink代码生成(一)--搞懂模型的运行逻辑 基于F28335的Simulink代码生成(二)--EPWM模块同步设置 ...

  6. 零基础速成simulink代码生成——结合CANOE的DBC文件CAN报文代码生成 移植到硬件4

    零基础速成simulink代码生成--结合CANOE的DBC文件CAN报文代码生成 移植到硬件4 本次我们将讲解如何将代码放到嵌入式硬件上运行,本次例子将dbc文件导入simulink中,生成代码,不 ...

  7. 如何快速生成A2L文件(ASAP2 Studio):基于“前一版本A2L文件+最新map文件”生成新map文件对应A2L文件

    目录 一.ASAP2 Studio概述: 二.如何在ASAP2 Studio中利用"前一版本A2L文件+最新map文件"生成新map文件对应A2L文件: 2.1 在ASAP2 St ...

  8. Simulink代码生成(四)——rtw文件(TLC命令对rtw文件的访问、编辑、内容追加)

    # Simulink代码生成(四)--rtw文件(TLC命令对rtw文件的访问.编辑.内容追加) 文章目录 # Simulink代码生成(四)--rtw文件(TLC命令对rtw文件的访问.编辑.内容追 ...

  9. 搜索的php mysql代码生成器_PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)...

    根据 Mysql 里的字段 自动生成 类文件: 但需要导入: require_once ./db/ez_sql_core.php; require_once ./db/ez_sql_mysql.php ...

最新文章

  1. CentOS 7 用yum安装 MySQL
  2. 9. 混合模型和EM(1)
  3. (27)TLB番外篇——ShadowWalker
  4. Java web—Servlet的请求与响应
  5. 【数据结构与算法】之深入解析“买卖股票的最好时机III”的求解思路与算法示例
  6. 函数作用域导致的问题
  7. 【转】用Fiddler做抓包分析详解
  8. 使用sqlldr导入文本数据到oracle
  9. C++11 并发指南四(future 详解一 std::promise 介绍)
  10. [Perl系列—] 1. 清空目录及目录中的所有文件
  11. JAVA基础学习day25--Socket基础二-多线程
  12. SQL SERVER中的二种获得自增长ID的方法
  13. 算法——X^3+Y^3+Z^3=XYZ(水仙花数)
  14. 稳定版本php源包下载,PHPWind历史版本及升级包下载(v1.0.0 - v9.0.2、Ofstar to PW)20170501更新...
  15. excel多个窗口独立显示_办公软件操作技巧060:如何快速切换excel工作簿
  16. android多点触控参数,转 android 下的webview 设置多点触控放大
  17. MXNet中take函数的用法
  18. 机械硬盘显示数据错误循环冗余检查文件如何寻回
  19. [C++]牛客 WY11 星际穿越
  20. dede config.chche.inc.php,dedecms 后台修改系统设置,但是config.cache.inc.php文件不能写入...

热门文章

  1. python 3d引擎_3d引擎列表
  2. 10 道 Python 趣味题,看看你会几个
  3. mysql 大地坐标系_国家2000大地坐标系CGCS2000(EPSG4490和EPSG4479)参数
  4. Function中的apply函数的应用
  5. MongoDB小结09 - update【定位修改器】
  6. java使用斑马打印机发送ZPL 参数说明
  7. java aba问题_JAVA与ABA问题
  8. 高保真Axure原型设计实战 - 自适应后台框架
  9. 新媒体运营教程:活动运营的活动预算与执行推广!
  10. 关于浏览器请求PHP一次请求执行了两次