讀古今文學網 > 發現的樂趣:費曼演講、訪談集 > 7 關於「挑戰者號」航天飛機事故的少數派調查報告 >

7 關於「挑戰者號」航天飛機事故的少數派調查報告

1986年1月28日,「挑戰者號」航天飛機在升空後不久爆炸,6名職業宇航員和1名中學教師不幸罹難。這個國家遭受了沉重的打擊,NASA(美國國家航空航天局)顏面掃地、威望受損,而在這之前的很多年裡,NASA均能成功完成空間發射任務——至少沒有出現致命的失誤。事後政府成立了一個調查委員會,除了查清事故原因外,還要求調查委員會給出具體措施杜絕此類災難再次發生。該委員會由國務卿威廉·P.羅傑斯率領,成員有政治家、宇航員、軍方代表和一位科學家。理查德·費曼就是調查委員會裡唯一的科學家,他參與調查也許已經預示:挑戰者號失敗的原因不會成為一個永遠的謎,一定會被找到。費曼比絕大多數人更有勇氣,他還不辭辛勞,乘坐飛機穿梭於全國各地,找到地面工作人員。這些工程師坦言,在這次太空計劃中,宣傳起了主導作用,審慎和安全則退居其次。費曼的報告差點被調查委員會壓下來,因為委員會認為這會讓NASA很難堪。但是費曼據理力爭,最終讓自己的調查報告被收錄在內——它只能屈尊被放在附錄裡。在調查委員會舉辦的現場直播的記者招待會上,費曼做了他那個著名的現場實驗,實驗材料僅僅是航天飛機上的一個密封圈(或O形環)和一杯冰水。這個實驗形象地說明了是關鍵部位的墊圈出了問題,原因正如工程師們警告的那樣——天氣太冷不宜發射,而各級管理者為了能按時發射以借此在上級面前邀功,對這個警告置若罔聞。以下就是那個具有歷史意義的調查報告。

導語

對於太空飛船機毀人亡的這種事故的風險評估,人們的看法分歧很大,他們給出的風險範圍在1%到0.001%之間。一線工程師給出的風險評估值較高,而管理人員給出的評估值則很低。風險評估結果相去甚遠,其原因何在?它又會帶來什麼後果?0.001%的出事概率意味著:在300年時間裡,每天都發射一架航天飛機,只有一架航天飛機會發射失敗。這麼說來,我們就更有理由追問:到底是什麼原因讓管理人員這麼信任飛船的性能,甚至到了迷信的地步?

我們還發現,《發射準備狀態評估》中准許發射的標準逐漸被放寬。之前在同樣風險條件下的發射沒有失敗,人們往往試圖用這種僥倖成功的案例證明下次再進行類似的發射是安全的。因此,顯而易見的缺陷一次又一次被容忍,有時他們會漫不經心地去修補缺陷,有時乾脆推遲發射——因為隱患還沒有被排除。

我手頭的資料有這麼幾個來源。首先是以書面形式呈現的「准許發射的標準」的若干個版本,從中可以看到標準一路變化的痕跡:原先嚴格的標準不斷被放棄、被偏離。還有,《發射準備狀態評估》中記載的每次發射記錄裡包括論證此次發射風險可接受的論據。另外還有安全官員路易斯·J.烏利安基於固體燃料火箭成功發射的歷程給出的第一手證詞以及相關報告。身為發射中止安全委員會主席,他還對一個問題做了深入研究:對將來行星探測計劃發射任務中鈽動力裝置(RTG[1])可能導致的放射污染的評估。我也掌握了NASA對這個問題的研究資料。為了瞭解航天飛機主發動機的發展情況,我拜訪了馬歇爾太空飛行中心的管理人員和工程師,還和洛克達因公司的工程師私下碰了頭。我還拜訪了為NASA當過發動機顧問的獨立力學工程師(來自加州理工學院)。為了收集航空電子設備(計算機、傳感器和效應器)性能可靠性的資料,我專程去了一趟約翰遜航天中心。最後,還有1986年2月由噴氣推進實驗室的摩爾等人遞交給NASA總部空間飛行辦公室的報告——《對可重複使用載人火箭發動機的潛在應用的評估認證》。該報告談論了美國聯邦航空管理局和軍方用於認證燃氣輪機和火箭發動機的方法。我也私下訪問了這份報告的作者們。

