飞机使用什么操作系统,以及使用什么编程语言开发?[关闭]


113

我想知道是否有人知道商用飞机使用什么操作系统(例如波音或空中客车公司)。

另外,什么是(首选)实时编程语言?我听说波音公司使用了Ada,所以我的问题是-为什么要使用Ada?波音人选择该语言的标准是什么?(我猜想Java并不是一个不错的选择,如果恰好在垃圾收集器启动时唤醒它)。


11
当我第一次看到这个问题时,我以为是在问运行电影的系统以及座椅靠背的系统。我曾经在一次Delta航班上,他们重新启动了该系统,您可以说它正在运行Linux,我相信这是Debian的变体。
克里斯·哈珀

1
@ root45:啊……我承认它甚至还没引起我的注意。本来可以。我已经看到一些运行我认为的QNX,而其他运行Windows Embedded。
haylem 2012年

17
“它使用哪种操作系统?” “我认为是Vista。” “我们要死了!”
StuperUser 2012年

1
@StuperUser:我最喜欢的IT人群事件之一。(youtube.com/watch?v=8y4akOH8v8Q-2:34分钟)。同样,不仅是商业航空公司,而且如果不一样,更多地了解军用飞机的使用也会很有趣。Vista,哈哈。
2012年

1
@Piskvor:存在用于Java的实时VM(如使用语言,而不是平台)。我不知道JavaRT变体是否已用于严肃的(和有人居住的)飞行系统,但是我已经看到它用于模型或无人机。
haylem 2012年

Answers:


157

航空电子

对于飞机控制系统,我们通常不谈论操作系统,而是谈论航空电子集成航空电子或计算机机载系统。实际上,它们是许多独立或相互依赖的系统的组合,具有不同的功能(飞行控制避免碰撞,天气,通信,黑匣子 ……)。

每个控制器通常都是独立的模块(硬件和软件),出于明显的安全性和安全性考虑:它们是关键的控制和监视系统,如果其中一个发生故障或损坏,对于那些取决于飞机。当您飞行器中时,可靠性具有所有意义。所以通常是

  • 为执行任务而定制
  • 能够独立工作并与其他系统交互,
  • 能够容忍自身故障以及所连接的其他系统的故障(例如,因为您不希望飞行员的声音系统降低发动机控制功能)。

这不是一台运行所有内容的大型计算机。如果您是从军用飞机而不是商用飞机的角度考虑它(尽管在这方面很相似,但该图像可能会有所帮助):如果某个部分被击中,则您至少希望其他一些部分能够继续前进(控制通讯和安全系统的部分可能很有趣……)。因此,您还会在喷气客机中看到一大堆按钮,以跟踪不同系统的状态。

它们通常是作为运行其自身系统的自定义组件构建的,或者由微内核运行和调度的(在大多数情况下,它们具有对实时功能的支持)。

显然,这取决于供应商和国家/地区,但是他们通常至少需要遵循相当严格的一组法规,设计要求和协议细节,这些要求包括:

  • 控制他们严格遵守安全标准,
  • 与其他系统的相互通信(如果您在雷克雅未克起飞的飞机可以与东京的地面控制设备“对话”,那就更好了。)

标准化工作

DO-178B(1992年修订)及其后续的DO-178C(2012年修订)(和一堆相关文件的)是参考认证这样的合规性水平的例子,并通过FAA(美国)的认可,欧洲航空安全局(EU)和加拿大运输局等。诸如EUROCAE之类的多个其他组织也参与了此类文档的创建。

此类机载系统通常是定制软件,但已知以下系统可用于某些飞机:

为了让您对内置于航空电子系统中的元素有一个模糊的了解,此航空电子首字母缩写词列表指向其中一些(有些重叠)。

商业和军事航空电子设备中使用的著名语言

除了我们在“主流”编程世界中认识到的常见疑问之外,您还会想到一些经常引用的名称,例如Ada,以及一些鲜为人知的语言,例如(自2010年以来已“退休”)JOVIAL


相关的StackExchange问​​题:


2
@mattnz:谢谢。但说实话,这与OP的要求相差甚远。我试图提供有用的见识和用于文档目的的指针,但是当涉及到实际的实现细节时,很难找到硬数据。
haylem 2012年

“它们实际上是许多独立或相互依赖的系统的组合”,您是说这些设备有单独的硬件吗?
stijn 2012年

2
是的,它们往往是专用硬件。没有一架运行飞机的x86电脑。
钻机2012年

3
@stijn:是的,是的。这样想吧。它们是关键的控制和监视系统。如果其中一个失败了,那就意味着大发狂的问题,F超级大,礼貌程度不及此。因此通常是a)为执行任务而定制的b)独立运行并与其他系统接口的c)能够容错自身的故障以及与之交互的其他系统的容错能力(因为您没有(例如,不希望飞行员的音响系统取消引擎控制)。这不是一台运行所有内容的大型计算机。
haylem 2012年

@stijn:如果有帮助的话,从军用飞机而不是商用飞机的角度考虑:如果有部分被射击,您宁愿至少还有其他一些部分能够继续前进(我会说控制通讯和安全系统的部分可能会很有趣……)。因此,您还会在喷气客机中看到一大堆按钮,以跟踪不同系统的状态。
haylem 2012年

22

大多数现代飞机都使用通用RTOS(实时操作系统),几乎与工厂自动化,电站,轮船等中使用的东西相同。

空中客车公司使用了一些软件,包括诺斯罗普·格鲁曼公司的INTEGRITY并用C / C ++对其进行了编程,波音公司还使用了VxWorks。


2
“ ...通用RTOS ...”的陈述使RTOS进入航空电子系统所需的花费变得微不足道,这几乎与ACME Corps Digital TV Reciever中使用的RTOS几乎相同。
mattnz 2012年

3
否,但是VxWorks可以用于从Mar Rover到您的Blackberry手机的任何事情
Martin Beckett 2012年

抱歉,Blackberry中使用的是QNX,而不是VxWorks。但是,同样的原则适用-COTS rtos可以在飞机上使用-Martin
Beckett

12

物有所值:对于航天器(卫星和星际飞机),C和C ++仍然占主导地位(并严格遵守ISO标准),通常运行VxWorks。基于开发人员的熟悉程度,对编译器工具链的信心以及内部编码标准,实验室通常会坚持使用C或C ++。对于实时飞行软件,两种语言都有令人信服的理由,但每个组织都倾向于坚持使用其中一种。另一方面,辅助工具通常使用Forth,C和越来越现代的脚本语言(例如Lua)进行编程。


3
就我所知,它通常还是C或C ++的子集,例如MISRA C或JSF C ++。
编码员

10

同样值得注意的是,控制系统通常使用Simulink使用基于模型的设计来开发。然后将设计自动转换为C代码。人们仍然在阅读并验证代码。


当谈到软件工程中的关键系统时,我的教授确实提到了它。
Dielson Sales 2013年

我相信空中客车公司将SCADE用于其飞行控制系统中硬件和软件的功能规范。该工具可以生成C或Ada代码。
dodgy_coder 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.