06 | ASW 开发系列 6- 标定表与 Lookup table

本贴最后更新于 597 天前,其中的信息可能已经时移世改

不管汽车的动力系统,底盘系统还是车身系统,在控制层面,有些零部件的特性按照理论方法(比如数学模型)来实现将会十分复杂,也会导致计算更加复杂且占用 ECU 大量的资源。因此,工程应用上基本采用标定表的方式去简化计算,并建立关键因素间的关系。比如离合器特性,采用标定表来表示离合器扭矩与滑摩转速差,油压的关系,见下图。

图片

另外,工程上也会通过标定开关去控制是否激活某些功能,实现不同车辆配置的差异。本文主要介绍实现标定表的 Simulink 模块 Lookup table。

1. Lookup table

量产模型中,标定表最常使用的是是一维和二维的 Lookup table,如下所示:

图片

以 TCU 模型开发为例,标定表主要应用在换挡表,离合器特性和 PI 参数设置等方面。假设 PI 控制中的 P 项参数会受温度影响,但没有准确的数学关系,从而采用标定方式来获取 P 项参数。

这时需要先对 Lookup table 进行设置,如下所示:

图片

对于表和断点设置,方法与前面文章定义数据字典方法一样,这里定义了横轴变量为 TempValu_cx,纵轴为 PItemFctr_cy,如下图,当该表的输入为 0,则输出为 0.3。

图片

对于算法设置,主要介绍插值方法,插值方法有很多种,比如线性插值,多项式插值和样条曲线插值等,通常选择线性插值(Interpolation)方法。

2 线性插值方法

下面将介绍线性插值原理,以便于了解如何得到了标定表的输出结果。

线性插值在数学原理上其实就是一次函数 z=kx+b 的运算,当 k 和 b 确定时,输入 x,就能得到相应的 z,具体原理示意如下:

图片

图片

通过上图可理解:所谓的标定,就类似于根据实际情况不断地调整 k 和 b 的数值,最终找到最优的 k 和 b, 从而对于任意数值的 x,都能得到满意的 z。

继续深挖线性插值方法,来看标定表的坐标轴的一些设定方法。了解了线性插值原理后,假如我们采用 1-D Lookup table 为标定表,即标定表包含横轴 x 和纵轴 z。

关于横轴 x,假定横轴 x 范围设置为[0,150],设置 3 个标定点:[10 60 110],此时如果表的输入 0 或 120 时,该怎么处理?

目前了解到有两种处理方法,一种是使用外插值(),如下左图;另一种使用尾值(use end value),如下右图。

图片

另外,当前横轴标定点设置是等间距的,是否可以不这么设置?

答案是可以,但必须数据得递增才行,总的来说横轴的数据点间隔设置有两种形式,一种数据点间距相等,另一种数据点间距不相等,两者主要在消耗存储空间和算法效率方向有差异。

图片

关于纵轴,首先纵轴必须设置与横轴数量相同的标定点,即横纵轴的标定点数量要相同。接着横轴例子,假定纵轴范围设置为[0,1000],设置纵轴 3 个点[100 900 500],注意这 3 点并不需要横轴那样必须严格递增。

这样确定了横轴和纵轴的标定点,就确定了插值关系。通常只需要根据输入和插值关系就可以得到标定表的输出,但是也有一些意外情况,比如当横轴输入 120,而插值结果为 1050,超过纵轴范围,此时只能取纵轴的最大值 1000,如下图所示:

图片

3 小结

以上就是对标定表使用 Lookup table 的介绍,初步介绍了解需要对 Lookup table 做哪些设置,以及 Lookup table 实现线性插值的基本原理和方法。若想对 Lookup table 做更深入了解,比如在代码层面如何实现的,可参考本人知乎文章:ECU 开发基础系列--标定表插值方法 4

