汽车标定技术(五)--基于模型开发如何生成完整的A2L文件(1)

1 数据对象的创建

Ctrl+H打开Model Explorer,在Base workspace中点击工具栏add,出现如下界面,

        可以看到Simulink提供了多种数据类型

  1. Matlab Variable:
  2. Simulink.Parameter:使用该数据对象表示工程应用中的标定量
  3. Simulink.Signal:用于生成观测量
  4. Simulink.NumericType:指定浮点数、整数,通常用于数据定点化处理
  5. Simulink.AliasType:为数据类型创建别名

        常用的也就是这些,具体还有其他的可以参考help。

        添加两个parameter,如下图所示:

   将参数的名字改为标定量的名字,如下图(通常标定量命名规则按三段来分block_function_uint_C)

        然后就是根据需求对数据类型的处理,在右边可以进行选择,如下图

(试想,如果全用这种方式来进行数据的管理有多累,可以采用excel的方式;他们用python可以实现当然可否用matlab来读取excel写相应脚本?)已完成matlab来处理

        然后建立相应的观测量,如下图:

        使用constant和out建立如下模型,将constant参数名改为标定量的名称,

       右键输出信号的信号线,选择properties,命名为观测量(按照依相的方式,也将观测量做出一个类似于constant的模块,需要好好研究一下)

        PS:需要注意是,两个标定量均为uint8类型而观测量为uint16这样simulink会出现编译错误,因此可以在加法模块上选择output data type为下图所示,这样就强制与后面的类型匹配。

        因此,要想做出自己的模型开发要做出标定量模块封装、常用算数符号封装后面数据类型匹配观测量封装,(后续继续添加

2 Code的配置

        至此便完成了一个简单的模型,ctrl+E打开configuration parameter,

solve界面下选择定点步长,因为是在单片机上运行。

选择optimization>Signals and Parameters,选取Inline Parameter(为什么

选择Code Generation,选择ert.tlc,打钩generate code only

Report>Create code generation report

Interface>data exchange,选择asap2生成相应a2l(不包含头部分)

最后进行编译(ctrl+B),完毕后生成相应的报告

       在与基础软件集成时,要将Model files和Utility files的文件全部放到基础软件中。(还可以优化数据类型的定义)

3 自动在生成的代码中添加#pragma语句

3.1 为什么添加#pragma语句

       通常情况下,编译器会给变量自动分配内存地址,但是标定来说,标定量和观测量必须放到指定位置才能实现标定和观测的功能, #pragma语句就可以实现上述功能。

       不同编译器对于地址的分配的语句不同,例如hightec,从该工程的ld文件中可以看到区域名。

        那么在拿到应用层代码之后首先就是要对变量进行地址分配,编译完成后。

       但是实际上在工程应用中,标定量的定义常用到ConstVolatile、观测量常用到Volatile

3.2 const, volatile释义

        const含义是“请做为常量使用”,而并非“放心吧,那肯定是个常量”。

        volatile的含义是“请不要做自以为是的优化,这个值可能变掉的”,而并非“你可以修改这个值”。

1)const, volatile的作用以及起作用的阶段

const只在编译期有用

        在运行期无用。const在编译期保证在C的“源代码”里面,没有对其修饰的变量进行修改的地方(如有则报错,编译不通过),而运行期该变量的值是否被改变则不受const的限制。

volatile在编译期和运行期都有用

          在编译期告诉编译器:请不要做自以为是的优化,这个变量的值可能会变掉;

          在运行期:每次用到该变量的值,都从内存中取该变量的值。

2)const, volatile同时修饰一个变量

合法性  “volatile”的含义并非是“non-const”,volatile 和 const 不构成反义词,所以可以放一起修饰一个变量。

       同时修饰一个变量的含义

       表示一个变量在程序编译期不能被修改且不能被优化;在程序运行期,变量值可修改,但每次用到该变量的值都要从内存中读取,以防止意外错误。

3.3 模型生成代码自动添加#pragma语句

       如果数据很少的、或者应用层软件标定量和观测量全部集成在一个头文件和c文件中,使用手动的方式进行添加也可以,但是一旦数据量剧增或者变量在不同文件下,这样在做处理时就会比较麻烦,因此考虑在代码生成时将变量集中到一个.h .c文件,并且自动添加相应的#pragma语句。

