分享

比特翻转:宇宙射线诱发2018年座舱失压事件

 秋天枫叶正变黄 2022-08-14 发布于上海

一些计算机在空中突然失效,事前毫无预兆,事后难以查明原因,于是会人们用“概率”和“寿命”来解释。这类似于说:空中飞人的寿命有很大概率比地面职业要短一些。但是,近年的一些研究能够帮助我们定位到电子器件在空中发生失效的具体原因。在航空事故的调查报告中,开始提到一种被称为“SEU”(Single Event Upset)的情况。

01

阿联酋A320座舱失压事件

机器翻译可能会把 SEU 解释成“单粒子翻转”。一年多之前,我写《2018年3月5日阿提哈德航空的A320客机在卡拉奇附近失压》,也抄过这个译法。但是,详实的资料让我们确信,SEU应该被翻译成……至少应该被理解成“(单)比特翻转”。也就是说,在计算机内部跑来跑去的无数二进制数据里,有那么一个0被翻转成了1,或者有一个1被翻转成了0。

在阿联酋局方发布的调查报告里提到:“SEU的定义是数字电子设备内存单元中的比特翻转(bit-flip)。在高空中,宇宙辐射(cosmis radiation)可以造成SEU。”要解决SEU产生的问题,不需要维修或更换部件,因为比特翻转在“软件代码的下一次写入循环”时可以恢复;在飞行员和维修人员的操作中,这通常意味着系统重置(system reset)。

其他原因也可能造成类似于“比特翻转”的结果。同一份报告指出:曾有一些A320的CPC由于老化而发生焊接点疲劳(fatigue in solded joints),造成“瞬时数据失效”(intermittent digital failure)。

重要的区别在于,SEU是可逆的,系统重置通常可以解决问题,这就是为什么有时也被叫做“软错误”(soft error)。而 IDF 则是不可逆的,需要将计算机拆下送修;在一些具体案例中,重新焊接内存元件可以解决问题。但是,精确定位数据故障的直接原因有时是困难的,阿联酋的调查报告将这两种情况并列在一起,认为它们是造成内存中断的最可能原因。

02

德国B737座舱失压事件

就在阿联酋A320座舱失压事件的同一年,2018年7月13日,发生在德国法兰克福的一架B737(瑞安航空)的另一起座舱失压事件,调查结论(发布于2022年8月10日)就明确地指向了“比特翻转”。

在空中,2号座舱压力控制器(CPC)发生了计算错误,导致飞机尾部原本用于缓慢释放机内增压空气的外流活门(OFV)突然被打开到很大的开度,因此发生了快速释压(rapid decompression)或者用通俗一些的语言讲,失压(pressure loss)。

但是,事后的功能测试和硬件检查证实涉事的这个计算机是好的,因此制造商认为它很可能是发生了“比特翻转”。注意报告里提到的“Soft Error”,前边讲过,系统重置通常能让计算机恢复正常。制造商还说:发生比特翻转的概率非常低,在最坏的情况下,每一亿个飞行小时发生3.5次。

这个概率是啥概念呢?2018年中国全民航的飞行小时数是1100多万小时,所以,我们假设这些飞行全部都是由B737(或A320)这样的飞机来完成的,那么粗略讲,全国飞行员每十年最多也就遇到那么三四次比特翻转事件。当然了,这个概率只是本事件中涉及的CPC制造商针对单个CPC计算机而估计的。

03

其他比特翻转事件

显然,如果把视野放到全球范围内来看,飞行员遭遇比特翻转事件的频次不见得有想象的那么低。

还是2018年,就在阿联酋A320座舱失压事件(3月5日)之前两天,2018年3月3日,发生在西班牙马拉加一架B737的另一起座舱失压事件。这起事件的调查报告,同样只是把“比特翻转”与“焊接点失效”并列提及,说它们都是可能的原因;同样地,没有提到制造商的观点。

考虑到阿联酋事件的报告发布于2019年5月3日,而西班牙事件的发布同一个月的月底(30日),那……我们还是……不多想了。总之,在2018年,全球起码有3起座舱释压事件与比特翻转有关,其中发生在德国的那一起是确定的,而另外两起只是疑似。一个案例也足够了,说明确有其事。

还有另外一个事件,也和比特翻转有关系:著名的澳航72号航班事件(《空中浩劫》S18E07)。2008年10月7日,澳洲航空72号航班,一架A330于37000英尺飞行时,突然自动执行了先上升再下降等一连串“修正动作”,最后机组关闭了自动驾驶系统,成功着陆,事件导致119人受伤。

根据2011年8月份来自美国半导体制造商Microsemi的一份文件,事件的原因是一个机载计算机疑似遭遇了宇宙射线(induced by cosmic rays)。这说的313页调查报告里反复提到的SEU(比特翻转)。

总之,天上的事情,原因千奇百怪,总有那么一些是宇宙射线的锅。

04

机组怎么办?

德国法兰克福那起事件,以及澳航72号航班,其实都关乎机组如何在宇宙射线诱发计算机失效的情况下为飞行安全兜底。

正如调查报告所说的,依靠系统冗余设计来应对此类极小概率事件。对于B737来说,为了防止增压空气意外释放造成的座舱失压,在正常情况下依靠自动控制,这由座舱增压控制器(CPC)来负责,这是第一个余度;如果它搞不定了,那么OFV上面的压力电门可以在关键高度自动关闭OFV,这是第二个余度;如果这个机制也失效了,机组还可以进入人工控制,这是第三个余度。

显然,这是从自动到半自动到人工、从电子到电气到手动的降级。如何手动呢?光是知道NNC程序的动作指令,只会扳电门,大概还是不够的。当那个极小概率事件降临,预先的学习和训练,才能确保作为第三个余度的机组能够顺利发挥作用。

回到德国法兰克福的事件,它其实是这样一个剧情:CPC2罢工,CPC1大战OFV,机组以为CPC2和1都挂了,人工介入后表现差强人意,还好平安落地……

详情参阅阮工频道的介绍:调查报告 | 2018年7月13日瑞安航空B737-800客舱增压故障导致33名旅客受伤

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多