汽车中的V流程开发


各步骤的简介各步骤的简介
(1)Control Design and offline Simulation:算法模型构建和离线仿真(基于模型的设计)。算法工程师用Matlab模型实现算法;并实施离线仿真,验证算法。
(2)Rapid Control Prototyping:快速原型。算法工程师将上一步构建好的算法模型下载到快速原型设备中,并使用快速原型设备控制车辆,并实施在线仿真,验证算法。请注意,这一步的仿真是在线仿真,而上一步则是离线仿真。
(3)Automatic Code Generation:自动代码生成。通过软件将算法模型自动生成C代码。
(4)HIL:硬件在环。此时,上一步生成的C代码已经验证完毕,并下载到了量产ECU中。在这一步,用量产ECU驱动车辆,以验证量产ECU的软件、硬件。
(5)Calibration:标定。在这一步,主要是为了优化软件中的参数使得车辆各方面性能达到最佳。
一、基于模型的设计(Model Based Design,MBD)是什么?
1.基于模型的开发是一种软件开发方法
传统的嵌入式软件开发方法:算法工程师编写算法文档,程序员根据算法文档手写代码(C或汇编语言),代码完成之后下载到嵌入式硬件中验证算法、软件是否正确。
与传统的方法相比,基于模型的开发有以下优点
(1)可运行的算法。基于模型的开发中算法 = Matlab模型 ,Matlab模型是可以运行的。因此算法工程师在构建模型之后可以运行模型对算法实施验证,确认算法是否符合预期。这样,可以更早地发现算法中的错误。
(2)自动生成代码。传统方法中需要由程序员根据算法手写代码,而基于模型的开发则可以通过Targetlink等代码自动生成软件将算法直接转变为C代码。这个过程不但缩短了代码开发的时间,而且还大大地提升了代码的整体质量和可靠性。因为Targetlink生成的代码一般比3年经验的程序员手写的代码质量要高。
二、快速原型是什么?

快速控制原型
1、快速原型的设备有什么?
这就不得不提到牛逼的dSpace盒子
<img src="https://pic4.zhimg.com/50/287c9ef96327c7fe680b6f9d9bb77197_hd.jpg?source=1940ef5c" data-rawwidth="632" data-rawheight="312" class="origin_image zh-lightbox-thumb" width="632" data-original="https://pic4.zhimg.com/287c9ef96327c7fe680b6f9d9bb77197_r.jpg?source=1940ef5c"/>
在硬件出来之前:
对于硬件系统(mechanic and electronic)建模:
1 Matlab/Simulink可完成mechanic 和传感器,促动器的建模
2 microautobox就是electronic硬件,也相当于就是很多ECU的组合,它比汽车单个的ECU功能强大的多。你可以只当一个ECU来用,也可以当多个ECU来用。
3 这个盒子硬件部分可以接传感器,促动器。软件可以接Matlab/Simulink
4 我们在Matlab/Simulink里面设计控制算法,比C更直观容易理解
5 算法自动转码成C Code到这个盒子
6 dspace还有对应软件可以看输出端实时(realtime)响应曲线
等汽车造出来以后
7 电脑--------盒子------CAN BUS------汽车连接起来 (这就是HIL的一种,什么是Hardware In the Loop 就不细说了)
8 一个人开车,一个人坐在副驾驶座上用软件实时的调节各项参数
9 所有都合适之后,生产单个的ECU(发动机ECU,ABS的ECU,ESP的ECU......)
10 FINAL TEST
11 well done!给汽车工程师发奖金
2、dspace简介
dSPACE的作用 对整车厂来说,dSPACE是一个卓越的基于模型开发相关的软件、设备、工程服务供应商。
自动代码生成软件,dSPACE有Targetlink(行业标杆)。 快速原型设备,dSPACE有MicroAutoBox+RapidPro设备(行业标杆,但是很贵,好多公司都改用更便宜的MotoHawk了)。
硬件在环设备,dSPACE有HIL设备(行业标杆,但是很贵,好多公司都改用更便宜的ETAS、NI了)。
此外,关于如何改进整个基于模型的开发流程,以及如何满足ISO26262、AUTOSAR标准,dSPACE提供相关的工程服务(嗯,很贵)。
三、自动代码生成


