0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

聊聊MBD开发流程

冬至配饺子 来源:autoMBD 作者:autoMBD 2023-07-13 09:20 次阅读

作为一个小的知识拓展,这里先给出常见的开发流程(或称为开发方法,Development Methodologies):

  • 瀑布流方法(Waterfall)
  • V型方法(V-model)
  • 迭代式开发(Iterative and incremental development, IID)
  • 螺旋开发(Spiral)
  • 敏捷开发(Scrum)
  • 极限编程(Extreme programming, XP)

据我的了解,很多互联网大厂使用的就是敏捷开发,敏捷开发现在在国内也越来越火热。当然非管理岗位,很少会了解这些开发方法的细节,有兴趣的读者可以去学习一下。

从本质上来讲,MBD可以使用所有的这些流程来开展工作。但实际中,V型开发流程用的最多。简单的检索一下,我们就能得到很多V型开发流程,就像下面这样的:

图片

V型开发流程 - From Internet

有一个问题可能很少有人去考虑过,那就是介绍MBD的时候,为什么大家都不约而同的选择了“V型”?虽然没有很严谨地查证过,但有一个较为可靠的解释是,V型开发流程是来源于ISO26262的4、5、6部分,分别对应系统层、软件层和硬件层,见下图:

图片

Overview of the ISO 26262 series of standards - From ISO26262

“V型”其实是相对于更加传统的瀑布方法(Waterfall Methodology)而言的,MBD也可以使用瀑布方法来开展,瀑布方法一般长这样:

图片

The waterfall methodology in MBD - From MathWorks

但是瀑布流程并不符合MBD的开发思想,MBD有一个很重要的特征,那就是以模型为中心,反复验证、测试和迭代,这一过程在瀑布流程中是难以实现的。*(MBD的这一特征和敏捷开发有点相似了,感兴趣的读者可以去了解一下) *

2 V型开发流程

MBD的V型流程形式有很多种,包括先后顺序不同,执行内容不同等等。这种形式差异是正常的,实际项目开发中,拥有的资源和开发目标都不相同,是需要这种合理的调整和取舍。我认为ST的这张V型图能较好的描述MBD的开发流程:

图片

V-model with MBD - From ST

MBD V型流程的核心要素有以下几点:

**1. **需求定义

—— Requirements & Specifications

  • 项目开始的第1个阶段是需求定义,需求定义要求详细、具体,每一项需要有明确的验证和测试方法。同时需求定义还要求可记录,可追踪,所以要求和模型建立硬联系,即每一项需求有对应的模型来实现。要实现需求的追踪管理,就需要借助工具了(例如MathWorks的Simulink Requirements工具)。

**2. **系统架构设计

—— System & Architecture Design

**3. **组件设计

—— Components Design

  • 上述第2、3点即分层级的建模过程,在这个阶段实现相应的算法,或者状态机,或者其他函数API。这个阶段还可以实施的是MIL(Model In the Loop),即没有生成代码之前验证模型的有效性。
  • 如果有足够的资源,还可以在代码生成之前进行RCP(Rapid Control Prototyping)。RCP使用的是原型控制器(非最终形态的产品),一般情况下原型机的性能会高于落地的产品,所以它的验证能力有限,比不上HIL(Hardware In the Loop)。

**4. **自动代码生成

—— Code Generation

**5. **代码测试和验证

—— Code Verification & Validation

  • 第4、5点是代码的生成和验证,Verification和Validation的中文都可以翻译成验证,但它们的着重点不同:Verification是过程,Validation是结果,表示是否有效。具体地,Verification就是SIL(Simulation In the Loop)和PIL(Processor In the Loop);Validation就是SIL和PIL的验证报告。
  • 如果算法中需要用到定点数,那么在SIL和PIL之前需要对模型进行定点化。一般来说PIL的验证能力能覆盖SIL,如果控制系统不复杂,可以只进行PIL。

**6. **系统集成测试

—— Integration Testing

  • 第6点的系统集成测试即HIL(Hardware In the Loop)测试,关于HIL,以后再开新的文章具体谈一谈。

**7. **验收测试

—— Acceptance Testing

  • 最后,HIL测试通过以后,就可以给客户验收了。

关于V型开发流程中会使用到的一些工具和工具链,后续会专门文章介绍。

3 MBD的模型迭代

如果一帆风顺的话,上述V流程只走一遍就可以了。但往往事与愿违,在项目前期很难考虑得非常周全,前期的需求有遗漏或者错误,就需要及时修正,我们知道越在后期,修改前期错误的成本就越大。

这时就能体现出MBD相比于手写代码的巨大优势。因为MBD是围绕模型展开的,所以修复遗漏和错误也是通过模型修改来实现的。由于模型的图形化和结构化,使得能很方便、直观地进行需求更新和算法修改,而不用一行一行的检查代码。越是项目规模大,越能体现这种优势。

为了更好的说明MBD的模型迭代,这里把V型流程分为两个阶段:

  • 代码生成前——建模阶段;
  • 代码生成后——验证阶段。

