一、飞控安全概述

什么是基于模型的设计(MBD)

先说说MBD吧。说白了,就是用数学模型来驱动整个开发流程。

传统开发方式是什么样的?你写文档、画框图、然后手写代码。每一步都是人工转换,很容易出错。我见过太多项目,需求文档写了一套,代码实现又是另一套,最后测试才发现对不上。

MBD就不一样了。你直接在Simulink这样的工具里搭建模型,仿真验证通过后,代码自动生成。模型本身就是可执行的规格说明。

我个人习惯把MBD理解为三个核心环节:

  • 建模:用数学语言描述系统行为,比如控制律、状态机
  • 仿真:在电脑上跑模型,看看系统表现如何
  • 代码生成:模型验证没问题,一键生成嵌入式C代码

嗯,这里要注意一点。MBD不是简单的画图工具。你得真正理解背后的数学原理,否则模型跑出来也是错的。

核心观点:MBD的本质是用模型消除开发过程中的信息断层。从需求到设计,从设计到实现,从实现到测试,全部基于同一个模型。

为什么飞控需要安全开发

这个问题我问过很多刚入行的工程师。有人说是为了过认证,有人说是客户要求。其实都不全面。

飞控系统是典型的安全关键系统。什么叫安全关键?就是系统一旦出问题,会直接导致人员伤亡或重大财产损失。无人机从天上掉下来,砸到人怎么办?

我2018年参与过一个农业植保机的项目。当时团队为了赶工期,跳过了模型在环测试,直接飞真实硬件。结果呢?控制律里有个边界条件没处理好,飞机在自动返航时直接侧翻。幸好是在测试场,没伤到人。那次之后,整个团队再也不敢省安全流程了。

飞控安全开发的核心原因有三点:

  1. 失效代价极高:一次飞控失效,可能意味着整机损毁甚至人员伤亡
  2. 系统复杂度爆炸:现代飞控包含传感器融合、导航、控制、故障诊断等多个子系统,人工开发很难保证零缺陷
  3. 认证要求严格:DO-178C、DO-331等标准对航空软件有明确的开发流程要求

警告:千万不要以为飞控代码少就掉以轻心。我曾经见过一个只有2000行代码的飞控程序,因为一个整型溢出导致坠机。安全开发不是形式主义,是血的教训换来的。

MBD在航空/无人机领域的应用现状

现在MBD在航空领域已经相当普及了。波音787、空客A350的飞控系统,核心控制律都是用MBD开发的。国内商飞的C919,飞控软件也大量使用了模型生成代码。

无人机领域更是MBD的主战场。为什么?因为无人机迭代快,传统手写代码根本跟不上节奏。

我给大家列一下目前主流的应用场景:

应用领域 MBD使用程度 典型工具链
大型客机飞控 高(核心控制律) Simulink/SCADE + DO-331流程
军用无人机 中高(导航、制导) Simulink + Embedded Coder
工业级无人机 中等(部分模块) Simulink + PX4/ArduPilot
消费级无人机 较低(原型验证) Simulink快速原型

从这张表能看出来,越是安全要求高的领域,MBD用得越深。大型客机几乎全流程MBD,消费级无人机更多是拿来做快速原型验证。

为什么会这样?说白了,MBD前期投入大。你得买工具、培训人员、建立流程。消费级产品利润薄,很难承受这个成本。但工业级和军用领域,安全是第一位的,这点投入值得。

个人建议:如果你刚接触MBD,别一上来就想全流程覆盖。先从控制律建模开始,跑通模型在环测试,再逐步扩展到代码生成和硬件在环。我当年就是这么一步步走过来的。

MBD开发流程全景图

下面这张图是我自己整理的MBD开发流程。你看一眼,对整体有个概念就行。后面每个环节我们都会详细讲。

基于模型设计的飞控开发流程 需求分析 功能需求/安全需求 系统架构定义 建模与仿真 控制律建模 模型在环测试(MIL) 代码生成 自动代码生成 软件在环测试(SIL) 集成与验证 硬件在环测试(HIL) 系统集成测试 迭代反馈(模型修正) 部署与维护 实飞测试/持续监控 认证标准 DO-178C / DO-331

这张图展示了MBD飞控开发的完整闭环。从需求分析开始,到建模仿真,再到代码生成和集成验证,最后部署维护。注意那个红色的虚线箭头——迭代反馈。这是MBD的精髓所在。发现问题,回到模型层面修改,而不是直接改代码。

我见过太多团队,模型跑通了就直接生成代码,然后去改生成的C代码。这是大忌!你改了代码,模型和代码就不一致了,后面所有的验证都失去了意义。

记住一条铁律:永远在模型层面做修改。代码生成是单向的,不要反向修改生成的代码。这是MBD开发的基本底线。

好了,第一章就讲到这里。MBD的核心概念、飞控为什么需要安全开发、以及当前的应用现状,你应该有个基本认识了。后面我们会深入每个环节,从建模规范到代码生成配置,再到各种测试方法,一步步带你走通MBD飞控开发的完整路径。


公众号:蓝海资料掘金营,微信deep3321