固體燃料火箭

安全官員研究了之前所有的火箭發射,然後評估了固體燃料火箭的可靠性。數據顯示,總共發射將近2900次,其中121次失敗(每發射25次失敗1次)。但是數據裡面包括所謂的早期錯誤,也就是每新出一種火箭,在最初幾次試射中發現設計錯誤並予以修改。對於技術成熟的火箭來說,更合理的數字應該是每發射50次失敗1次。如果能仔細挑選零部件和反覆檢驗,失敗率應該可以控制在1%以下,但是以今天的技術,0.1%可能無法達到(航天飛機上有兩隻火箭助推器,而固體火箭助推器的失效概率則決定了航天飛機的失敗概率,所以航天飛機的失敗概率應該翻倍)。

NASA官員辯解說,他們掌握的數據要低得多。他們指出,這些是不載人火箭的數據,但是,航天飛機是載人的飛行器,所以它「發射成功的可能性必然非常接近100%」。我覺得,這種說法想表達的意思不太清楚。是接近100%,還是「應該」接近100%?他們繼續解釋:「從以往的經驗來看,這個極高的發射成功率已經使載人航天項目和不載人航天項目有了根本的區別;換句話說,一個使用數字概率來評判,另一個則是工程判斷。」(這段話出自《行星任務中RTG安全性分析的航天飛機數據》3-1和3-2頁,出處:NASA約翰遜航天中心,日期:1985年2月15日。)確實,如果失敗概率低到0.001%,那就需要無數次實驗來證明它(從那一連串非常成功的發射中你可能得不到發射失敗的數字,只可能得出一個概率——迄今為止發射的總次數還不到10萬)。但是,如果實際的失敗概率沒有這麼低,通過合理的推測,發射飛船時就會出現這些情況:故障、事故未遂,甚至是事故。事實上,NASA以往的經驗已經表明,就是這些偶爾的故障、未遂事故和事故在警告人們:發射失敗的可能性並非那麼小。不要通過歷史經驗決定飛行器的可靠性——而安全官員恰恰與這個呼籲背道而馳,同樣與這個呼籲相悖而行的還有NASA,事事必提過往經歷,就像之前說到的那個報告,一開頭就是「從以往的經驗來看,這種極高的發射成功率……」最後要說的是,如果我們用工程判斷來代替標準的數字概率,那麼為什麼管理官員的估算和工程師的判斷會有這麼大的差異?看來,不管是出於什麼目的——無論對內還是對外,NASA官員確實誇大了其航天產品的可靠性,甚至到了幻想的地步。

發射許可和《發射準備狀態評估》的歷史這裡就不再重複敘述了(請參見調查委員會報告的其他部分)。在以往的發射中,一種現象毋庸掩飾,那就是允許使用已經發生腐蝕和漏氣的飛船密封圈。很明顯,「挑戰者號」航天飛機就是一個例證。在它之前的類似發射被人們多次提到:都允許使用此類密封圈,都能成功發射,於是就被當成了安全的證據。但是腐蝕和漏氣並不是設計的結果,它們在警示一定有什麼地方出問題了。設備運行不符合預期情況,那就說明有危險:飛船以這種意外並且我們不能完全理解的方式運行,可能導致更大的偏差。之前這個危險沒有導致大災難,這並不能保證下一次不會發生大災難,除非我們完全掌握了它的情況。這就像是玩「俄羅斯輪盤賭」一樣,第一槍子彈空髮根本不能讓人完全鬆一口氣,說不定開下一槍子彈就出膛了!造成密封圈腐蝕和漏氣的原因以及會導致的後果,人們都不是很清楚。並不是每一次發射和所有的連接處都會發生腐蝕和漏氣現象,這裡頭隨機的成分很高。有時候,即使所有的條件都符合要求,為什麼還是會發生大慘劇?