Simulink数据类型里提供了这样一种方式,

        首先创建一个数据类型,例如 Demo_Mea_mp = Simulink.Signal,

      在Storage class下选择Volatile类型。会弹出Custom attribute对话框,输入想生成的文件名.h和.c。生成的代码如下:

       可以看到能够将变量统一放到同一文件,但是还是需要手动添加#pragma语句。

       如何自动添加该语句呢?我们可以来分析一下Simulin.Parameter这个数据类型的特点。

       使用cscdesigner打开自定义类编辑器

在memory section中可以看到

        在这里添加#pragma语句即可,但是simulink自带的类又全是只读的,所以需要自己建立一个类(参考matlab官网help:Define Data Classes)。

        首先找到路径%matlabpath%\toolbox\simulink\simulink\dataclasses

        在此目录下建立一个文件夹(以+UserName命名)

        在+App中添加@Parameter和@Signal两个文件夹,可以将mpt中的parameter.m、signal.m复制过来进行修改。

        需要修改的几个地方

将custom和global注释,不然会报错(why)

输入指令cscdesigner(‘App’)

      然后选择编辑数据类型的特性,每一项都需要。这里我们把ConstVolatile进行处理,在Memory section中输入相应的#pragma语句即可。

       最后编译生成的文件有

       代码如下:

4. 自定义生成完整A2L文件

        to be continue...


汽车标定合集:

汽车标定技术(一):XCP概述-CSDN博客

汽车标定技术(二)--基于XCP的标定测量实战-CSDN博客

汽车标定技术(三)--XCP协议如何支持测量功能-CSDN博客

汽车标定技术(四)--问题分析:多周期测量时上位机显示异常-CSDN博客

汽车标定的ASAM MCD-1 POD-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/124679.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CSS 渐变、文本效果、字体

一、CSS3渐变: CSS3渐变(gradient)可以在两个或多个指定的颜色之间显示平稳的过渡。CSS3定义了两种类型的渐变(gradient):线性渐变(linear gradient)-向下/向上/向左/向右/对角方向…

MySQL–第4关:查询用户日活数及支付金额

MySQL–第4关:查询用户日活数及支付金额 – WhiteNights Site 标签:MySQL 非常好的题,爱来自中国。 题目 没啥用 任务描述 现有3张业务表,详见如下: 需要输出结果如下,没有支付的日期不需要显示,请写出对…

设计模式——建造者模式

