欧易

欧易(OKX)

国内用户最喜爱的合约交易所

火币

火币(HTX )

全球知名的比特币交易所

币安

币安(Binance)

全球用户最多的交易所

基于Embedded Coder的ECU数据管理系统开发

时间:2022-08-27 22:37:47 | 浏览:4453

0 引言基于模型的ECU软件开发愈加重要[1-2]。对于发动机ECU系统来说,查表模块要满足离线数据烧写和在线标定两方面的需求:离线烧写时将查表模块数据全部定义到固定的Flash区域中,在烧写时,烧写工具将该Flash区域的数据全部烧写为新

0 引言

基于模型的ECU软件开发愈加重要[1-2]。对于发动机ECU系统来说,查表模块要满足离线数据烧写和在线标定两方面的需求:离线烧写时将查表模块数据全部定义到固定的Flash区域中,在烧写时,烧写工具将该Flash区域的数据全部烧写为新的值;进行在线标定时,内存管理模块将Flash中的查表模块数据拷贝到RAM中,标定RAM中的查表模块数据,并且让发动机ECU软件读取RAM中的查表模块数据。因此,需要在查表插值函数中,先通过内存管理模块得到查表模块的实际地址,再进行查表插值计算,返回查表结果。而Simulink自带的Lookup Table模块,在生成代码时会自动生成查表插值函数,但是该函数无法调用底层的内存管理模块,只能使用Flash中的查表模块数据进行计算,无法满足在线标定的需求。因此针对原有的底层模块,自定义开发与之匹配的Simulink查表模块是十分有必要的。另外,借鉴传统手写代码中有益的经验,在MATLAB/Simulink环境下开发数据字典对模型中的变量及数据类型进行管理可以减少模型定点化工作,提升开发速度。

Simulink提供了名为Simulink的包(Package),用于描述变量的名称、维数、物理值、取值范围、单位、描述以及数据类型的名称[3]。Simulink包在生成代码时不支持变量的Flash段定义,而是将模型中的变量当做普通变量来处理。另一方面,不同类型的标定变量的存储结构与查表差值函数的接口定义、数据读取方法直接相关。尤其对于曲线和曲面变量,Simulink生成代码时会将模型中的每个变量独立定义,这就导致属于同一CUR/MAP的轴参数等出现分散定义的情况,地址不一定连续,顺序也很可能是混乱的,这对于查表插值函数的影响相对较小,调整函数接口即可顺利读取到变量的轴数据地址,但是这将给a2l文件的生成带来极大麻烦,因为很难通过软件来识别分析每个轴变量分别属于哪个CUR/MAP,也就无法生成正确的描述信息来描述标定变量。所以要设计专门的包将标定变量定义到指定的Flash段中,从而尽可能减小对已有查表插值函数的改动,并且便于手工修改变量,最大限度兼容已有的手写代码的变量结构定义方式。

MATLAB中可以表示浮点数和定点数变量,浮点数变量有两种表示方法:一种是矩阵类型的变量,使用双精度浮点数,可在m语言和Simulink中使用;另一种是Parameter数据类,可在Simulink中使用。定点数变量也有两种表示方法:一种是Parameter数据类;另一种是fi对象,适用于m语言。所以本文使用Parameter数据类来表示数据类型[4-5]。另外,根据从前手写代码的经验和规则,使用斜率和偏移来定义定点数,使用单精度浮点数来表示浮点数,并将以前使用的数据类型都导入到MATLAB中。

1.2 变量及其存储实现

在Embedded Coder自动生成代码时,要尽可能按照不同查表模块结构定义方式生成变量。基于Embedded Coder的包自定义适合单片机的包,使得Simulink模型中的变量的各项属性满足在代码生成时的各种要求。建立包的过程如图1所示。

首先创建一个自定义的包,在该包上定义所需的数据类:定义Parameter数据类用于表达标定变量,定义Signal数据类用于表达监控变量。各数据类的属性会默认继承Simulink包中相应数据类的属性。发动机电控系统的查表模块必须定义在指定的Flash段空间内,所以需要定义数据类的自定义储存类CSC(Custom Storage Class)来定制变量的储存属性,例如数据类型(结构体或非结构体)、内存块Memory Section(定义变量声明和定义所在的储存区域)、链接属性(是否声明为外部变量)等属性。