儘管每一次的情況都不相同,但是官員們的表現很是胸有成竹——他們彼此給出明顯很符合邏輯的論證,經常用之前「成功」的發射作為依據。比如,在判斷代號為51-L的飛行任務是否安全時——儘管在這之前51-C飛行出現過O形環(密封圈)腐蝕現象,他們指出,O形環腐蝕的深度只佔到半徑的1/3。因為先前一次切割O形環的實驗證明:只有當切割的深度達到一個半徑時,O形環才會失效。我們對造成腐蝕的因素知之甚少,而這一次發射,在不同的條件下腐蝕很有可能更厲害一些,他們非但沒有認真考慮這個因素,反而聲稱「安全因子是3」。「安全因子」原本是工程術語,在這裡使用這個術語顯得很怪異。如果我們建造一座橋,要求它經受住一定的載重量,同時橋樑不會發生永久變形、開裂或折斷,那麼所用材料的實際承受力通常應該達到預計載重量的3倍。這個「安全因子」考慮到了以下因素:不確定的超載,不可知的額外負荷或者材料本身可能有意料不到的缺陷,等等。假設一下,現在預定載重加到這座新建成的橋上,而一根橋樑出現了一條裂縫,這就是橋樑設計上的失敗。即便這座橋沒有塌,因為裂縫的長度只有橋樑長度的1/3,但是這根本和安全因子沒什麼關係。固體火箭助推器裡的O形環的設計初衷不是為了有朝一日它會腐蝕掉。O形環的腐蝕說明火箭某個地方出了問題,它不是判斷飛行器是否安全的一個指標。

不完全掌握導致O形環腐蝕的原因,人們根本不可能斷定這一點——下回導致的腐蝕不會比前一回嚴重3倍。然而,官員們自欺欺人,自以為是,他們完全不顧一個事實,即發射飛船的條件每次都不同。他們設計了一個數學模型來計算腐蝕的程度,然而這個模型不是基於物理學的理解,而是以是否符合實證曲線為判斷依據。說得更具體一些,他們設想一股熱氣流衝到O形環上,並在停滯點上測出熱量值(到此為止,物理上還是合理的,符合熱力學規律)。但是,在測定多少橡膠被腐蝕掉時,這個熱量是唯一起作用的因素——而計算熱量的公式出自用相似材料做實驗得出的數據。這個經驗公式用對數表示就是一條直線,因此他們把腐蝕程度定為熱量值的0.58次方——0.58是由最接近的一個符合點確定的。無論如何,用其他數字代入公式,他們證實那個模型能推測出腐蝕的程度(腐蝕深度是O形環半徑的1/3)。沒有什麼比相信這種答案更離譜的了!這個模型裡不確定性比比皆是。氣流的強度可能無法預測,它取決於油灰裡形成的孔。漏氣現象表明即使O形環沒有被腐蝕或只是部分腐蝕,它也會失效。大家都知道,經驗公式是靠不住的,因為那條擬合曲線並沒有穿過那些把它畫出來的數據點。很多點都不在曲線上,實際數值與曲線上相應的點的數值有兩倍的差距——要麼位於曲線上面,要麼位於曲線之下。單從這一點看,對O形環腐蝕嚴重程度的估算翻一番也是合理的。公式裡其他常數也有類似的不確定性,此外,還有別的一些不確定性。使用這個數學模型時,一定要密切關注諸多的不確定因素。

液體燃料發動機

在51-L飛行任務中,航天飛機的三個主發動機表現都很完美,一直到最後時刻,當燃料供應不足時發動機關閉。接著一個問題出現了:如果發動機失靈,我們也像調查固體火箭助推器那樣去仔細調查它,我們是否會發現類似的弊病——NASA不夠重視液體燃料發動機的缺陷,產品可靠性不斷降低。換句話說,導致事故發生的管理漏洞只限於固體火箭助推器部門,還是普遍存在於NASA?為了得到這個答案,我還調查了航天飛機的主發動機部門和電子設備部門,但是我還沒有調查軌道飛行器和外部燃料箱這兩個部門。

與固體火箭助推器相比,發動機的結構要複雜得多,涉及的大量工程問題要求也更精細。總的來說,發動機的工程質量很高,其運行中發現的不足與缺陷顯然也很受重視。

通常這種發動機(用於軍用或民用飛機)的設計方式可以被稱為「組件系統」或者「自底向上」體系。首先,必須徹底瞭解要使用的材料(比如用於製造渦輪葉片)的性能和局限性,而且要在實驗台上測試來確定這些特性。掌握這些情況之後,稍大一些的部件(比如軸承)的設計和測試要單獨進行。一旦發現有缺陷和設計錯誤,就要通過進一步的測試進行調試修正和驗證。由於每一次只測試一種零部件,所以這些測試或修正的成本不會特別高。最後,我們開始逐步設計整個發動機,並使之符合必要的規範。到這時候,發動機成功的時機到了,或者說任何故障都可以很容易被鎖定和分析,因為故障的模式、材料的局限性等都已經摸清楚了。調試發動機並解決最後遇到的難題也顯得沒有那麼困難,因為在這之前,大多數嚴重的問題都已經被發現並被及時處理,花費的成本也不高。

