以下文章来源于踱步在六月十七大街 ,作者WindSnow91
写这篇文章的原因是因为想在知乎上回答一个问题 “Matlab/simulink在汽车行业的用的多吗?”,结果刚写完一段话想要插个图,知乎的图片系统崩了传不了图片了,想想也罢写篇文章总结下开发工具链吧,本文只做简单介绍后续的文章会有详细阐述,顺便希望知乎的程序员加油早点维护好图片后台。
刚接触Mathworks公司的产品的时候第一个用到的就是Matlab,当年我记得还有个类似的Wolfram公司的Mathematica两个都可以用来做数学计算和分析,后来学了自控原理之后开始接触了Simulink,结果Matlab和Simulink在我的使用工具里就深度绑定了。所以之前有个很火的问题是美国禁了Matlab怎么办,其实Matlab的替代方案还是很多的NumPy和Mathematica或者R都可以用来实现Matlab的功能,关键是Simulink的替代品太少,大概也就ASCET了。回到正题经过这么些年的发展Mathworks公司已经推出了如下图所示的基础模块工具以及遍布工业金融生物等领域的工具箱。
接下来,本文就用V模型的开发的顺序来说说mathworks在MBD开发上的工具链的布局。以当前要求的ISO26262开发为例。
在概念阶段结束后就正式开始了图中V流程的第一步系统设计的部分。以Powertrain系统为例,这部分工作主要是对整车级的需求进行分解到动力系统层级紧接着再分解到具体子部件等级,然后进行系统的架构设计。在刚才所描述的部分中就包含了对系统需求的管理和系统架构的设计。通常来说很多公司是使用类似与DOORS和SysML来进行需求的管理和架构设计,low一点的诸如我自己现在也经常用Visio来进行架构的梳理。在这部分中Mathworks公司推出了Simulink Requirements和 System Composer,Matlab的老玩家大概还知道Simulink V&V,Simulink Requirements就来自于V&V拆分。这个工具箱可以编辑管理需求,并关联上Simulink模型,同时可以直观的做到需求追溯。
但是这个模块的缺点在实际的工程中也显而易见,首先脱离了Simulink系统工程师没法干活儿,灵活度没有word,DOORS高,并且很多时候要求在外部做好需求再导入到Simulink Requirement中,而且Simulink的价格摆在那里,也不是所有公司都愿意花钱给系统工程师买的,毕竟刚毕业的很多系统工程师就是做的需求管理,懂的都懂。但是优点就是通过Simulink的统一环境内就把需求关联好并做好了追溯,查找问题时的方便程度可以说是最高的,整体工程环境如下图所示。
说完需求再来说说系统架构的设计,在MBD开发中的系统开发部分MBSE基于模型的系统工程也越来越多的被提到。这里对MBSE不做展开,后续的文章中将会介绍到这部分。在做系统架构设计的时候,System Composer可以结合需求确定架构同时定义好接口如下图所示,
定义好上述部分后最方便的一点是可以直接由System Composer生成Simulink的接口和软件框架,这样系统工程师可以直接将生成好的模型和软件架构的工程师进行讨论,没有问题的话就可以直接分配给对应模块的软件工程师进行软件开发。
如果我们先拿到了Simulink模型,如果我们对此不熟悉或者系统工程师想看看接口和架构,这时候可以从Simulink模型直接生成System Composer模块从而对系统架构进行梳理和调整,如下图所示
在完成上述的系统架构和需求管理之后就到了功能开发的部分,在这部分中Mathworks 的Simulink和Stateflow已经是非常成熟的工具了,再加上后来开发的诸如Simscape物理模型工具箱,Powertrain Block Set,Vehicle Dynamic Block Set等等可以很好地完成应用层软件部分的开发。
功能开发的过程中需要对建立的模型进行模型检查,这时候Simulink Check就派上了用场,Simulink check可以用来检查模型是否符合MAAB的标准如下图所示,
并且可以提供复杂度等指标用来简化和优化模型,使得Simulink模型更容易生成较为符合标准的代码。同时功能开发中Mil测试是必不可少的一个环节,在这个测试验证环节中Matlab提供了Simulink Test这个工具,可以验证建立的模型是否通过单元测试。同时配合使用SimulinkCoverage和Simulink Design Verifiery,并可以检测到模型整体的MCDC覆盖度,以及形式化验证的方式把隐藏的错误找到,使得建立的模型的准确度更高,更符合规范。从下图中我们能看到大概的过程。
功能完成后就到了生成代码的部分,代码生成之前的文章中已经做过简要的介绍,相信大家也已经了解了Embedded Coder这个工具,利用指定的TLC文件并加以配置可以生成适配不同芯片和硬件的代码。代码生成结束后PolySpace这个工具可以用来做代码的静待验证,并检查代码是否符合MISRAC的标准从而保证代码的可靠性,如下图所示。
并且可以同时追溯到Simulink模型中,
在静待检查结束后,我们可以对生成的代码进行Sil测试,并同时可以进行B2B的测试来验证模型和生成的代码运行的结果是否一致,尤其对于定点模型来说意义重大。
在完成一系统测试后就可以进行Hil测试了,这里做一个补充,对于很多公司来说功能做好后就可以进行RCP的验证。Mathworks虽然是个软件公司,但公司里总有些耐不住寂寞的人出来成立了一家名为Speedgoat的公司,这家公司提供了RCP和Hil的全套硬件的方案,虽然不是Mathworks自己的,但是这里暂且也把这公司算到Mathworks的工具链里面吧。测试设备如下图所示。当然Hil和RCP属于一个实时系统Simulink Real-Time也是必不可少。
在V模型开发的最后你一定需要一个漂亮的报告去打动你的老板,这时候Simulink Report Generator就可以发挥用途了(虽然真的是不如第三方的美观)。
介绍完Mathworks在V流程开发中的工具链不得不感慨Mathworks在工业软件领域的强大,但即便强如Mathworks其实在这些工具链里面也并非做的都非常好,很多时候是需要我们做二次开发才能满足我们在软件开发中的需求,并且一些工具箱并不如很多其他公司的专业工具箱,所以围绕着V流程的开发很多小公司应运而生,并且在系统以及整车的测试中Vector和ETAS有很高的市场占有率,以后在介绍别的工具链的时候会补充上这些公司的产品。
这篇文章也算是自己对于V流程开发以及工具链的回顾和使用的思考,写的比较流水账并没有做太多的展开,文中的图大多也是来自Mathworks官网,如有侵权可以联系本文作者删除。
文中难免有疏忽的地方,欢迎大家交流指正。
已完成
数据加载中