那么MBD模型的迭代是如下进行的:

图片

MBD模型迭代 - From autoMBD

从上图可以看到,算法迭代和需求的更新都是是围绕着模型展开的,而将需求定义、建模和测试验证串联起来的是需求追踪。这样就在模型和需求之间打通了回路,形成了良好的反馈纠错和正向促进。

4 资源更新

资源中更新了ISO26262的英文文档(2018版part 1~12)和中文文档(2011版),聊天界面点击MBD->资源即可获得。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    112

    文章

    15941

    浏览量

    175862
  • 状态机
    +关注

    关注

    2

    文章

    489

    浏览量

    27410
  • MBD
    MBD
    +关注

    关注

    0

    文章

    24

    浏览量

    8885
  • RCP
    RCP
    +关注

    关注

    0

    文章

    23

    浏览量

    9014
  • PIL
    PIL
    +关注

    关注

    0

    文章

    19

    浏览量

    8575
收藏 人收藏

    评论

    相关推荐

    MBD(基于模型设计)讲义 全英文

    一个关于MBD的讲义,不过是全英文的,主要是国内做这个方面的太少,资料都较少
    发表于 07-07 18:01

    基于模型的设计(MBD)的深入讨论

    讨论1:2016-6-14-基于模型的设计(MBD)_讨论1主要论述了MBD的自动生成代码的可用性,以及自动生成代买与手写代码的效率讨论2:2016-6-14-基于模型的设计(MBD)_讨论2深入介绍了基于模型的设计(
    发表于 06-14 18:30

    MBD设计模式

    机器人开发设计MBD设计模式(机器人开发,控制系统开发)掌握基于模型设计的六轴机械臂控制系统的开发方法掌握六轴机械臂的知识和控制器的软硬件实
    发表于 06-28 12:29

    使用MBD进行stm32开发

    MBD学习之路1——使用MBD进行stm32开发准备工作准备工作
    发表于 08-17 07:55

    基于MBD的嵌入式系统设计

    【STM32F407+matlab+STM32CubeMX】基于MBD的嵌入式系统实现基于STM32CubeMX和HAL的嵌入式系统编程通过图形化配置和自动生成初始化C代码的方式,大大降低了嵌入式
    发表于 08-17 07:08

    MBD有哪几种设计模式?

    MBD有哪几种设计模式?
    发表于 10-13 06:35

    怎样使用stm32+simulink进行MBD开发

    怎样使用stm32+simulink进行MBD开发呢?有哪些实验步骤呢?
    发表于 11-18 06:05

    如何在stm32芯片上去实现MBD设计呢

    如何在stm32芯片上去实现MBD设计呢?求解答
    发表于 11-19 06:03

    如何在MBD中实现DAC?

    我正在使用 NXP S32k148 工具箱,我想在我想使用数模转换器(即 DAC)的地方构建模型。那么我可以在这里使用哪个工具箱?或者如何在 MBD 中实现 DAC(数模转换器)。
    发表于 04-07 12:50

    如何在s32k mbd中使用计时器?

    我想在 s32k mbd 中使用计时器,我必须在其中计算将轴原始值转换为陀螺仪角度的时间。我如何在 mbd 中使用它?
    发表于 04-10 09:39

    基于MBD测试

    趁着还没发霉,把以前的知识在总结总结。本篇是基于MBD测试系列文章的第一篇,也不知道能写多少,且写且看吧。 01概述 在基于模型(MBD开发的软件 中经常会涉及到MIL/SIL/PIL和HIL测试
    的头像 发表于 10-23 11:25 2780次阅读
    基于<b class='flag-5'>MBD</b>测试

    FPGA的详细开发流程

      FPGA 的详细开发流程就是利用 EDA 开发工具对 FPGA 芯片进行开发的过程,所以 FPGA 芯片开发
    的头像 发表于 07-04 14:37 4682次阅读
    FPGA的详细<b class='flag-5'>开发</b><b class='flag-5'>流程</b>

    初识MBDMBD模型管理

    基于模型的设计( **Model-Based Design,MBD** )是一种围绕模型搭建展开的一种项目开发方法。
    的头像 发表于 07-13 09:16 1835次阅读
    初识<b class='flag-5'>MBD</b>及<b class='flag-5'>MBD</b>模型管理

    MBD的界限和范围

    基于模型的设计(Model-Based Design,MBD)是一种围绕模型来展开的项目开发方法,其开发理念越来越受到关注。
    的头像 发表于 07-13 14:38 1264次阅读
    <b class='flag-5'>MBD</b>的界限和范围

    SOLIDWORKS 2024新功能——MBD

    SOLIDWORKS MBD是大家比较熟悉的解决方案了,在2024版本MBD的功能也做了很棒的提升。下面由众联亿诚为大家简单介绍一下。
    的头像 发表于 02-02 15:13 560次阅读
    SOLIDWORKS 2024新功能——<b class='flag-5'>MBD</b>