但是,對於航天飛機主發動機的設計,採用的卻是另一種方法,我們可以說,它是「自頂向下」的方法。發動機的設計和組裝一步到位,幾乎沒有對材料和部件進行細緻的初步研究。所以,當軸承、渦輪葉片、冷卻管等出現問題的時候,很難找出原因和解決問題,代價也要昂貴得多。比如,高壓氧渦輪泵的渦輪葉片出現了裂痕,那麼,問題原因出在哪裡?是材料本身的缺陷,還是有氧環境對材料性質有影響?是啟動或關閉時的熱應力,還是穩定運行時的振動和應力?抑或其主要原因在於某些速度下產生的共振效應?還有很多其他可能性。從出現裂紋到它導致機器失靈,這期間需要多長時間?這個過程和機器功率在多大程度上相關?利用組裝好的發動機作為試驗品來解決這些問題,這個代價太高了。我們不會為了找出故障所在和弄清楚為何發生故障而犧牲整個發動機。但是,想要做到對發動機工作時的性能可靠性心裡有數,就要精確掌握這些信息。沒有細緻的瞭解,就不可能有信心。

自頂向下的方法還有一個更大的缺點,那就是:如果某個缺陷被發現,除非重新設計整個發動機,否則一個簡單的修補操作——比如改變渦輪罩的形狀——可能都很難實現。

航天飛機主發動機是一個非常不同凡響的機器,與之前的所有發動機相比,它的推重比是最大的。它與那些發動機的相同點很少,或者可以說是截然不同的。因此,不出所料,各式各樣的缺陷和困難層出不窮。不巧的是,它的設計方式是「自頂向下」的,所以那些缺陷很難被發現和彌補。設計一架能重複使用55次的航天飛機的目標至今也沒有實現(總共工作27000秒,每次發射或試驗用時500秒)。現在,這種主發動機需要非常頻繁地維護和更換重要部件——如渦輪泵、軸承、薄片金屬罩,等等。每飛行3次或4次,高壓燃料渦輪泵就不得不更換(這個問題現在可能已經解決了),每飛行5次或6次,高壓氧渦輪泵就要更換——充其量是預期耐用程度的10%。但是,我們主要關心的是決定主發動機可靠性的因素。

在過去總共250000秒的運行過程中,發動機大概出現過16次嚴重故障。工程人員密切關注這些故障,並試圖盡快修復它們。他們採用的方法是在特殊設備上做實驗——這些設備是專門針對這些問題而設計的;或是根據一些線索(比如裂紋)仔細檢查發動機;或是做大量的研究和分析。這樣一來,雖然有自頂向下設計帶來的諸多困難,但是工程人員已經通過努力工作解決了很多問題。

下面是部分問題清單。那些帶星號(*)的是可能已經解決的問題:

高壓燃料渦輪泵(HPFTP)渦輪葉片裂縫(也許已經解決)。

高壓氧氣渦輪泵(HPOTP)渦輪葉片裂縫。

強力火花點火器(ASI)線斷裂。*

淨化止回閥故障。*

強力火花點火器內室腐蝕。

高壓燃料渦輪泵渦輪的金屬薄板開裂。

高壓燃料渦輪泵冷卻劑襯墊故障。*

主燃燒室輸出彎管故障。*

主燃燒室輸入彎管焊點偏移。*

高壓氧氣渦輪泵亞同步旋轉。*

飛行加速安全中止系統(在冗余系統裡出現部分故障)。*

軸承碎裂(已部分解決)。

4000赫茲的振動造成一些發動機不能運作,等等。