2 创建查表模块

查表模块用于在模型中使用定点或浮点数据查表进行建模仿真,在创建查表模块时可以分为两个步骤:查表模块的封装和相应的底层内存管理模块封装。

2.1 查表模块封装

查表模块要在Simulink中进行使用,在Simulink环境中可以封装S函数来实现自定义功能。使用C语言编写查表模块的S函数。查表模块S函数模块的开发流程如图2所示,主要分为编写S函数文件和S函数模块封装两部分。下面以曲线(Curve)模块为例来详细描述如何创建查表模块。

曲线插值查表模块含有1个输入、1个输出和7个参数,7个参数分别为:(1)CUR的x轴变量;(2)CUR的y轴变量;(3)CUR的x轴数据类型;(4)CUR的y轴数据类型;(5)CUR的x轴数据类型编号;(6)CUR的y轴数据类型编号;(7)CUR名称。

首先,根据曲线插值查表模块的特性编写S函数的C源代码,其中须包含Simulink规定的必须有的宏定义和头文件,针对查表模块还应当包含定点数相关的头文件等;实现参数的获取和设置的各种回调方法,具体包括:

(1)初始化回调:设置S函数的参数信息、状态信息、输入输出端口信息、采样时间信息、工作向量信息、仿真选项,具体流程如图3所示。

(2)参数检查回调,用来检查x轴数据类型名称、维数、单调性是否有效,检查y轴数据类型名称是否有效、维数是否与x轴一致,具体流程如图4所示。

(3)采样时间回调:设置采样时间信息,具体流程如图5所示。

(4)运行时参数回调:用来建立运行时参数(Run-Time Parameter),即将CUR的轴变量注册成为运行时参数以获取其储存值,具体流程如图6所示。

(5)输出回调:用来获取输入、CUR数据,设置输出,流程如图7所示。

(6)RTW回调:用户来将参数传递给RTW文件,具体流程如图8所示。

然后,将C源代码编译为mex文件。在Simulink中自建模块库,使用S-Function模块完成参数封装,并与mex文件链接,完成查表模块的封装。

2.2 底层内存管理模块封装

继续以曲线插值查表模块为例,为使该模块生成的代码能够与底层库中的查表插值函数和内存管理函数相结合,定义以下接口方式使得曲线插值查表模块生成如下格式的代码来调用查表插值函数:

输出=曲线查表插值函数(x轴Flash地址,x轴点数,x输入)

在底层库的查表插值函数中,首先调用内存管理模块的接口函数,根据CUR的Flash地址查得其RAM地址,再读取RAM地址中的CUR,进行查表插值。在代码生成时,CUR模块要生成两部分代码:一是要生成头文件中的查表插值函数的声明语句,只需生成一遍;二是对于每个CUR模块生成一次查表插值函数调用语句。底层内存管理模块封装具体流程如图9所示。

3 仿真与代码实验

在发动机控制系统中使用的数据类型基本上是定点数数据类型。本节以无符号、16位、斜率为2-5、偏移为0的定点类型为例,研究运用定点数所建立的查表模块在仿真和生成代码中的表现。实验通过两个定点数进行加法、减法、乘法、除法的不溢出和溢出计算来比较定点运算在仿真和代码中的表现。仿真设计如图10所示。

实验中,定点数a_fixed等于1,通过Lookp_1D_CUR查表模块得出输出为7.11,由于该定点类型的精度为0.031 25,因此查表得出的输出为7.125。另一个定点数b_fixed等于11.7,同样也丢失了一些精度,但在工程应用中还可以接受。从图10中可以看出,对于不溢出的加法、减法、乘法、不除0除法运算,计算结果受两个输入的影响也损失了一定精度。除0在理论上是不存在的,仿真实验中计算结果为2 047.968 75,即储存值达到最大值为65 535。d_fixed+e_fixed实验了溢出加法计算,a_fixed查表后的结果减去b_fixed实验了溢出减法计算,d_fixed与f_fixed相乘实验了溢出乘法计算,其结果如图10所示,与理论计算结果一致。

