星簇衛星
阿麗亞娜V88飛行(Ariane flight V88)[1]是1996年6月4日阿麗亞娜航天公司阿麗亞娜-5運載火箭首次失敗的發射,該枚編號為501的運載火箭搭載了四顆由歐洲航天局研究衛星所組成的衛星群。
任務類型 | 磁層探測 |
---|---|
運營方 | 歐空局 |
航天器屬性 | |
發射質量 | 1200千克(2600磅) |
任務開始 | |
發射日期 | 1996年6月4日 12:34:06 (UTC) |
運載火箭 | 阿麗亞娜5G型火箭 |
發射場 | 庫魯航天中心3號發射台 |
任務結束 | |
丟棄形式 | 發射失敗 |
毀損日期 | 1996年6月4日 |
由於軟件設計中的多個錯誤,發射以失敗告終:對整數溢出保護不足的死代碼(其運行僅有效於阿麗亞娜4號運載火箭),導致異常處理不當—停止整個慣性導航系統(否則就不會受到影響)。使火箭在發射37秒後偏離飛行軌道,在高空氣動力作用下開始解體,最後通過自動飛行終止系統自毀。這一慘痛的失敗成為歷史上最著名、代價最昂貴的軟件漏洞之一[2],這次失敗造成的損失超過3.7億美元[3]。
發射失敗
編輯阿麗亞娜5型火箭沿用了阿麗亞娜4型慣性導航平台的代碼,但兩者的不同之處在於阿麗亞娜5型火箭早期飛行階段的水平速度更高,這導致校準函數計算出的內部水平偏差值(BH)出乎意料地高。根據阿麗亞娜4型的需求,校準函數可運行約40秒的飛行時間。阿麗亞娜5號升空後校準函數實際不起任何作用[4],但更高的水平偏差值導致數據被從64位浮點數轉換成16位符號整數值,引發數據溢出和硬件異常[5]:
P_M_DERIVE(T_ALG.E_BH) := UC_16S_EN_16NS (TDB.T_ENTIER_16S ((1.0/C_M_LSB_BH) * G_M_INFO_DERIVE(T_ALG.E_BH)))
由於擔心星載計算機運算能力的限制,軟件開發前,程式設計師僅保護了七個關鍵變量中的四個免於溢出,並依賴三個未保護變量錯誤的假定取值範圍(儘管這些假設對阿麗亞娜4型火箭軌跡是正確的)[6]。該異常使兩個慣性導航系統模塊停止運行,雖然它們原本為冗餘的。主動模塊向星載計算機提交了被解釋為飛行數據的診斷數位模式,尤其引起固體助推器和武爾坎主引擎噴嘴完全偏轉,使攻角超過20度,進而造成助推器與主火箭分離,觸發火箭自毀系統並中斷飛行[4]。
根據威廉·卡漢的說法,如果使用默認的IEEE 754異常處理策略(「預替代」),就可避免501號發射的損失,因為它不會中止計算[7]。關於墜毀事件的官方報告(由雅克·路易斯·利昂領導的調查委員會進行)指出,「阿麗亞娜5號開發的一個基本思路是傾向減少隨機故障。慣性導航系統(SRI)的供應商只是遵循了給定的規範,即一旦檢測到任何異常,就立即停止處理器工作。但這次發生的異常並非由於隨機故障而是設計錯誤所產生。異常雖被檢出,但處理並不恰當,因為直到故障出現前,該軟件一直被認為是正確的[...]。儘管故障是由於系統軟件設計錯誤造成,但可以引入機制來緩解此類問題。例如,慣性導航系統內的電腦應能繼續提供所需姿態信息的最佳估測。允許甚至要求在軟件異常時停止正在處理任務關鍵設備處理器的這一模式令人擔憂。事實上,失去適當的軟件功能非常危險,因為相同的軟件在兩台慣導單元中運行。在阿麗亞娜501火箭的案例中,它導致了兩台仍正常的關鍵設備被關閉」 [4]。
報告確認的有關測試的其他問題[4]:
- 對所有參與阿麗亞娜5型運載火箭計劃主要合作方的審查只是驗證其設計決策並獲得飛行資格。在此過程中,並未充分分析校準軟件的局限性,也未意識到它在飛行過程中繼續運行產生的可能影響。
- 慣性導航系統的規範和在設備層面進行的測試並未具體包括阿麗亞娜5型軌道數據。因此,沒有在模擬阿麗亞娜5型飛行條件下對重新校準功能進行測試,也沒有發現設計錯誤。
- 將慣性導航系紡全部納入整個系統仿真在技術上是可行的,但出於多種原因,最終決定只使用慣導系統的模擬輸出,而非真實系統或對其詳細模擬。如果當時將整個系統包含在內,則故障就可能被檢出。後來在計算機中利用慣性導航系統軟件和包括阿麗亞娜501號實際飛行軌跡數據等模擬環境進行的仿真飛行,真實地再現了導致慣性導航系統失效的事件過程。
- 水平速度和由此計算出的水平偏差數值等變量範圍應明確量化,而實際情況是,僅假定為16位範圍。
- 校準任務應在適當的時候停用,實際情況是,起飛後就開始運行。
- 應分析慣性導航平台的故障模型,以確保在整個飛行過程中能持續服務,而非只假定最多一台儀器會失效。現實情況是兩台儀器都出現了故障,輸出的診斷信息被解釋為飛行數據,而不是正常終止飛行。
有效載荷
編輯星簇衛星由四顆重1200公斤(2600磅)、安裝有224瓦供電太陽能板的圓柱形自旋穩定航天器組成。四顆衛星將以四面體的形式飛行,旨在對地球磁層進行研究。衛星將被插入到17200x120600公里(10700x74900英里),朝赤道傾斜90度的高橢圓軌道上[9]。
後果
編輯故障發生之後,又建造了四顆替代的星簇2號衛星。2000年,它們搭載在聯盟-U/佛蓋特火箭上被成對發射升空。
發射失敗使與複雜計算系統相關的高風險引起了公眾、政界人士和高管層的重視,從而增加了對確保安全攸關系統可靠性研究的支持。隨後對阿麗亞娜代碼(用Ada語言編寫)的自動分析是首個通過抽象解釋進行大規模靜態代碼分析的示例[10]。
這一失敗也損害了歐洲航天局火箭系列的優異發射記錄,這是由阿麗亞娜4型的高成功率所創造的。直到2007年,阿麗亞娜5型火箭才被公認為與以前的型號一樣可靠[11][查證請求]。
另請查看
編輯參考文獻
編輯- ^ V88 Ariane 501. www.capcomespace.net. [2021-12-25]. (原始內容存檔於2021-05-27).
- ^ Gleick, James. A Bug and A Crash. New York Times Magazine. 1 December 1996 [7 April 2012]. (原始內容存檔於2012-04-20).
- ^ Dowson, Mark. The Ariane 5 Software Failure. ACM SIGSOFT Software Engineering Notes. March 1997, 22 (2): 84. S2CID 43439273. doi:10.1145/251880.251992.
- ^ 4.0 4.1 4.2 4.3 ARIANE 5 Failure - Full Report. [2014-07-16]. (原始內容存檔於2014-04-26).
- ^ Nuseibeh, Bashar. Ariane 5: Who Dunnit? (PDF). IEEE Software. May 1997, 14 (3): 15–16 [2021-12-26]. S2CID 206482665. doi:10.1109/MS.1997.589224. (原始內容存檔 (PDF)於2021-11-17).
- ^ The lessons of Ariane. www.irisa.fr. [5 May 2018]. (原始內容存檔於4 June 2016).
- ^ W.Kahan. A Demonstration of Presubstitution for ∞/∞ (PDF). July 5, 2005. (原始內容存檔 (PDF)於March 10, 2012).
- ^ Le Lann, Gérard. An Analysis of the Ariane 5 Flight 501 Failure – A System Engineering Perspective. Proceedings of the 1997 international conference on Engineering of computer-based systems (ECBS'97). IEEE Computer Society: 339–346. March 1997. ISBN 0-8186-7889-5. doi:10.1109/ECBS.1997.581900.
- ^ Krebs, Gunter. Cluster 1, 2, 3, 4, 5, 6, 7, 8. Gunter's Space Page. [29 November 2011]. (原始內容存檔於2021-10-23).
- ^ Faure, Christèle. PolySpace Technologies History. [3 October 2010]. (原始內容存檔於2011-07-21).
- ^ Todd, David. ASCEND Space Intelligence News. March 2007.
延伸閱讀
編輯- Thomas, L.D. (2007) Selected Systems Engineering Process Deficiencies and their Consequences. Acta Astronautica, 61, 406–415.
外部連結
編輯- 雅克·路易斯·利昂等人,阿麗亞娜501號調查委員會報告 (頁面存檔備份,存於互聯網檔案館)
- 實現航天飛行網-星簇2號-阿麗亞娜501號爆炸,存檔於互聯網檔案館(存檔日期 25 March 2015).直接連結到視頻文件 — 火箭飛行最後幾秒鐘的鏡頭。
- 連線雜誌一歷史上最嚴重的軟件漏洞 (頁面存檔備份,存於互聯網檔案館)——篇關於前10大軟件缺陷的文章。阿麗亞娜5型火箭501號飛行軟件故障被認為是其中之一。
- (德語) 阿麗亞娜5型-501(1-3) (頁面存檔備份,存於互聯網檔案館)-一篇好文章(德語),其中給出了問題中的實際代碼。