在這些已經解決的問題中,大多數是新型火箭設計早期的難題,因為有13個問題出現在頭一個125000秒,只有3個問題出現在第二個125000秒。自然,你絕不能確信所有的隱患都被找出來了,何況,在某些問題上,人們可能連故障原因還找不準,就採取了某些補救措施。所以,我們做這個推測並非全無道理:在接下來的250000秒,可能至少會出現一次事故,每次發射中,每個發動機可能出現事故的概率是1/500。每一次發射有3個發動機在工作,但是可能會出現一些意外,而且這可能會影響其中一個發動機。如果只有兩個發動機在工作,發射任務就會失敗。因此,我們可以這樣說,由於未知意外因素的存在,對於航天飛機主發動機故障可能導致發射失敗的概率,我們的估計不能低於1/500——甚至是他們自己也不能過於樂觀。此外,我們還必須考慮那些已知的但是還沒有解決的問題(上文列出的問題中沒有帶星號的)可能導致的後果。這個問題我們稍後再討論。(火箭發動機製造商洛克達因公司的工程師,他們在綜合考慮後給出的失敗概率估計值是1/10000;馬歇爾太空飛行中心的工程師給出的數值是1/300;與此同時,作為這些工程師負責匯報的對象,NASA卻聲稱失敗概率只有1/100000;而被NASA聘為顧問的一位獨立工程師,則認為合理的估計值應該是1/100或1/50。)

發動機的合格標準的變化歷程讓人很困惑,而且很難解釋得通。最初的標準好像是這樣的:兩個樣機順利工作的時間都必須達到(火箭成功發射)要求時間的兩倍,那就是發動機的工作時間的標準(2×標準)。這個起碼是聯邦航空局的慣例標準,NASA看似也採納了這個標準——最初的標準是能順利發射10次(因此要求每個樣機能成功發射20次)。顯然,最理想用作參照物的發動機應該是那些總工作(飛行+試驗)時長最長的發動機——所謂的「領航船」。但是,假如第三個樣機或其他樣機在很短的時間內失靈了,那該怎麼辦呢?當然,即便前兩個發動機正常工作的時間超長,我們也不能就此認為這次火箭發射是安全的。也許,最短正常工作時間更能代表真實的風險,所以,如果將安全因子設為2,火箭使用的時間只能限制為最短時間的一半。

安全標準逐漸降低的例子有很多,我們就拿高壓燃料渦輪泵的渦輪葉片做例子。首先,試驗整個發動機的思路不適用。每個發動機的很多重要部件(比如渦輪泵)都在頻繁地更換,所以安全規則的對象必須從整個發動機轉移到零部件。如果兩個樣機能夠安全工作一段時間,我們就把這段時間的1/2定為高壓燃料渦輪泵標準安全時間(當然,事實上,人們已經不再堅持把10次安全發射的時間定為標準安全時間)。但是,怎樣才算「安全」工作?在實際操作中,為了真正確保安全,聯邦航空局施行的標準比2×標準還嚴苛——他們把渦輪葉片出現一條裂縫也視作失效。有些時候,在一段時間內——從渦輪葉片剛出現一條裂縫,然後裂痕不斷擴大,到最後讓渦輪葉片斷裂,發動機還能夠一直正常運轉。(聯邦航空局一直在考慮出台安全新規則——把這種特殊的「安全」狀況也考慮在內,但是,要做到這一點,必須要在已知的經驗範圍內對已知的模型做非常仔細的分析,而且模型的材料也必須經過徹底的測試。而對於航天飛機主發動機來說,這些都不適用。)

高壓燃料渦輪泵渦輪葉片的裂縫通常出現在第二級。有一台在1900秒後出現了3條裂縫,而另一台在4200秒後也沒有出現一條裂縫——儘管在通常情況下,運行時間越長,出現裂縫的概率越大。為了進一步瞭解這個狀況,我們需要認識到:應力很大程度上取決於功率級。在火箭發動機工作的大部分時間裡,「挑戰者」號航天飛機的功率級應該維持在額定功率級的104%——就像之前的發射任務那樣。根據一些數據分析,功率級在額定功率的104%時,出現裂縫的時間大概會比109%功率級或全功率級(FPL)延後一半。將來的飛行也會保持在這個功率級上,因為這個功率級有更大的有效載荷,還有很多試驗都是在這個功率級做的。所以,我們把104%功率級上裂縫出現前的那段時間除以2,就得到一個時間單位——等效全功率級(EFPL)。(顯然,這也帶來了一些不確定性,但是目前還沒有對此開展研究。)之前提到的裂縫最早出現在1375秒EFPL。