- 首先系统和功能设计工程师需要制定软件的功能和需求,并设计控制模型,系统和功能设计工程师可能完全不懂C代码。
- 之后功能设计工程师提供具体的需求和设计说明书给软件工程师或者外包公司的码农。
- 码农将系统工程师的设计理念从模型转化为C代码,编译后刷写到电子控制器。
- 最后系统工程师或者测试工程师再拿到刷写好的软件去测试自己设计的功能。

- 那么相对于上面的手动C代码,基于模型的设计有显而易见的巨大进步:
- 节约了闭环设计中无数的时间和人力成本,那一房间上百个码农都可以节约下来了。
- 系统和功能设计工程师可以独立完成软件的输出,可以很容易避免因为技术文档描述不准确或者歧义而导致的从功能到代码的错误设计。
- 软件功能修改后可以快速自动生成代码而不需要经过复杂的流程由码农来做修改。
- 软件一致性不会像以前一样因为使用不同的码农而不同,代码也会由自动工具统一优化。 图形化的软件设计和Windows一样更易懂,类似Simulink中完整的诊断和查询显示功能也可以更容易对软件进行纠错,找到bugs。
四、硬件在环
硬件在环仿真
判断一个设备是做RCP还是HIL的直观方法是:看设备的大小。
一般情况下,相对而言,被控对象模型比控制算法模型复杂,所以HIL对CPU算力的要求比RCP更高,因此HIL实时主机机箱比RCP的大;另外,HIL可能会涉及到程控电源、信号调理、故障注入等,所以HIL设备会有更多的附件。因此,比较小巧简洁的是RCP设备,比较大且复杂的HIL设备。
比如,RCP设备甚至有下图这种手掌大小的。
<img src="https://pic2.zhimg.com/50/v2-b0129c9ef9c037019bf14bb1529980ef_hd.jpg?source=1940ef5c" data-caption="" data-size="normal" data-rawwidth="403" data-rawheight="238" data-default-watermark-src="https://pic1.zhimg.com/50/v2-a6b0ee095a9f15ed999651ca9e8df33f_hd.jpg?source=1940ef5c" class="content_image" width="403"/>
HIL设备有桌面式的,也有机柜式的。
桌面式如下图左侧设备:
<img src="https://pic3.zhimg.com/50/v2-e1258efb338d4e2dbf9447e9fdb20e74_hd.jpg?source=1940ef5c" data-caption="" data-size="normal" data-rawwidth="1883" data-rawheight="539" data-default-watermark-src="https://pic2.zhimg.com/50/v2-90dfc312142365816c1709ee00ddd82b_hd.jpg?source=1940ef5c" class="origin_image zh-lightbox-thumb" width="1883" data-original="https://pic2.zhimg.com/v2-e1258efb338d4e2dbf9447e9fdb20e74_r.jpg?source=1940ef5c"/>
截图引自MathWorks公开课视频,链接如下:
Using Speedgoat Target Computer Hardware for Simulink Real-Timewww.mathworks.com
集成程控电源、信号调理板卡、故障注入板卡等的机柜式HIL设备如下图(引自MathWorks官网):
<img src="https://pic4.zhimg.com/50/v2-c98d242578f8445c83f2dbb959880531_hd.jpg?source=1940ef5c" data-size="normal" data-rawwidth="281" data-rawheight="718" data-default-watermark-src="https://pic4.zhimg.com/50/v2-143363e1a9fde64a43f245770533293e_hd.jpg?source=1940ef5c" class="content_image" width="281"/>

