当前位置: 首页 > 科技观察

在休斯敦地面报道,我们遇到了BUG:列举航空史上最著名的九大软件漏洞

时间:2023-03-14 12:14:51 科技观察

软件BUG可以说是无处不在,但在太空中造成的麻烦(和经济损失)可能超乎我们的想象。每当遇到软件bug,总是让人头疼;然而,在某些情况下,软件错误会比其他错误造成更多麻烦——例如执行太空任务。不管飞船有多大,吨位有多大,都需要依靠软件来完成自己设定的目标。然而,即使是编写代码时最简单的人为错误也会毁掉一次昂贵的太空旅行。未能仔细审查代码往往意味着外太空探索的成败,更不用说可能损失的数亿美元、多年的工作损失、未完成的任务,甚至是宇航员的生命。威胁。在今天的文章中,我们将通过九个例子来了解历史上发生过的真实世界航天器软件错误。自从火箭进入太空以来,这些问题就一直困扰着我们,相信它们将继续伴随人类未来的太空发展之旅。水手1号:划线的大屠杀年份:1962年实际发行:1962年7月22日,水手1号宇宙飞船从佛罗里达州卡纳维拉尔角升空,执行其金星任务。然而,工程师们并没有意识到水手一号上的制导软件存在一个致命的缺陷:在翻译穿孔卡时,议程中缺少一个划线符号(注意,不是连字符)。正因为如此,制导计算机错误地对正确的航向进行了补偿调整,这迫使地面控制人员在任务开始后的293秒内将其摧毁。好消息是,该漏洞在水手二号上成功修复,飞船在六个月后顺利完成了对金星的探索任务。海盗一号:软件更新导致“变砖”年份:1982年实际问题:早在勇气号、机遇号和好奇号等人造设备出现之前,海盗号着陆器就已经迈出了探索火星的步伐。1975年,配备轨道飞行器和着陆器的航天器发射了对这颗红色星球的撞击。维京一号于1976年7月20日成功登陆火星,此后不久维京二号发射升空。整个任务周期预计为90天,其目标包括拍摄和分析火星表面的生命迹象,两个着陆器(及其轨道飞行器)已连续运行数年。由于电池故障,VikingII任务于1980年4月正式结束。然而,维京一号的任务于1982年11月19日终止。为了解决电池问题,任务控制人员向着陆器发送了一系列命令,为新电池充电。不幸的是,这些新命令被写入着陆器的内存中,其中还包含与其高增益天线相关的参数——这意味着与地面控制器的通信被阻止了。NASA工程师在接下来的几个月里试图重新建立连接,但最终失败了——1983年3月,航天局正式宣布维京一号任务(和维京计划)失败。Phobos1:遗失单个字符导致悲剧年份:1988年实际问题:Phobos1是苏联于1988年7月发射的Phobos和Demios火星和月球探测器之一。但是Phobos1从未到达火星,因为定向软件测试中的意外行为。同年8月29日,由于上传的软件中有一个字符缺失,意外启动了定向软件测试,最终关闭了飞机的姿态推进器。最终结果是,在电池完全耗尽之前,探测器无法继续将其太阳能电池阵列指向太阳的确切方向。同年9月2日,火卫一号与地面控制中心失去联系。另一个火星探测器Phobos2也失败了,这次是由于硬件故障。整数溢出bug导致Cluster毁坏年份:1996年实际问题:Mariner1计划34年后,制导软件的另一个软件bug导致四颗卫星(统称为Cluster)再次被毁而阿丽亚娜5号火箭用于背着他们去了废墟。启动后不久,引导软件试图将64位浮点数转换为16位整数,导致溢出错误。这个错误本可以通过软件检查来避免,但技术人员选择忽略它。该制导系统(及其备份,也有错误)随后关闭,使火箭偏离了航线。最终,集群及其运载火箭于1996年6月4日启动自毁程序。四年后,承担相同任务的人造卫星终于在俄罗斯运载火箭上圆满完成任务。软件错误阻止Milstar卫星到达预定轨道年份:1999实际问题:Milstar由五颗地球同步卫星组成,于1994年至2003年发射,由美国空军运营,以提供国防部机制所需的安全通信。1999年4月30日,第六颗人造卫星发射升空,但由于泰坦四号运载火箭控制系统出现软件错误,未能进入预定轨道。卫星无法进入正确的轨道,并在十天后被地面控制中心关闭。使用英制单位而不是公投单位导致火星气候轨道器解体年份:1999年实际问题:火星气候轨道器(即火星气候轨道器)是火星探索者98计划的一部分,火星极地着陆器(即火星极地着陆器)device)一起构成项目。轨道飞行器的任务是进入火星轨道,研究天气和气候条件,并最终作为着陆器的通信中继。该轨道飞行器于1998年12月11日发射升空,但由于地面距离控制系统中的软件错误,从未到达预定轨道。1999年9月23日,在试图进入环绕火星的轨道期间,轨道器未能达到预期,最终导致其解体。技术人员通过分析发现,地面距离控制软件在发送推力指令时使用的是英制(即磅力),而不是航天软件常用的公决单位(牛)。啊,多好的乌龙球啊。火星极地着陆器:猪队友庆祝过早导致误伤遭遇失败。1999年1月3日发射后,着陆器在同年12月3日的一次着陆尝试中被摧毁。最终确定原因是软件根据三个着陆器腿部传感器返回的数据,误认为着陆器已经着地,因此关闭了下降缓冲引擎。显然,下降过程中的振动被传感器误认为是着陆,导致下降引擎在距地面40米处关闭并导致致命坠机。闪存错误差点将火星勇气号送入地狱重启年份:2004实际问题:在维京着陆器和好奇号漫游车之间,另外两个探险家勇气号和机遇号对这颗红色星球发起了撞击。目前,机遇号时隔九年仍在继续运营,而精神号的命运却更加坎坷——由于闪存管理异常,在离港近两周后迎来了使命的终结。其DOS管理文件系统的设计缺陷导致闪存快速填满,Spirit陷入了黑客攻击和重启的恶性循环。在2004年1月21日出现问题后,它的电池几乎完全耗尽,由此产生的过热几乎毁坏了设备。幸运的是,工程师随后解决了问题,重新格式化了闪存并使其在2004年2月6日恢复工作。Spirit在过去六年中一直保持运行,并成功完成了原计划的90天工作周期。内存分配失败导致火星全球勘测者任务失败年份:2006年实际发行:火星全球勘测者号(MarsGlobalSurveyor)于1996年11月7日发射升空,从火星低轨道进行为期一年的行星勘测研究。在出现软件错误之前,Surveyor已经正常工作了十年。但在问题暴露后,NASA于2006年11月2日与它失去了联系。经研究证明,问题出在2006年6月的一次软件更新,可能导致数据写入了错误的内存地址。记忆故障发生在同年11月初,直接导致Suveyor的太阳能电池板无法正常旋转,最终导致飞机电池直接暴露在太阳直射光线下,进而因过热而毁坏。原标题:休斯顿,我们有一个漏洞:9个著名的太空软件故障