将该实验模型生成代码后查看其代码的表现,结果显示在进行加法、减法、乘法计算时,单片机中的计算结果与前述仿真结果一致。在进行除法计算时,单片机中的计算结果为:如果被除数小于除数,则结果为0,否则结果为商的整数部分。这与仿真结果明显不同。这是因为Simulink的除法模块在进行除法计算时,是先将除数与被除数当做浮点数来计算浮点形式的商,然后再用定点类型来显示这个商。这是定点代码在代码中的表现与在仿真中的表现的最大差异处。

4 结论

本文基于Embedded Coder 进行了发动机的变量存储管理、查表模块封装和底层内存管理模块封装,从而定制了生成代码中的变量定义方式和储存方式,并将其与底层库中的查表插值函数接口相匹配,使得查表模块可以进行仿真计算、离线数据标定,其生成发动机控制代码能够支持在线标定和离线烧写。仿真和代码实验结果表明,所建查表模块可以满足开发需求;定点数在仿真和代码中的表示都会损失一定的精度;定点数在仿真和代码中进行加法、减法、乘法计算结果一致,除法计算会有差异。

参考文献

[1] DILLABER E,KENDRICK L,JIN W,et al.Pragmatic strategies for adopting model-based design for embedded applications[J].SAE Technical Paper,2010,2010-01-0935.

[2] HODGE G,YE J,STUART W.Multi-tar-get modeling for embedded software devel-opment for automotive applications[J].SAE Technical Paper,2004,2004-01-0269.

[3] The Math Works Inc.Embedded Coder reference[Z].2015.

[4] ERKKINEN T.Fixed-point ECU development with model-based design[J].SAE Technical Paper,2008,2008-01-0744.

[5] REDDY V,NADARAJAH S,BEALS G.Tips for fixed-point modeling and code generation for simulink[EB/OL].[2017-10-23].http://cn.mathworks.com/matlabcentral/fileexchange/7197-tips-for-fixed-point-modeling-and-code-generation-for-simulink-6.

作者信息:

阴晋冠1,苏铁熊1,冯云鹏2,刘 涛3,贾 利3,周慧芳3,张艳岗1

(1.中北大学 机电工程学院,山西 太原030051;

2.北京特种车辆研究所,北京100072;3.中国北方发动机研究所,天津300400)

相关资讯

数字藏品系统开发怎么制作?NFT数字藏品系统开发说明功能

一、什么是数字藏品什么是所谓的数字藏品,其实就是指使用区块链技术,将一些作品、艺术品生成相对应的数字凭证,不仅可以保护版权,还能实现数字化发行、购买、收藏和使用,具有可追溯、难以篡改、唯一性等特点。二、数字藏品的特点数字藏品有四个特点,第一

NFT系统开发公司带你了解NFT系统开发

  NFT市场目前如火如荼,各大互联网公司纷纷推出自己的NFT系统,都准备抓住这个机会。 NFT平台分为两种模式基于联盟链的开发和基于公链的开发。  一、基于联盟链开发  联盟链是国内互联网巨头推出的区块链底层技术,保证数据的真实性、唯yi

三问直播系统开发:如何开发?找谁开发?以后如何发展?

目前,直播行业的发展趋于稳定,互联网的红利并不比原来的红利,所有直播的受欢迎程度都在降温。随着直播技术的发展,直播系统的发展越来越成熟,使直播系统的发展越来越接近人们。那么,如何开发一个直播系统呢?你能找到谁来开发它呢?如何开发现场直播系统

想开发一个红洞数藏网站系统的网站系统你怎么能错过这些

  红洞数字藏品平台(简称红洞数藏)是一个区块链数字收藏电子商务平台,红洞数藏网站系统提供IP内容数字资产发行、销售等配套服务。 于2021年12月5日在2021中国元宇宙峰会上正式发布。红洞数藏网站系统是新的数字藏品在线交易平台,在这里浏

操作系统开发有多难?中国为何还没有可媲美Windows的操作系统?

操作系统开发到底难在哪里呢?现在市场还是Windows、安卓、iOS三分天下。操作系统按应用领域可分为:桌面操作系统移动端/手机操作系统服务器操作系统和云嵌入式、物联网操作系统等其他设备操作系统目前,桌面操作系统方面,Windows、Mac

信息系统—系统开发路线、方法与工具

