汽车中的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输入要求
针对python输入要求 类型: 1.输入行数不确定,并且每一行输入一个数据. a=[] b=input() while b!='-1': //指随意使用一个值作为一个标志,来进行控制输入的行数.(在 ...
- MapReduce中一次reduce方法的调用中key的值不断变化
简单一句话总结就是:ReduceContextImpl类的RawKeyValueIterator input迭代器对象里面存储中着key-value对的元素, 以及一个只存储value的迭代器,然后每 ...
- python爬虫之抓取小说(逆天邪神)
2022-03-06 23:05:11 申明:自我娱乐,对自我学习过程的总结. 正文: 环境: 系统:win10, python版本:python3.10.2, 工具:pycharm. 项目目标: 实 ...
- WPF优秀组件推荐之FreeSpire
概述 Spire是一套可以轻松处理Word.Excel和PDF的商业组件,需要收费,但是他有一套对应的免费组件FreeSpire可以使用,免费组件在功能上有一些限制(比如:excel的sheet数量不 ...
- 编写第一个GET、POST接口[renren-fast框架系列(1)]
配置好 renren-fast 脚手架,学习完 Spring MVC 架构后,我需要具体调试 renren-fast 的接口,比如要新增某个接口. 什么是前后端分离 运行 renren-fast 项目 ...
- nginx反向代理配置(conf文件中的nginx)
########### 每个指令必须有分号结束.##################user administrator administrators; #配置用户或者组,默认为nobody nob ...
- S5700上三层Vlan间隔离的例子
转自:https://forum.huawei.com/enterprise/zh/forum.php?mod=viewthread&tid=247591 公司最近的无线覆盖做好了,但让人无语 ...
- 新的ASP.NET Core 迁移指南
最近在微信里做了一个调查: Web Forms应用程序升级到.NET 6, 收到550份调查,调查还在继续,欢迎参与调查.可以访问链接:https://wj.qq.com/s2/9822949/ac3 ...
- CF1548B题解
在日报上面看到的,发现 NOIP 模拟赛考过这个 trick( 首先我们把题目要求的条件这么写: \[a_i=x_i \times m+k \] 那么我们要找到满足条件的数组,差分后的数组一定都是 \ ...
- CF1601C题解
赛时一小时,赛后十分钟. 题意:给定一个序列 \(a\) 和一个集合 \(b\),问将 \(b\) 中所有元素插入 \(a\) 后逆序对最少是多少. 观察样例解释,发现 \(b\) 已经被排序过了,于 ...