第三次警報響起時,陳硯舟正跪在C-939驗證機客艙前段的檢修口旁。地板下方的線束盒已經拆開,編號線纜被固定夾分成六層,表面卻因爲機身持續抖動而微微顫動。每一次顫動都沿着鋁合金結構傳到他的膝蓋,再傳進骨頭裏。頭頂的照明燈忽明忽暗,測試終端上的姿態曲線像一條被人拽住的黑線,向右側一點點偏過去。
內話裏傳來試飛員老周的聲音。他努力保持平穩,尾音裏仍有一絲壓不住的緊繃:“左側襟翼位置反饋跳變,飛控主通道二次重構失敗。硯舟,給我一句準話,傳感器假信號,還是執行機構卡滯?”
陳硯舟沒有立刻回答。他把右手按在檢修口邊緣,藉着機身的震動判斷載荷變化,視線從襟翼反饋切到液壓壓力,再落到作動筒溫度和電源母線。位置反饋跳了三次,液壓壓力卻一直在正常區間,作動筒溫度也沒有出現滯後上升。三分鐘前,電源母線有過一次短得幾乎被系統抹平的跌落,持續時間只有0.17秒。
單獨看,哪一項都不足以解釋飛機右滾。把它們放進同一條時間線上,危險才從數據裏浮出來。陳硯舟抬手按住內話鍵:“先按複合故障處理。調航電櫃3B區冗餘供電切換記錄,重點看三分鐘前的瞬斷,不要只看自檢結論。” 坐在他身後的年輕工程師立刻切換頁面,手指卻在確認鍵上停了一下:“陳總,3B區剛纔自檢通過了。”
“自檢通過,說明靜態條件下的迴路能工作。”陳硯舟沒有回頭,聲音依舊很低,“現在飛機在飛行載荷裏。把時間戳、供電切換和襟翼反饋放在一張圖上。”他見過太多報告把“已通過”寫在最醒目的位置,卻把發生在邊界條件裏的異常縮進附件。工程事故很少由一個巨大而整齊的錯誤開始,更多時候是幾項互不致命的偏差,在同一秒裏碰到了一起。
年輕工程師咬住嘴脣,把三條曲線疊加。飛機又輕輕一沉,固定在艙壁上的工具箱發出撞擊聲。陳硯舟抬頭看了一眼舷窗,雲層在機翼下方快速向後退,陽光從雲隙裏照出來,明亮得讓人產生飛行仍然平穩的錯覺。C-939原本要完成的是一輪關鍵驗證,若今天的數據足夠乾淨,後續型號評審就能向前推進一大步。現在他只剩不到三分鐘,把故障找出來,把能夠留下的東西留下來。
屏幕上的時間線終於對齊。年輕工程師猛地吸了一口氣:“三分鐘前,3B區確實發生過供電瞬斷。備用通道切入後,航電櫃和左側襟翼位置傳感器的時間戳差了0.42秒。”
陳硯舟的眼神沉下去。問題已經從“襟翼有沒有動”變成了“飛控以爲襟翼甚麼時候動過”。一部分舊位置被系統當成了新反饋,一部分新指令又被寫進了舊狀態,自動重構會把這種錯位繼續放大。若讓主通道保持原來的修正邏輯,飛機會不斷糾正一個已經過時的位置,右滾趨勢只會越來越快。
“老周,切備份律。”陳硯舟按住內話,“鎖定左襟翼當前角度,取消自動配平補償,速度先別往下壓,保持高度,準備返場。備份律響應慢就用手動輸入補償,別讓主通道繼續重構。”
老周只回了一個字:“收到。”駕駛艙那頭傳來撥動開關和確認提示的連續聲響。陳硯舟把視線落回終端,等待姿態曲線重新收斂。曲線短暫變緩,隨後又朝右側抬起一格。年輕工程師剛要說話,陳硯舟已經抓住了檢修口旁的扶手。 “右滾趨勢加大。”老周的聲音第一次真正緊起來,“備份律響應慢半拍,右側姿態修正量在增加。”
如果故障只來自時間同步,備份律至少應當讓趨勢變緩。現在它還在惡化,說明還有一條沒有接進故障樹的鏈路。陳硯舟閉了一瞬眼,把電源、航電、傳感器、飛控、作動器和氣動載荷重新排了一遍。前世那些熬過無數次夜的評審桌、飛行試驗和事故覆盤,在這一刻沒有變成答案,只讓他更清楚該從哪裏繼續排查。 他抬頭看向年輕工程師:“把左翼前緣除冰加熱迴路調出來,查二號迴路。” 年輕工程師愣住:“現在查除冰?” “調出來。” “可飛控正在重構,除冰迴路和襟翼反饋......” “如果它們沒有關係,我會讓你把這句話寫進覆盤報告。”陳硯舟按住他的肩,把人推回終端前,“先看維護總線,不要等主顯示給結論。”
頁面刷新得很慢。C-939的維護總線數據沒有被納入駕駛艙主顯示,平時只供地面工程師覆盤使用。年輕工程師翻過兩層目錄,臉色從疑惑變成蒼白:“左翼前緣二號迴路異常導通,溫度信號沒有回傳主顯示,維護總線裏有記錄。”
陳硯舟伸手接過終端,快速放大那條曲線。溫度異常並不高,變化卻持續了足夠長的時間。局部前緣的熱變形、襟翼反饋的時間錯位和飛控自動補償疊在一起,恰好能解釋右滾趨勢爲甚麼沒有在備份律接管後消失。每一項都沒有單獨把飛機推下去,組合在同一個飛行狀態裏,就會把安全餘量一點點喫乾淨。 內話裏傳來老周的詢問:“硯舟,返場還來得及嗎?”
陳硯舟看了一眼剩餘高度,又看向右側不斷增加的修正量。返場這個詞有時是目標,有時只是讓所有人繼續按照流程動作的口令。此刻他不能用一句“還來得及”換取短暫的安定,也不能爲了顯得果斷,把判斷說成確定結果。 “按返場航向飛,老周。”他說,“保持當前速度,手動壓住右滾,能堅持多久堅持多久。我們這邊先把完整數據送到地面。” 年輕工程師抬頭:“飛機已經這樣了,爲甚麼還要全量上傳?”
“因爲地面必須知道它爲甚麼變成這樣。”陳硯舟把維護總線接口切到全量模式,“把供電切換、時間同步、襟翼位置、除冰迴路和飛控狀態一起打包。別爲了上傳速度刪掉異常前後的上下文。”
……
陳硯舟坐在牀沿,先伸手摸了摸鐵架上的掉漆處,才把視線落到桌面的日曆上。2007年6月12日,北航飛行器設計學院畢業季,距離畢業答辯不到三週。日期沒有因爲他的記憶改變,桌上的老式筆記本、窗臺上晾着的T恤和風扇葉片上的灰,也都與記憶裏一模一樣。
他又低頭看自己的手。手背年輕,指節沒有長期握工具留下的粗糙,手腕也沒有後來那道在總裝現場被金屬邊緣劃出的傷疤。C-939墜落時的失重感仍然壓在胸口,系統提示卻安靜得像從未出現過。陳硯舟沒有急着把那幾行冰冷文字當成答案,先把牀邊的畢業設計任務書拿起來,翻到日期那一頁。
“陳硯舟,你要是再盯着那張紙發呆,何老師下午就能直接把你判定成睡眠不足。”沈則用一疊打印稿敲了敲牀欄。這個年輕人留着利落寸頭,眼神明亮,衣服上還有裝配實驗室裏洗不掉的機油味。他和陳硯舟是同屆室友,結構與裝配方向,前世先去了無人機創業公司,後來在一次復材機翼評審中頂住供應商壓力,硬是把一份疲勞裂紋報告追到了根源。
那時的沈則頭髮已經白了一半,站在評審桌旁說話依舊直接。眼前這個人卻只關心陳硯舟下午能不能按時去辦公室:“兩點半,何老師辦公室。你昨天答應把畢業設計改回小型無人機氣動優化,開題說明還在這裏。你不會連這個都忘了吧?”
陳硯舟接過打印稿,封面上的題目很規矩:《小型固定翼無人機氣動佈局優化研究》。正常完成它,他可以拿到一份穩妥的畢業設計,也可以照着前世的路徑進入研究所,再在幾年後轉去商業無人機公司。那條路沒有錯,錯在他當年把“飛得起來”當成了“能幹活”,等真正面對客戶索賠、飛手培訓、故障追溯和備件短缺,才發現自己在畢業季錯過了最早的一次重新選擇。
沈則見他翻到第二頁,又補了一句:“許知夏早上來過。你要的飛控資料她放在郵箱裏,讓你自己看。她還問你是不是又準備把失聯返航和地面站塞進畢業設計。”
許知夏三個字落下來,陳硯舟的動作停了停。前世的她去了北方研究所,做過機載軟件和飛控審查,最擅長把需求、版本、測試和證據一項項釘在記錄裏。很多人覺得她講話慢,真正到了節點上,所有人都希望她已經把問題看完。她與陳硯舟真正熟悉,是十幾年後一次適航軟件會議。那時她戴着細框眼鏡,能用幾頁記錄把一場爭論從情緒拉回到事實。
此刻的許知夏還只是北航同屆學生,技術方向偏飛控與軟件,性格比陳硯舟記憶裏更鋒利。她願意幫忙,不代表願意加入一個沒有樣機、沒有資金、也沒有驗證條件的項目。陳硯舟把打印稿翻到最後一頁,看見自己年輕時留下的修改痕跡:無人機系統不應只作爲飛行平臺,電力巡檢、林業監測和測繪任務需要把飛行器、載荷、數據鏈、地面站、維護訓練連接起來。
那段話後面有一大片空白,像是寫到一半突然意識到題目已經超出了本科畢設的容器。陳硯舟拿起桌上的中性筆,在空白處寫下幾個詞:任務需求、系統邊界、故障樹、驗證計劃、交付責任。 沈則湊到桌邊:“你還真要改?”
“我先把清單列出來。”陳硯舟打開那臺啓動緩慢的聯想筆記本,等系統音樂響完,纔在文檔裏新建一頁,“題目能不能保留,下午聽何老師的意見;我先把自己要做甚麼說清楚。”
沈則看着屏幕上不斷增加的條目,表情逐漸從看熱鬧變成擔心:“你寫得越完整,何老師越不可能放你過。氣動優化至少能算,系統工程還要飛控、結構、通信和現場任務。你上哪兒找這些條件?”
“先不找完整條件。”陳硯舟說,“把最小閉環寫出來。電力巡檢需要甚麼,飛機在任務中會遇到甚麼,哪些必須驗證,哪些只能在後續項目裏完成,先分開。”
他把任務分成三層。第一層是畢業設計必須交出的東西:任務需求、總體佈局、飛控狀態機、地面站數據流程、故障樹和驗證方案。第二層是可以做演示的東西:失聯返航、任務降級、載荷快拆和數據時間戳。第三層暫時只做邊界說明:真實線路、山區風場、客戶培訓、維修與售後。 沈則指着第三層:“你連售後都想了?”
“客戶拿到設備以後,飛機不是從實驗室門口消失。”陳硯舟說,“如果換一根線束要拆掉半個機身,飛手不敢判斷故障,地面站又沒有記錄,產品就只在演示那一天存在。”
這句話說得平靜,沈則卻聽出其中的重量。學生做項目,最容易把結尾寫在“成功飛行”四個字上,陳硯舟卻在一開始就把問題拖到了交付之後。沈則沒有馬上反駁,拿過紙,在結構一欄補了“載荷接口和維護空間”,又在下面寫上“不要爲了輕量化把螺釘藏進手伸不到的位置”。
……