用户故事

美国宇航局艾姆斯研究中心为月球大气尘埃环境探测器开发飞行软件

挑战

为LADEE航天器开发机载飞行软件

解决方案

使用基于模型的设计来模拟控制系统和航天器,生成26,000行C代码,执行HIL和PIL测试,并创建一个任务训练模拟器

结果

  • 用于训练和命令验证的模型
  • 飞行软件在轨道上无缝更新
  • 正式的代码检查流程简化

“与使用基于模型的设计相比,手工编写飞行软件将花费更长的时间,并且使协作更加困难。管理人员和硬件子系统工程师都理解Simulink模型,因此很容易达成共识,因为每个人都知道软件中发生了什么金宝app。”

Karen Gundy-Burlet博士,美国宇航局艾姆斯研究中心
艺术家渲染的美国宇航局LADEE宇宙飞船在月球表面附近运行。图片由NASA提供。

美国宇航局发射了月球大气尘埃环境探测器(LADEE),以收集有关月球尘埃环境的密度、组成和变异性的信息。机载光谱仪和其他仪器收集的数据和月球尘埃将帮助研究人员了解月球和太阳系中的其他天体。

为了在项目成本和时间限制下开发航天器的飞行软件,NASA艾姆斯研究中心的工程师采用了基于模型设计的低成本、快速原型设计方法。金宝app

“在Simulink中建模和模拟高级航天器控制功能,然后从模型中生成C代码,最大限度地减少算法设计师和软件开发人员之间的沟通错误,”NA金宝appSA艾姆斯LADEE飞行软件负责人凯伦·甘迪-伯利特博士说。“基于模型的设计还支持需求的早期原型,以及开发早期阶段的验证和验证。”

挑战

LADEE在设计和任务期间面临着几个挑战。首先,LADEE有广泛的可能发射轨迹。其次,该任务的仪器需要高度精确的指向,而月球的环境条件将要求航天器在轨道上频繁地滚动和翻转。

为了应对这些挑战,NASA工程师希望在开发过程的早期模拟大量任务场景和故障情况。为了帮助满足NASA软件开发的程序需求,他们需要建立需求、模型、测试和测试结果之间的双向可追溯性。

解决方案

NASA艾姆斯利用MATLAB开发了LADEE航天器的基于模型的设计机载飞行软件®和仿真软金宝app件®.开发是在一系列构建周期中完成的,每个构建周期包括建模、仿真、代码生成和测试。

在Simulink中,金宝appNASA Ames的工程师为飞行软件开发了模型,包括姿态控制、电源管理、热控制、导航、通信和命令处理的单独模型。该团队还开发了LADEE航天器的Simulink模型金宝app,包括其推进系统、环境和重力场。这些模型保证了飞行软件能够在现实环境中快速开发。

使用Simu金宝applink Check™,团队验证了他们的模型符合来自MAAB (MathWorks汽车咨询委员会)指南的自定义建模指南。

在Simulink中运行单元级模拟以验证子系统满足其需求之后,团队使用Simul金宝appink Coder™和Embedded Coder®从他们的Simulink控制器模型中生成超过26000行C代码。金宝app

为了捕捉任何设计错误,工程师们使用Polyspace Bug Finder™和Polyspace Code Prover™对生成的代码进行静态分析。

使用Sim金宝appulink Coder,他们从工厂模型中生成了用于处理器在环(PIL)和硬件在环(HIL)测试的代码。他们将控制器代码与NASA的核心飞行执行(cFE)和核心飞行系统(cFS)软件包集成在一起,并将其部署到Broad Reach PowerPC处理器上。

该团队进行了大量实时、系统级PIL和HIL测试,包括月球轨道插入、激活序列、科学操作和故障管理场景。

团队在整个项目中使用Simu金宝applink Report Generator来根据NPR 7150法规跟踪每个需求的需求和测试结果。

他们按时完成了软件开发,并与成本估算保持一致。

结果

  • 用于训练和命令验证的模型.Gundy-Burlet说:“我们使用了来自Simulink模型的模拟来训练金宝app我们自己执行任务。”“此外,在我们将指令信号发送到航天器之前,我们使用了来自模型的模拟来验证指令信号完成了预期的目的,没有产生负面的意外后果。”

  • 飞行软件在轨道上无缝更新.Gundy-Burlet说:“在执行任务期间,我们发现了航天器的恒星跟踪器和一些小的软件问题。”“我们在Simulink中更新了我们的状态估计模型,以解决这些问题,重新生成代码,在金宝app新软件上运行有针对性的测试套件,并将其上传到航天器上,航天器再飞行了一个月,没有发现更多的缺陷。”

  • 正式的代码检查流程简化.Gundy-Burlet指出:“Polyspace Code Prover识别了生成代码中的死代码以及手写代码中的问题。“它还识别出没有错误的代码,以及需要我们密切关注的代码。这些结果使我们能够在正式检查过程中对代码进行有针对性的评估。”