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

news2024/12/24 21:37:14

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博客

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python爬虫怎么翻页 ?

首先,你需要安装相关的库。在你的命令行窗口中,输入以下命令来安装所需的库: pip install requests beautifulsoup4然后,你可以使用以下代码来爬取网页内容并翻页: package mainimport ("fmt""net/htt…

DAY 12 结构体 共用体 枚举02

1.结构体 结构体对齐(了解) 概述 typedef struct Data01 { char a; int b; }Data01; typedef struct Data02 { char a; char b; }Data02; void fun01(){ printf("%ld\n",sizeof(Data01)); printf("%ld\n",sizeof(Data02)); } 特点&#xff…

QuantLib学习笔记——一个简单的价值估算案例

⭐️ 前言 QuantLib很强大,它实现了很多金融工具及其价值估算方法,从最简单的折现模型,到利用BSM模型对期权进行定价,覆盖面相当齐全。本文以一个简单的净现值估算案例,开启笔者金融工具估值的旅程。 开上豪车&#…

〔003〕虚幻 UE5 基础教程和蓝图入门

✨ 目录 🎈 新建项目🎈 快捷操作🎈 镜头移动速度🎈 新建蓝图关卡🎈 打印字符串🎈 蓝图的快捷键🎈 场景中放置物体🎈 通过蓝图改变物体位置🎈 展现物体运动轨迹&#x1f3…

泛微移动管理平台E-mobile lang2sql接口任意文件上传漏洞

一、漏洞描述 泛微e-mobile,由高端OA泛微专业研发,是业内领先的移动OA系统,提供移动审批,移动考勤,移动报表,企业微信等丰富办公应用,支持多种平台运行,灵活易用安全性高。 e-mobile可满足企业日常管理中的绝大部分管理需求, 诸如市场销售、项目、采购、研发、客服…

了解高防服务器的工作原理

在当今互联网时代,网络安全问题日益突出,各种网络攻击层出不穷。为了保护企业的网络安全,高防服务器应运而生。那么,你是否了解高防服务器的工作原理呢?下面就让我们一起来探索一下。 高防服务器是一种能够有效抵御各种网络攻击的…

“小众”与“竞争”:打造爆款新能源车型的两大方法

引言:在动荡的新能源汽车市场中,品牌如何从众多竞争者中脱颖而出,捕捉消费者的心呢?是否是从广袤的"主流"市场着手,还是从具有潜力的”小众"市场切入?或者,是否需要重新定义与既定的竞争者进行正面对抗的方式? 在新能源汽车翻涌的市场潮流中&…

利用浩客无代码开发API集成客服系统,提升用户服务质量

【浩客简介】 浩客,是由十年 SaaS 表单产品「金数据」团队打造的新产品。它主要面向数字化系统的用户评价、反馈、调研、通知工具,特定时机、精准触达,帮助产品经理、用研、UX、运营,聆听用户心声,增强用户触达&#…

【软件设计师 - 一周通关】1.考试介绍

目录 一、简介 考试项目 1、证书作用 (1)以考代评中高级职称 (2)一线城市人才引进落户 (3)就业优势 (4)个税抵扣 (5)技能补贴 2、含金量 3、报名时…

网络原理---拿捏传输层:TCP/UDP协议

文章目录 UDP协议源端口、目的端口UDP长度校验和 TCP协议源端口、目的端口4位首部长度、选项保留位:6位6个特殊标志位32位序号、32位确认序号:在确认应答机制中使用16位窗口大小:在流量控制机制中使用16位校验和 TCP协议 VS UDP协议 在本篇中…

C语言实现利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示

完整代码&#xff1a; /*利用条件运算符的嵌套来完成此题&#xff1a;学习成绩>90分的同学用A表示&#xff0c;60-89分之间 的用B表示&#xff0c;60分以下的用C表示*/ #include<stdio.h>int main(){int score;char grade;printf("请输入你的成绩&#xff1a;&q…

【无标题】360压缩软件怎么用?超级好用!

360压缩是一款功能强大的解压缩软件&#xff0c;如何用它压缩文件呢&#xff1f;下面给出了详细的操作步骤。 一、360压缩详细步骤 1、下载软件后&#xff0c;在电脑上右击需要压缩的文件&#xff0c;在弹出的菜单中点击【添加到压缩文件】选项。 2、在360压缩窗口中按需设置相…

建立企业知识库,构建智慧团队

企业知识库的建立对于企业来说非常重要。它可以提高知识的共享和传递&#xff0c;使得员工之间更容易分享和获取信息。通过知识库&#xff0c;员工可以快速找到所需的知识资源&#xff0c;从而增强培训和学习效果。此外&#xff0c;企业知识库还能提升工作效率和团队协作能力。…

实验室通风系统工程-全钢通风柜-实验室废气处理

通风设备&#xff1a; 实验室常用的通风设备主要有&#xff1a;通风柜、原子吸收罩、万向排气罩、桌面式通风罩等。通风柜是安全处理有害、有毒气体或蒸汽的通风设备&#xff0c;作用是用来捕捉、密封和转移污染物以及有害气体&#xff0c;防止其逃逸到实验室内&#xff0c;这…

制药企业如何进行计算机化系统验证(CSV)

在制药行业&#xff0c;计算机化系统验证&#xff08;CSV&#xff09;是确保生产、质量管理和合规要求得到满足的重要步骤。CSV验证确保计算机化系统的可靠性、一致性和合规性&#xff0c;以保护产品质量和患者安全。本文将深入探讨计算机化系统验证的定义、制药企业进行CSV的原…

读完大呼过瘾的计算机书籍

目录 一导论 二《算法导论》 三《深入理解计算机系统》 四《代码大全》 五《设计模式&#xff1a;可复用面向对象软件的基础》 六《人月神话》 七总结 一导论 作为一个计算机专业的爱好者&#xff0c;我发现计算机科学和技术领域充满了无穷无尽的可能性。在探索这个世界…

超详细!DALL · E 文生图模型实践指南

最近需要用到 DALLE的推断功能&#xff0c;在现有开源代码基础上发现还有几个问题需要注意&#xff0c;谨以此篇博客记录之。 我用的源码主要是 https://github.com/borisdayma/dalle-mini 仓库中的Inference pipeline.ipynb 文件。 运行环境&#xff1a;Ubuntu服务器 ⚠️注意…

elementui-plus el-tree组件数据不显示问题解决

当前情况: 显示: 注意看右侧的树是没有文字的,数据已经渲染,个数是对的,但就是没有文字, 解决: 对比以后发现是template中的#default{data}没有写大括号导致的 所以写上大括号后: 正常显示

卷积神经网络中 6 种经典卷积操作

深度学习的模型大致可以分为两类&#xff0c;一类是卷积神经网络&#xff0c;另外一类循环神经网络&#xff0c;在计算机视觉领域应用最多的就是卷积神经网络&#xff08;CNN&#xff09;。CNN在图像分类、对象检测、语义分割等经典的视觉任务中表现出色&#xff0c;因此也早就…