現在,安全標準變成了「第二級(渦輪)葉片都要限制在1375秒EFPL之內」。可能有人提出反對意見,稱安全因子為2在這裡沒有體現。實際上,渦輪機運轉3800秒EFPL沒有出現裂縫,這時間的一半就是1900秒EFPL,所以,實際上我們的標準還更保守。我們的自我欺騙表現在三個方面。首先,我們只有一個樣機(符合這個要求),而且它不是「領航船」,而其他兩個樣機在3800秒和之後的一段時間內有17片渦輪葉片開裂(發動機內總共有59片渦輪葉片)。其次,我們已經拋棄了2×標準,並以等量時間標準來代替它。最後,在1375秒EFPL時確實開始出現裂縫。我們可以說:在1375秒EFPL之前,我們沒有發現過裂縫,但是,我們最後一次檢查結果顯示,出現裂縫的臨界點在1100秒EFPL。我們確實不清楚裂縫在這兩個時間點內出現的具體時候,我們只能做這樣的猜測——比如,裂縫有可能是在1150秒EFPL形成的。(將近2/3的葉片在實驗超過1375秒EFPL後會出現裂縫。最近的一些實驗已經明確顯示,裂縫早在1150秒就出現了。)把標準定得高一些很重要,因為「挑戰者號」的發動機的設定安全飛行時間非常接近極限安全時間。

最後,人們宣稱,安全標準並沒有被拋棄,整個系統是安全的,只不過不再遵照聯邦航空局「(渦輪葉片)不能有裂縫」的慣例,渦輪葉片只有在徹底斷裂時發射才算失敗。按照這種規定,就沒有哪一台發動機算得上運轉失靈。他們的想法是這樣的:既然從裂縫開始出現到葉片斷裂需要一段足夠長的時間,那麼通過檢查所有葉片有無裂縫,就能保證絕對安全。如果發現了裂痕,那就更換渦輪葉片;如果沒有發現裂縫,我們就有足夠的時間完成一次成功發射。這種做法讓渦輪葉片裂縫問題不再是關乎飛行安全的重大問題,而僅僅是一個如何讓葉片持久工作的問題。

也許情況真的是這樣。但是我們怎麼就能斷定:葉片上那些裂縫總是慢慢地開裂,而且不會在發射過程中導致葉片整體斷裂?3個發動機已經運行了很長時間,其中有幾個葉片出現裂縫(大概發生在3000秒EFPL),可是葉片整體斷裂的情況沒有出現。

但是,這種葉片裂縫的問題可能已經找到補救辦法。通過改變葉片形狀、對葉片表面進行噴丸處理[2],或是進行絕緣化處理來杜絕熱振動等方法,葉片就不會開裂。

高壓氧氣渦輪泵合格檢驗標準的歷史變遷,情況跟高壓燃料渦輪泵也十分相似,在這裡我就不細說了。

總之,很顯然,在對待航天飛機主發動機的一些問題上,飛行準備狀態評估和安全認證標準都倒退了,這和我們看到的固體火箭助推器安全標準的倒退如出一轍。

航空電子設備

航空電子設備(avionics)是指軌道飛行器的計算機系統,也包括它的輸入傳感器和輸出執行器。首先,我們只研究計算機本身,而不去考慮溫度傳感器、壓力傳感器等輸入傳感器傳來的信息是否可靠,或者負責火箭點火、機械控制以及給宇航員呈現內容的執行器是否忠實地遵循計算機的輸出指令。

整個計算機系統非常精密,程序代碼超過25萬行。它負責操控很多事情,包括飛行器爬升、進入飛行軌道的整個自動控制過程,當你按下某個按鈕決定好登陸地點後,它操控飛行器飛回地球,直到順利進入大氣層(速度低於1馬赫)。我們有可能實現著陸過程全自動化(除非起落架明顯脫離了計算機控制,出於表面上的原因,必須由飛行員手動操縱),但是,相比之下,由飛行員控制飛行器著陸會比全自動化著陸更安全。飛行器在整個軌道飛行期間,其計算機系統被用來控制有效載荷,向宇航員顯示信息,以及與地面(控制中心)交換信息。顯然,出於飛行安全需要,必須確保整個計算機硬件和軟件系統的精確性。

