Bell Helicopter 开发世界上第一架电传直升机
挑战
为第一架商用电传直升机开发飞控软件,并通过DO-178B A级认证
解决方案
使用基于模型设计对控制律进行建模、仿真;从需求到模型进行跟踪;生成16000行代码,并进行验证
结果
- 集成时间减少 90%
- 开发迭代时间从几周减少到几小时
- 可信赖的代码质量
“Bell 525”是世界上第一架采用电传控制的商用直升机。电传系统将直升飞机全时置于计算机控制之下,通过减少飞行员的工作量,增加飞行员的环境感知能力,提高飞机的操控质量,从而获得最大程度的安全。
Bell Helicopter采用基于模型设计来开发和实施Bell 525电传系统的控制律。该项目是Bell Helicopter工程师第一次在DO–178B A级的工作流中使用自动代码生成。
“我们在Simulink中完成了所有的设计和大量的仿真,”Bell 525电传控制律的负责人Mike Bothwell说, “第一次用Embedded Coder为真正的飞行控制计算机生成代码时,我们没有发现任何集成问题。这点非常有吸引力,因为在以前的项目中,集成问题确实拖慢了我们的进度。”
挑战
Bell是第一个将配备电传飞行控制系统的民用直升机推向市场的公司。这意味着减少手写编码和手动代码审查,有助于加速DO–178B软件开发流程。在过去的流程中,一个手写代码的小改动将导致一个复杂的审查过程。对一个有强烈目标的飞行测试开发流程来讲,它花费的时间太长。
与之前的DO–178B开发方法相比,Bell 525工程团队想获得一些改进。首先,他们试图减少软件需求变化时导致的手写代码返工;其次,他们希望简化与飞机系统其他部分代码集成所需的步骤;第三,他们希望建立一个稳健的开发过程,让工程师们为其他团队和项目提供的结果能一致起来。
解决方案
Bell Helicopter的工程师设计、实施并验证了基于模型设计的Bell 525电传系统的控制律。
飞行品质工程师们使用Simulink®和Stateflow®开发了一种控制律模型,它是基于在IBM®Rational®DOORS®定义的900高级系统需求。该模型被划分为多个模块,包括螺距、滚转和偏航轴的模块,以及用Stateflow开发的逻辑和模式切换模块。
他们开发了一组测试用例,并在Simulink中运行仿真来验证逻辑和功能。
工程师使用Requirements Toolbox™,将在DOORS里定义的需求与对应的Simulink和Stateflow对象模型联系起来。这种可跟踪性使团队能够执行影响因素分析,识别出在项目需求发生后期更改时受影响的Simulink模型区域。
他们还使用Simulink Check™和Simulink Coverage™来检查模块是否遵守了Bell Helicopter关于DO-178的建模规范,并度量了测试用例的模型覆盖率。虽然覆盖率分析并不是资格认证中所必须提供的,它仍然起到重要的作用,因为它帮助团队从低层的测试追溯到高级需求。
该团队使用Simulink Report Generator™生成设计和需求跟踪报道,可用于指导审查过程中所需的流程复审。
工程师使用Embedded Coder®从Simulink控制律模型生成了约16000行C代码。
通过使用Simulink Code Inspector™,以及用DO Qualification Kit工具包对生成的代码进行检测,团队将生成的代码和控制律模型进行自动比较,查找不符合要求块、验证可追溯性,达到DO-178B代码审查的目标。
代码评审之后,完成代码并使用与Simulink模型相同的测试用例来进行测试。然后,软件团队将控制律代码与其他飞行控制代码整合在一起,准备进行“真实”系统测试。
Bell 525首次飞行成功,并正在进行进一步的全速、满载、极限高度的能力飞行测试。Bell Helicopter正在将基于模型设计拓展到将来的DO-178C项目中。
结果
- 集成时间减少90%。 “我们第一次自动生成代码,并在真实的硬件上运行时没有任何集成问题,”Bothwell说。“在过去,完成代码的初步集成要花大约10周的时间,但基于模型设计中只需要1周时间。”
- 开发迭代时间从几周减少到几小时 。 “在过去的流程中,当我们做一个小的设计更改时,需要几周的时间来等待软件团队完成编码,”Bell 525电传控制律设计师Jillian Alfred说。“使用Simulink和Embedded Coder,我们仅需更改模型并重新生成代码。在一个小时内我们就完成了一个新的测试版本。”
- 可信赖的代码质量。“基于模型设计使我们能够在不影响工作质量的情况下减少花在耗时的任务上的时间,” Alfred说。“就像对传统手写代码一样,我们对自动生成的代码质量有同样高的信心。使用Embedded Coder生成代码,我们知道代码正确无误;通过Simulink Coder Inspector,我们确保代码可以追溯到模型。”