转自:https://www.zhihu.com/question/369208008/answer/1066342163
硬件在环和快速控制原型
(百度百科中的解释)
汽车中的V流程开发的更多相关文章
- fir.im Weekly - iOS开发中的Git流程
本期 fir.im Weekly 收集了微博上的热转资源,包含 Android.iOS 开发工具.源码等好用的轮子,还有一些 APP 设计的 Tips,希望对你有用. 精仿知乎日报 iOS 端 @我偏 ...
- 【转】windows和linux中搭建python集成开发环境IDE
本系列分为两篇: 1.[转]windows和linux中搭建python集成开发环境IDE 2.[转]linux和windows下安装python集成开发环境及其python包 3.windows和l ...
- Oracle数据库中调用Java类开发存储过程、函数的方法
Oracle数据库中调用Java类开发存储过程.函数的方法 时间:2014年12月24日 浏览:5538次 oracle数据库的开发非常灵活,不仅支持最基本的SQL,而且还提供了独有的PL/SQL, ...
- 第二十三篇:在SOUI中使用LUA脚本开发界面
像写网页一样做客户端界面可能是很多客户端开发的理想. 做好一个可以实现和用户交互的动态网页应该包含两个部分:使用html做网页的布局,使用脚本如vbscript,javascript做用户交互的逻辑. ...
- K2 blackpearl 流程开发(二)
转:http://blog.csdn.net/gxiangzi/article/details/8444590 本来想一篇文章把流程开发介绍完的,后来发现实在是太多了,只好分成两部分了.上一篇很简单的 ...
- K2 blackpearl 流程开发(一)
转:http://blog.csdn.net/gxiangzi/article/details/8444060 郁闷,今天K2的license过期了,很多东西都没法用了,还得去找PM大大帮忙申请一个. ...
- zigbee学习:示例程序SampleApp中按键工作流程
zigbee学习:示例程序SampleApp中按键工作流程 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN7 开发环境:IAR8. ...
- Systemd初始化进程/RHEL 6系统中System V init命令与RHEL 7系统中systemctl命令的对比
Linux操作系统的开机过程是这样的,即从BIOS开始,然后进入Boot Loader,再加载系统内核,然后内核进行初始化,最后启动初始化进程.初始化进程作为Linux系统的第一个进程,它需要完成Li ...
- APP开发过程中需求变更流程
在APP开发过程中,不可避免的会有需求变更,从以往项目开发过程总结发现,需求变更太频繁,产品一句话需求,没有形成良好的版本迭代概念,频繁的变动影响开发交付日期,但是交付日期又是定死的,严重拖累了开发及 ...
随机推荐
- 『无为则无心』Python日志 — 67、logging日志模块处理流程
目录 1.概括理解 2.详细说明 3.应用示例 1.概括理解 了解了四大组件的基本定义之后,我们通过图示的方式来理解下信息的传递过程: 也就是获取的日志信息,进入到Logger日志器中,传递给处理器确 ...
- python如何data格式和时间戳的转换
Python 获取几天前的时间 计算几天前并转换为指定格式. import time import datetime # 先获得时间数组格式的日期 threeDayAgo = (datetime.da ...
- [2022-2-26] OICLASS-USACO提高组模拟赛 C·Convoluted Intervals S
这道题非常简单啊,我看很多人都做出来了,张林昨天也讲的很明白了,那我来简单写一下: 暴力思路(10pts) 我们发现,我们只需要模拟画出一个图然后进行暴力枚举就行了. 差分+桶+加乘原理思路(100p ...
- 基于idea做java程序的本地k8s调试-skaffold(二)
上一篇讲完了java代码发到本机minikube中run,这篇来讲讲minkube中进行debug(idea下) 话说,上篇是把pigx基础infra微服务都发到了minikube中,这些微服务是ru ...
- 自己的markdown笔记
markdown一些语法 记录自己会用的一些markdown语法,不定期更新,用的软件是hroopad,hroopad下载地址点击跳转.这个书写软件对新手还有中文用户比较友好,左边是markdown语 ...
- Linux命令 之 “救命稻草”
一.前言 虽然Linux操作系统图形界面已经退出,但由于大量的操作在终端操作比较快捷,所以,对linux命令的使用必不可少.在linux系统日常的学习和工作中,常常会出现有些命令忘记了或者该命令的参数 ...
- 【数据结构与算法】Trie(前缀树)模板和例题
Trie 树的模板 Trie 树的简介 Trie树,又称字典树,单词查找树或者前缀树,是一种用于快速检索的多叉树结构,如英文字母的字典树是一个26叉树,数字的字典树是一个10叉树.他的核心思想是空间换 ...
- HCNP Routing&Switching之组播技术-组播分发
前文我们了解了组播技术中的igmp-snooping相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/15860484.html:今天我们来聊一聊组播技术 ...
- 微信网页JSDK接口-wx.chooseImage问题
wx.chooseImage({count: 1, // 默认9sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有sourceTy ...
- Solon 1.6.33 发布,更现代感的应用开发框架
相对于 Spring Boot 和 Spring Cloud 的项目 启动快 5 - 10 倍 qps 高 2- 3 倍 运行时内存节省 1/3 ~ 1/2 打包可以缩小到 1/2 ~ 1/10(比如 ...