簡單地說,硬件系統的可靠性通過四個完全獨立且結構相同的計算機系統來確保。在這套系統裡,可能每個傳感器都有若干個備用傳感器——通常是四個——這些裝置會同時給這四個計算機系統提供信息。如果傳感器輸入的信息不一致,這時會根據實際情況確定有效輸入,或是採用平均值,或是按照「多數表決」原則來確定。這四台計算機的算法是完全一樣的,同樣,它們的輸入(每台機器都可以獲取包括備用傳感器在內的所有傳感器的信息)也是一樣的。因此,就任何一步運算而言,每台計算機的計算結果都應該是完全一樣的。這些運算結果要經常拿來對比,但是因為計算機的運行速度可能有輕微的差異,所以在每一次比較之前,要啟動一個停頓和等待系統。如果有一台計算機的計算結果與其他計算機不一致,或者它計算得太慢了,那麼其他三台計算結果一致的計算機就會被系統承認,而那台表現不佳的計算機就會被系統徹底淘汰掉。(而這三台計算機中)如果有一台計算機也失靈了——評判依據是其他兩台計算機結果一致,那麼它也要被系統淘汰,它負責的後續飛行任務也被取消。向預定著陸地點降落的任務啟動,負責操控的是剩下的那兩台計算機。由此可見,這其實是個冗余系統:僅有一台計算機失靈對它完成任務沒有任何影響。最後,這個系統還有個額外的安全保障,那就是:還存在第五台獨立的計算機——它的內存只裝有發射爬升和降落程序,如果那四台主計算機有兩台以上發生故障時,這台獨立計算機還是能夠控制降落過程的。

由於主計算機的內存空間有限,不能儲存整個飛行過程中所有爬升、降落以及執行飛行任務的程序,所以這些程序要靠宇航員利用磁帶安裝,前後總共要安裝四次。

為一個如此精密的系統更換軟件系統需要耗費大量精力,更不用說換掉整個系統,所以,這個系統投入使用這15年來,硬件一直沒有動過。現在的硬件系統已經過時了,就拿內存來說,還是老式的鐵氧體磁芯。找到能供應這種老式計算機的生產商,還要求性能可靠、質量過硬,現在已經變得越來越難了。現代計算機的性能可靠得多,運轉也快得多,電路簡化了,還可以做更多的事情,而且不需要多次安裝程序——因為它們的內存要比老式計算機大得多。

對軟件的檢測非常仔細,採取的是自底向上的方法。首先要逐行檢測新的程序代碼,然後檢測有特定功能的代碼段或模塊。檢測的範圍逐漸擴大,直到新的變化全部融入整個系統並得到檢測。這個完整的輸出被當作最終的產品、最新發佈的版本。但是,此外還有一個完全獨立的獨立檢查團,他們對待軟件研發團隊的態度很嚴苛,他們測試和檢查程序軟件的細緻程度,不亞於收到送貨上門商品的消費者。在模擬器等部件啟用新程序時,還要通過一個額外的驗證測試。如果他們在驗證測試中發現錯誤,會將其認定為非常嚴重的事故,而且,為了避免將來出現同樣的錯誤,他們會非常仔細地研究導致錯誤發生的原因。迄今為止,在所有程序編程和程序更改(分別對應新的任務和任務調整)過程中,總共發現過六次這樣的意外錯誤。他們遵循的原則是:所有這些檢測不屬於程序安全性的一部分,而是對安全性的測試,僅僅是為了避免災難性後果。飛行安全與否,其判斷依據就是這些測試中程序運行的狀況,這裡發現的任何錯誤都會引起有關部門的重視。

現在總結一下,計算機軟件檢測體系及其檢測的仔細程度確實達到了最高水準。這裡並沒有出現這種情況:一邊降低標準,一邊自欺欺人——對於固體火箭助推器或航天飛機主發動機的安全體系來說,這種情況很明顯。確實,管理層最近已經提議要減少這樣複雜、耗資又如此巨大的測試——他們認為,在航天飛機發展業已成熟的現階段,做這些測試是沒有必要的。我們必須抵制這些建議,因為持這種看法的人,他們沒有認識到微妙的相互影響,整個項目的某一部分即便一個很細微的變化導致的錯誤也會影響到項目的其他組成部分。飛船的使用者一直在不斷地提各種修改要求:要麼提出新的任務,要麼提出新的要求和修改意見。而按照他們的要求進行修改,代價很昂貴,因為需要做全面的測試。要省錢,合理的辦法是盡可能減少變動,而不是降低每一次改動後(必須要做的)測試的水準。