信息系统—系统开发路线、方法与工具.m4a1:36来自LearningYard学苑—系统开发路线、方法与工具—信息系统Information system“系统开发的路径:系统开发目标—开发路线—开发方式—具体开发方式—开发工具和技术Pat

信息系统项目管理师必背核心考点(二)信息系统开发方法

科科过《每天一小时 俩月拿证》为您带来软考信息系统项目管理师核心重点考点(二):信息系统开发方法,内含思维导图+真题。【信息系统项目管理师核心考点】信息系统开发方法1.结构化方法特点:目标清晰化【工作阶段化】,文档规范化,设计方法结构化缺点

智能垃圾分类系统|垃圾分类系统开发|垃圾分类科普软件

有数据表明现在垃圾中占比大的就是生活垃圾,只要在这个环节中处理好垃圾分类的话就能大大减少垃圾的污染和资源的浪费,垃圾对于我们来说就是不需要的东西都能归类为垃圾,但是其中垃圾中还是有很多有用的东西,只要合理的区分一下就能变废为宝,这就是垃圾分

固定资产管理系统开发流程(固定资产管理系统业务处理流程)

  对大多数中小企业来说,订购固定资产管理软件的预算是有限的。标准软件不能满足企业的需求,独立开发软件太贵了。因而,在这样的情况下,选择基于成熟架构的个性定制开发是一种具有成本效益的方式。  因而,不可避免地要寻找简单、高效的管理手段。在充

数字藏品系统开发搭建(系统搭建、部署源码)

数字藏品,从文化角度来说,它是一种科技赋能与文化IP巧妙融合的产物,将文化收藏品数字化并完成上链,成为一种独特的存在。能够对其进行标记生成唯一数字凭证,有效保护发行者版权和消费者权益。从技术角度来说,数字藏品是在合规管理架构下,对NFT技术

攻城狮们,大型系统开发过程中会面临哪些系统工程管理挑战呢?

ISO / IEC / IEEE 15288:2015 Systems and software engineering — System life cycle processes该标准建立了一个通用过程框架,用于描述采用系统工程方法构建的

NFT数字藏品系统开发作为中小企业该如何部署自己的系统

  2021年以来,NFT市场迅速扩张。 交易量方面,2021 年 NFT 市场总交易量将达到 4336 万笔,比上年增长 40 倍以上; 单月最高交易量为592万笔,比上年增长39倍。 从成交均价来看,2021年月均成交价为365美元/件

数字藏品APP系统开发|数字藏品系统

数字收藏是应用区块链技术对数字作品、艺术品和商品的所有权进行识别。数字收藏品可以在区块链网络中标记其所有者,并追踪其后续流通情况,包括但不限于数字图片、音乐、视频、电子门票、数字纪念品等方式。简单来说,数字收藏APP系统的开发就是通过区块链

软件开发和系统开发的区别

经常有人问起软件开发和系统开发的区别,今天我们来描述一下二者的区别。软件开发是根据用户要求建造出软件系统或者系统中的软件部分的过程。软件开发是一项包括需求捕捉、需求分析、设计、实现和测试的系统工程。软件一般是用某种程序设计语言来实现的。通常

一对一系统开发——一对一源码开发

一对一视频,字如其义,一对一视频能更好地保护观众们的隐私,如今任何东西都公开化的年代中,后期伴随着直播间的戏份又新增了一对一视频,计时房间,游戏,购物链接等等功能,还有直播间+短视频模式,社区公会的增加等功能。从这些方面来看,直播间的功能早

友情链接

网址导航 SEO域名抢注宝宝起名网妈妈知道币圈合盛硅业A股米高轮滑鞋胡先煦影迷网小红书旅游攻略今日唐山许昌新闻头条网栗妃板栗资讯网重庆旅游网凤凰自行车郭富城歌迷网今日承德酒吧资讯网必胜客会员福利网音乐乐器网北方稀土A股
数字藏品系统开发网是目前国内领先的数字艺术品、nft、元宇宙、数字藏品、nft开发、数字藏品平台、数字藏品平台建设、数字藏品平台开发、nft平台开发数字收藏品交易业务、NFT艺术品交易业务专用系统平台,为品牌提供一站式建设数字藏品平台服务,拥有丰富的数藏平台建设与运营经验。
数字藏品系统开发 hezua.cn ©2022-2028版权所有