另外,若想对汽车软件的标定了解更多,可参考:

  • 标定概述
  • 如何使用 CANape 实现 XCP/CCP“Measurement 测量”和“Calibration 标定”变量
  • 汽车标定工程师是如何参与整车开发的?

  • 设计
    118 引用 • 786 回帖 • 1 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • Thymeleaf

    Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。类似 Velocity、 FreeMarker 等,它也可以轻易的与 Spring 等 Web 框架进行集成作为 Web 应用的模板引擎。与其它模板引擎相比,Thymeleaf 最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个 Web 应用。

    11 引用 • 19 回帖 • 395 关注
  • 七牛云

    七牛云是国内领先的企业级公有云服务商,致力于打造以数据为核心的场景化 PaaS 服务。围绕富媒体场景,七牛先后推出了对象存储,融合 CDN 加速,数据通用处理,内容反垃圾服务,以及直播云服务等。

    29 引用 • 230 回帖 • 123 关注
  • API

    应用程序编程接口(Application Programming Interface)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。

    79 引用 • 431 回帖
  • 30Seconds

    📙 前端知识精选集,包含 HTML、CSS、JavaScript、React、Node、安全等方面,每天仅需 30 秒。

    • 精选常见面试题,帮助您准备下一次面试
    • 精选常见交互,帮助您拥有简洁酷炫的站点
    • 精选有用的 React 片段,帮助你获取最佳实践
    • 精选常见代码集,帮助您提高打码效率
    • 整理前端界的最新资讯,邀您一同探索新世界
    488 引用 • 384 回帖 • 5 关注
  • Ngui

    Ngui 是一个 GUI 的排版显示引擎和跨平台的 GUI 应用程序开发框架,基于
    Node.js / OpenGL。目标是在此基础上开发 GUI 应用程序可拥有开发 WEB 应用般简单与速度同时兼顾 Native 应用程序的性能与体验。

    7 引用 • 9 回帖 • 403 关注
  • Solidity

    Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。

    3 引用 • 18 回帖 • 439 关注
  • 代码片段

    代码片段分为 CSS 与 JS 两种代码,添加在 [设置 - 外观 - 代码片段] 中,这些代码会在思源笔记加载时自动执行,用于改善笔记的样式或功能。

    用户在该标签下分享代码片段时需在帖子标题前添加 [css] [js] 用于区分代码片段类型。

    188 引用 • 1336 回帖 • 1 关注
  • golang

    Go 语言是 Google 推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性。谷歌首席软件工程师罗布派克(Rob Pike)说:我们之所以开发 Go,是因为过去 10 多年间软件开发的难度令人沮丧。Go 是谷歌 2009 发布的第二款编程语言。

    500 引用 • 1395 回帖 • 243 关注
  • Rust

    Rust 是一门赋予每个人构建可靠且高效软件能力的语言。Rust 由 Mozilla 开发,最早发布于 2014 年 9 月。

    59 引用 • 22 回帖 • 13 关注
  • Sandbox

    如果帖子标签含有 Sandbox ,则该帖子会被视为“测试帖”,主要用于测试社区功能,排查 bug 等,该标签下内容不定期进行清理。

    437 引用 • 1238 回帖 • 587 关注
  • Ant-Design

    Ant Design 是服务于企业级产品的设计体系,基于确定和自然的设计价值观上的模块化解决方案,让设计者和开发者专注于更好的用户体验。

    17 引用 • 23 回帖 • 3 关注
  • Bootstrap

    Bootstrap 是 Twitter 推出的一个用于前端开发的开源工具包。它由 Twitter 的设计师 Mark Otto 和 Jacob Thornton 合作开发,是一个 CSS / HTML 框架。

    18 引用 • 33 回帖 • 648 关注
  • 旅游

    希望你我能在旅途中找到人生的下一站。

    98 引用 • 903 回帖 • 1 关注
  • flomo

    flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。

    6 引用 • 143 回帖
  • GitBook

    GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。

    3 引用 • 8 回帖
  • OpenStack

    OpenStack 是一个云操作系统,通过数据中心可控制大型的计算、存储、网络等资源池。所有的管理通过前端界面管理员就可以完成,同样也可以通过 Web 接口让最终用户部署资源。

    10 引用 • 3 关注
  • ZooKeeper

    ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 HBase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

    59 引用 • 29 回帖 • 10 关注
  • Scala

    Scala 是一门多范式的编程语言,集成面向对象编程和函数式编程的各种特性。

    13 引用 • 11 回帖 • 158 关注
  • 心情

    心是产生任何想法的源泉,心本体会陷入到对自己本体不能理解的状态中,因为心能产生任何想法,不能分出对错,不能分出自己。

    59 引用 • 369 回帖 • 1 关注
  • 黑曜石

    黑曜石是一款强大的知识库工具,支持本地 Markdown 文件编辑,支持双向链接和关系图。

    A second brain, for you, forever.

    24 引用 • 242 回帖
  • CloudFoundry

    Cloud Foundry 是 VMware 推出的业界第一个开源 PaaS 云平台,它支持多种框架、语言、运行时环境、云平台及应用服务,使开发人员能够在几秒钟内进行应用程序的部署和扩展,无需担心任何基础架构的问题。

    5 引用 • 18 回帖 • 192 关注
  • Typecho

    Typecho 是一款博客程序,它在 GPLv2 许可证下发行,基于 PHP 构建,可以运行在各种平台上,支持多种数据库(MySQL、PostgreSQL、SQLite)。

    12 引用 • 67 回帖 • 445 关注
  • JRebel

    JRebel 是一款 Java 虚拟机插件,它使得 Java 程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。

    26 引用 • 78 回帖 • 675 关注
  • 微信

    腾讯公司 2011 年 1 月 21 日推出的一款手机通讯软件。用户可以通过摇一摇、搜索号码、扫描二维码等添加好友和关注公众平台,同时可以将自己看到的精彩内容分享到微信朋友圈。

    133 引用 • 796 回帖
  • 脑图

    脑图又叫思维导图,是表达发散性思维的有效图形思维工具 ,它简单却又很有效,是一种实用性的思维工具。

    32 引用 • 99 回帖
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    554 引用 • 675 回帖
  • jsoup

    jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。

    6 引用 • 1 回帖 • 490 关注