对于汽车应用层软件来说,目前基于Simulink软件开发是比较流行的一种开发方式,选择这种开发方式原因我在之前的文章中已经为大家介绍.这里主要为大家介绍的是一个公司是如何进行基于模型化开发(MBD)生成代码的,而不是用Matlab和Simulink做仿真模型的.
这里主要围绕几个问题进行分析:
- 用什么开发
好多人会说当然是要用Simulink去开发,这句话其实也不完全对,Simulink本身是完全支持基于模型化开发(MBD)生成代码,但是由于它包含的功能太多,有些地方不利于一个公司进行功能开发,所以需要对Simulink软件进行二次开发,这里简单介绍一以下几点:
- 对原有模块库进行修改,将不满足生成代码或者不符合规范的模块进行限制,新增自定义模块比如用于生成代码的卡尔曼滤波、高通滤波器和低通滤波器等.
- 对自己新的模块库中的模块编写说明文档.
- 开发满足自己公司自动生成代码工具链,尤其是使用过Simulink的同学应该知道我们要想让Simulink模型进行仿真或者生成代码,我们需要对模型属性进行配置,有些配置我们无法理解它的真正含义;还有我们生成代码为什么老是用不了,这时就需要完善和解决这些问题去做基于自动生成代码工具链.
那么谁来进行开发这套工具链呢,一是将需求给Mathwork公司,让Mathwork进行开发和维护;另外一种就是找这块特别了解的大拿去开发和维护,这里不建议将这块进行外包,因为每家公司的需求和情况都不一样而且由于项目的变化后期的维护会特别繁琐.
- 怎么开发
对于一家公司来说,它要有它自己的风格而且需要满足ISO26262和MISRAC2012等要求,所以必须去要求每个功能开发工程师按照本公司的要求去开发,这里简要说几点:
- 要有自己公司风格的建模规范,就好比某餐饮公司,你在路边看到它的招牌风格或者进店感受它的装修和服务,就可以判断出这是哪一家餐饮公司.
- 由于一些模块在更改配置后生成的代码不符合要求,对新增模块库的模块进行使用说明和限制.
- 基于自动生成代码工具链的使用说明,说明了如何利用工具链进行建模和生成代码这样会大大提高功能开发工程师的工作效率.
- 为什么开发
当解决了上边两个问题以后,对于功能开发工程师来说,他们只需要考虑为什么开发这个功能和如何把这个功能开发好
- 对于为什么要开发这个功能,我们是根据功能需求来的,当我们了解了功能需求自然就知道为什么啦
- 如何把这个功能开发好,我相信这是功能开发工程所追求的,我们需要考虑除了功能需求之外的实际需求、功能的鲁棒性、算法的精简性和易读性.后期我会专门写文章介绍利用基于Simulink的功能开发.