各步骤的简介各步骤的简介
(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年经验的程序员手写的代码质量要高。
二、快速原型是什么?
快速控制原型(Rapid Control Prototype,简称RCP)。实时硬件运行Simulink控制算法(模拟控制器),控制真实被控对象(如开关、电磁阀、电机、发动机等),快速验证该Simulink算法。此时实时硬件可以看作是原型的控制器,通过这种方式我们快速地得到了一个原型控制器,对原型的控制算法进行测试,故称之为快速控制原型。此时,被控对象是真的,控制器是假的 (控制器不是真正的量产控制器)。
快速控制原型
1、快速原型的设备有什么?
链接:https://www.zhihu.com/question/24239041/answer/72565699
这就不得不提到牛逼的dSpace盒子
<span style="font-size: 16px"><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"/></span>
这个就是我在前面提到的microautobox
在硬件出来之前: 对于硬件系统(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提供相关的工程服务(嗯,很贵)。
三、自动代码生成
参考:https://www.zhihu.com/question/52838341/answer/138658739
https://www.zhihu.com/question/369208008
1. 什么是自动代码生成技术?或者说什么是基于模型的设计?
在汽车行业,2010年之前,大多数控制软件,比如发动机控制软件,自动变速箱控制软件,车身控制软件等等,都是手写C代码的。欧洲汽车行业使用很多外包公司来进行这项重复性的脑力活动,甚至把很多写代码的活儿外包到印度降低成本。一个大型软件比如发动机控制软件,甚至需要超过上百个码农在像网吧一样的大办公室里手动撰写不同模块的代码,之后再进行拼装。 2010年之后到现在,在汽车行业手写C代码的情况已经非常少了,如下表所示来自Infineon的预测,到2020年手动C代码在整个汽车行业所占的比例会只剩下10%左右,就这个估计我觉得还是保守的,其实现在除了少数一些发展中的车企和微型公司,C代码已经很罕见了。
那么如果不用手写C代码,汽车控制软件编译前的代码怎么得到呢?就是通过自动代码生成技术,或者说基于模型的设计。如果你用过类似 Matlab 中的 Simulink 或者其他图形化的语言就会知道,在建模和仿真的过程中很少直接使用 C 代码。Simulink对比C代码,就好像 Windows 操作系统对比 DOS 操作系统一样,一个是图形化的控制,一个是基于命令行。Simulink 的图形和 C 代码之间是可以双向转换的,比如下图这段代码:
那么在这个背景下, Simulink 可以搭配专门的自动代码生成工具,比如Targetlink或者Matlab自己的Embedded Coder,软件设计者只需要编写图形化的 Simulink 代码,之后通过上面说到的两个工具之一自动生成对应的C代码,最后可以直接编译再刷写到具体的电子控制器上使用。
2. 这种技术有什么优点?
在使用自动代码生成技术前,汽车控制软件的主要一部分开发流程是下图这样的:
首先系统和功能设计工程师需要制定软件的功能和需求,并设计控制模型,系统和功能设计工程师可能完全不懂C代码。
之后功能设计工程师提供具体的需求和设计说明书给软件工程师或者外包公司的码农。
码农将系统工程师的设计理念从模型转化为C代码,编译后刷写到电子控制器。
最后系统工程师或者测试工程师再拿到刷写好的软件去测试自己设计的功能。
而使用了自动代码生成技术之后,软件开发流程就成了下面这样:
码农下岗了。
软件开发中,功能设计工程师不再需要浪费时间给码农解释自己的设计理念,也不需要等待码农输出C代码,只需要使用Targetlink,Embedded coder加上其他软件工具来自动生成和编译图形化的代码。
那么相对于上面的手动C代码,基于模型的设计有显而易见的巨大进步:
节约了闭环设计中无数的时间和人力成本,那一房间上百个码农都可以节约下来了。
系统和功能设计工程师可以独立完成软件的输出,可以很容易避免因为技术文档描述不准确或者歧义而导致的从功能到代码的错误设计。
软件功能修改后可以快速自动生成代码而不需要经过复杂的流程由码农来做修改。
软件一致性不会像以前一样因为使用不同的码农而不同,代码也会由自动工具统一优化。 图形化的软件设计和Windows一样更易懂,类似Simulink中完整的诊断和查询显示功能也可以更容易对软件进行纠错,找到bugs。
基于模型的设计和自动代码生成技术对于包括汽车和航空航天在内的很多行业可以说是革命性的进步,也是目前汽车行业最多金和最热门的技术研发领域。
四、硬件在环
硬件在环仿真(Hardware-in-loop,简称HIL)。是一个反过来的过程,实时硬件运行Simulink被控对象模型(模拟被控对象),受真实控制器的控制,以此对控制器进行测试。此时,控制器是真的,被控对象是假的 。在实车测试之前,先对控制器做一个全面的功能测试。因为该被控对象是假的,所以HIL比实车测试安全高效,而且可以测试一些实车测试中不容易实现的极端case。
硬件在环仿真
判断一个设备是做RCP还是HIL的直观方法是:看设备的大小。
一般情况下,相对而言,被控对象模型比控制算法模型复杂,所以HIL对CPU算力的要求比RCP更高,因此HIL实时主机机箱比RCP的大;另外,HIL可能会涉及到程控电源、信号调理、故障注入等,所以HIL设备会有更多的附件。因此,比较小巧简洁的是RCP设备,比较大且复杂的HIL设备 。
比如,RCP设备甚至有下图这种手掌大小的。
<span style="font-size: 16px"><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"/></span>
HIL设备有桌面式的,也有机柜式的。
桌面式如下图左侧设备:
<span style="font-size: 16px"><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"/></span>
截图引自MathWorks公开课视频,链接如下:
Using Speedgoat Target Computer Hardware for Simulink Real-Timewww.mathworks.com
集成程控电源、信号调理板卡、故障注入板卡等的机柜式HIL设备如下图(引自MathWorks官网):
<span style="font-size: 16px"><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"/></span>
截图引自MathWorks官网
转自:https://www.zhihu.com/question/369208008/answer/1066342163
也即是硬件在回路(HiL ),首先看一下下面三种情况的区别(如果将实际控制器的仿真称为 虚拟控制器,实际对象的仿真称为虚拟对象,可得到控制系统仿真的3种形式:)
①虚拟控制器+虚拟对象=动态仿真系统,是纯粹的系统仿真;
③实际控制器+虚拟对象=硬件在回路(HiL)仿真系统,是系统的另一种半实物仿真 。