有人可能要說,完全可以採用更先進的硬件和編程技術大幅度改進這套精密的系統。任何外部競爭者都在這件事情上有後發優勢,對於NASA而言,這是否是個好主意,它也該認真考慮一下了。

最後,讓我們的視線回到電子系統的傳感器和執行器上來。我們發現,在關乎整個工程安全的故障和可靠性問題上,人們的重視程度反而不如他們對待計算機系統的態度。舉例來說,我們發現了一個問題——一些溫度傳感器不時發生故障。而18個月之後,我們發現,同類的傳感器還在使用,仍然時不時發生故障,直到有一次,兩個溫度傳感器同時發生故障,發射任務不得不取消。可是在下一次飛行任務中,這種不可靠的傳感器還在用。反應控制系統的情況也是這樣,它的火箭助推器在飛行中起到重新定位和控制的作用,可是性能也不太可靠。長期以來,雖然發射故障常有發生,但是因為有相當數量的冗余系統,還沒有一次故障嚴重到影響整個飛行任務。傳感器負責檢查火箭助推器的性能,如果一個火箭助推器未能成功點火,計算機就會選擇另一個火箭助推器來點火。但是,從設計的角度講,火箭助推器就不應該失效,這個問題應該得到解決。

結論

如果要執行一個合理的發射計劃,工程技術的進展速度往往不可能滿足最初的准許(飛行)標準的要求——那個准許標準定得非常嚴格,目的就是確保打造一個安全係數非常高的飛行器。在這種情況下,有關方面往往借助很微妙的、表面上又富有邏輯的論證,讓標準得以改變,從而使飛行計劃可以按時通過。這樣一來,人們就要在一個相對不安全的條件下去執行飛行計劃,其失敗概率的量級在1%左右(人們要得到更精確的數據,那就很難了)。

另一方面,官方管理層聲稱,他們相信飛行計劃失敗的概率是這個數據的1/1000。他們這麼做的一個原因可能是:讓政府看到NASA計劃周全,還能按時把事情幹得很漂亮,以確保政府給予資金支持。另一個原因可能是他們真的相信失敗率極低——這說明他們和一線工程師的溝通嚴重缺乏,甚至到了匪夷所思的程度。

無論是出於何種原因,都已經帶來了非常不良的後果,其中最為嚴重的莫過於他們鼓勵普通民眾搭乘這樣一艘危險的飛行器,就好像讓他們乘坐普通飛機航班一樣。和試飛員一樣,宇航員應該清楚自己所冒的風險,我們欽佩他們的勇氣。誰能否認麥考利夫(McAuliffe,「挑戰者」號航天飛機上的那位女中學教師)的勇氣呢?她能覺察到更真實的風險,而不是NASA官員讓民眾相信的那種級別的風險。

我們給NASA的官員提一些忠告吧,確保他們能夠腳踏實地,直面現實,努力去充分瞭解航天技術的弱點和缺陷,進而能積極設法解決這些問題。在比較航天飛機和其他進入太空的方法在成本和成效方面的不同時,他們一定要遵循實事求是的原則。同樣地,在簽訂合同、估算成本和評估項目難度等環節,他們也一定要秉承實事求是的態度。他們提出的飛行計劃的時間安排一定要合理和切合實際,實施過程中也不至於為了趕期限導致狀況百出。如果他們一一照做了,卻得不到政府的支持,那就隨他去吧。NASA得到的是公眾的支持,它應該對公眾持坦誠和誠實的態度,而且它有義務告知公眾所有的真相。這樣的話,這個國家的公民們就會在怎樣運用他們有限的資源這件事上做出最明智的決定。

對於一項成功的技術來說,尊重現實一定要凌駕於公共關係之上,因為你不能愚弄自然(規律)。


[1]放射性同位素熱電式發電機(Radioisotope Thermoelectric Generator)。——譯者

[2]噴丸處理也稱噴丸強化,是一種表面處理工藝,用於提高零件的疲勞強度,大型壁板零件成型以及清除零件表面氧化層等。——譯者