首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

Simulink代码生成:生成ASAP2文件

  • 23-09-22 01:03
  • 3549
  • 11025
blog.csdn.net

本文研究通过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;
  • 1
  • 2

在这里插入图片描述
在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://iyenn.com/index/link?url=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;
  • 1
  • 2

其中的配置如图所示;
在这里插入图片描述
在这里插入图片描述
2)在模型中加一个查表模块,将刚刚的两个参数名填入其中;
在这里插入图片描述
3)然后生成代码,观察以下A2L文件的定义;
在这里插入图片描述
生成的A2L文件中,会把Calibration_Breakpoints定义为一个轴(AXIS_PTS),然后查表值定义为一个CHARACTERISTIC标定量,再引用断点的那个轴。这个和查表得功能也是一致的,也就是通过标定工具修改查表值,来优化查表模块。

5 总结

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

>>返回个人博客总目录

注:本文转载自blog.csdn.net的chhttty的文章"https://blog.csdn.net/u013288925/article/details/115091664"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top