目录 建造者模式盖房项目需求基本介绍四个角色实例代码注意事项和细节抽象工厂模式 VS 建造者模式 建造者模式 盖房项目需求 传统方式:打地基,砌墙,封顶 盖房子步骤 public abstract class AbstractHouse {// 地基public abstract void b…

【小白专用】PHP中的JSON转换操作指南 23.11.06

一、JSON的基础知识 1.1JSON数据格式 JSON数据格式是一组键值对的集合,通过逗号分隔。键值对由“键”和“值”组成,中间使用冒号分隔。JSON数据格式可以嵌套,而且可以使用数组 二、PHP中的JSON函数 JSON的操作需要使用编程语言进行处理&am…

软考软件设计师刷题笔记整理

软件设计师 HTML代码中,创建指向邮箱地址的链接正确的是ARP攻击造成网络无法跨网段通信的原因是在软件开发过程中进行风险分析关于哈夫曼树的叙述关于风险管理的叙述ISO/IEC9126软件质量模型关于结构化开发方法的叙述分布式数据库中的分片透明、复制透明、位置透明和…

day61--单调栈2

503.下一个更大元素II 42. 接雨水 第一题:下一个更大元素2 给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之…

前端工程化(vue2)

一、环境准备 1.依赖环境:NodeJS 官网:Node.js 2.脚手架:Vue-cli 参考网址:安装 | Vue CLI 介绍:Vue-cli用于快速的生成一个Vue的项目模板。主要功能有:统一的目录结构,本地调试&#xff0…

小程序day04

目标 自定义组件 创建组件 引用组件 局部引用 全局引用 组件的函数定义到metods节点中,梦回vue2. 样式 数据,方法,属性 下划线开头的称为自定义方法,非下划线开头的都是事件处理函数。 神特么,this.datathis.pro…

一种ESDF地图实现方法:FIESTA

背景: 在机器人定位、行动规划中建图是一个很重要的工作,只有通过感知器感知到自己在哪、周围有什么;才能为下一步行动作出决策的依据。然而要知道自己在哪,就必须要有一个整体规划和参照也就是所谓的地图。地图相当于是一次规划…

c语言 结构体 简单实例

结构体 简单例子 要求&#xff1a; 结构体保存学生信息操作 代码 #include <stdio.h>//定义结构体 struct student{int ID;char name[20];char sex;char birthday[8];int grade; };int main(){int number;printf("请输入学生个数&#xff1a;");scanf(&quo…

java入门,记一次mysql函数使用

一、前言 记一次mysql函数使用&#xff0c;要求给一个字段进行拼接&#xff0c;然后MD5加密&#xff0c;再转换成大写。这里都是有现成的函数&#xff0c;所以记录下来 二、函数使用 1、拼接函数&#xff1a; concat(字符串1,字符串2) select concat(字符串1,字符串2); 2、…

【Linux】:git基本操作_添加文件_两种场景_查看.git文件 || git修改文件 || 版本回退

&#x1f3af;添加⽂件–场景⼀ &#x1f3af;在包含.git的⽬录下新建⼀个ReadMe⽂件&#xff0c;我们可以使⽤ git add 命令可以将⽂件添加到暂存区&#xff1a; • 添加⼀个或多个⽂件到暂存区&#xff1a; git add [file1] [file2] … • 添加指定⽬录到暂存区&#xff0c;…

Tomcat,jdk下载配置(发布项目)

Tomcat&#xff0c;jdk下载&#xff0c; 远程连接 启动以下服务 高级设置 允许别人连接进来 网上搜索jdk下载即可 双击下一步即可 下一步 输入java&#xff0c;看有没有安装成功 这是安装成功的 Tomcat就可以安装了 和以上操作一样&#xff0c;在网上下载安装包&#xff0c;…

11月9日星期四今日早报简报微语报早读

11月9日星期四&#xff0c;农历九月廿六&#xff0c;早报微语早读。 1、中国数字经济规模十年增至50.2万亿元&#xff0c;网民规模增至10.79亿&#xff1b; 2、世界互联网发展指数排名发布&#xff1a;中国位居第二&#xff1b; 3、中国—拉美开发性金融合作机制扩容&#x…

【Mysql】where 条件子句之逻辑运算符

逻辑运算符 and &&or ||not ! student表 一.查询分数在80 - 90之间 and写法 &&写法 区间&#xff08;between ....and......) 二.查询分数不为88 &#xff01;写法 not写法 三.查询分数大于88或者年龄小于22 满足其中一个条件即可 or写法 ||写法

CocosCreator3.8原生引擎源码研究

1. Cocos Creator引擎架构图 2. 原始引擎源码流程图 下图中包含Android native层引擎到js适配层的启动和主循环的启用流程和必要说明&#xff0c;本猿比较懒&#xff0c;暂时不细述了&#xff0c;各位看官直接看图吧&#xff0c;还在细化扩充&#xff0c;后续逐渐更新。。。 版…

润色论文Prompt

你好&#xff0c;我现在开始写论文了&#xff0c;我希望你可以扮演帮我润色论文的角色我写的论文是关于xxxxx领域的xxxxx&#xff0c;我希望你能帮我检查段落中语句的逻辑、语法和拼写等问题我希望你能帮我检查以下段落中语句的逻辑、语法和拼写等问题同时提供润色版本以符合学…

【阿里云】任务2-OSS对象存储教程(找我参加活动可获得京东卡奖励)

目录 前言说明第一步第二步第三步&#xff1a;开通并使用OSS传输加速三、清理第四步-提交作品第五步-提交记录到小程序 前言 本次任务是阿里云官方发出的&#xff0c;每个任务30软妹币&#xff0c;欢迎大家加入我的活动群&#xff0c;门槛很低&#xff0c;所有人都可以参加&…

CSS实现文本左右对齐

因为文本里面有中午符号&#xff0c;英文&#xff0c;英文符号等&#xff0c;导致设置宽度以后右侧凌乱&#xff0c;可以通过以下代码设置样式&#xff0c;让文本工整对齐。 让我们看一下设置前和设置后的对比图片&#xff1a; 效果图如下&#xff1a;&#xff08;左边是设置…

小程序多文件上传 Tdesign

众所周知&#xff0c;小程序文件上传还是有点麻烦的&#xff0c;其实主要还是小程序对的接口有诸多的不便&#xff0c;比如说&#xff0c;文件不能批量提交&#xff0c;只能一个个的提交&#xff0c;小程序的上传需要专门的接口。 普通的小程序的页面也比普通的HTML复杂很多 现…