控制室里的九十秒点火记录,偏偏在最后一秒留下一个白格。
发动机确实按计划关机,现场阀门行程、泵转速和地面视频都能证明。缺的是模拟飞行阶段切换的远端确认:主控制器发出“关机完成”,另一端本该回一个“已收到并准备下一步”,记录里却没有。
总指挥认为地面试验已经通过,缺一条模拟回传不影响发动机性能。周野承认发动机过关,却不肯让整箭接口跟着过关。飞行中地面看不到阀门边上的人,只能靠那条回声判断下一阶段是否能接手。
林浩调出原始链路,发送端有完整记录,接收端却只有前一条正常心跳。两端时间同步已在上轮修好,不存在二十三毫秒错位把回声藏到别处的可能。
他还查了天线侧的独立监听。那条监听收到过正常心跳,最后的关机确认却没有出现。失踪点由“所有地方都可能”缩到发送端之后、接收端回话之前。周野让人在白板上画出每一段,任何人提出新猜测,都得指出它发生在哪一段。
试验场原本把关机完成、远端收到和地面看见写成一条“任务完成”标记。三个动作挤在一行,出了问题便谁都说不清自己证明了哪一步。周野要求记录表拆成三格,先把语言上的偷懒改掉。
“要不让它多发两遍?”陈大川问。
“如果对面根本没准备好,两遍只是更热情地喊空气。”周野把发送与接收两张表分开,“先找到是谁没听见。”
飞控组把试验重放一遍,不点火,只重放关机瞬间的电源切换与数据流。发送端仍显示命令已出,远端回声时有时无。将切换时刻错开半秒,回声又稳定。问题贴着电源转换边缘走,不贴着发动机燃烧走。
接收箱的电压记录没有明显跌到关机线以下。工程师一开始以为与电源无关,梁师傅却让他把采样放细。箱体电压只短暂下凹,处理器没重启,通信接口上的一只缓存芯片却在那瞬间清空了未提交的数据。
为避免又是一场仪器误会,材料组把独立供电的探头接到缓存供电端,另用光学记录对准状态灯。两套记录都看见同一瞬间的短暂复位。灯灭得太快,人眼只觉得它闪了一下,日志却能精确指出回执消失的时间。
那只缓存芯片此前通过了单独供电试验。单独测它时没有外部切换,问题自然不来;放到整箭链路里,才遇上别人关机时掠过的电压下凹。零件合格和系统合格再一次不是一回事。
于是出现一幅怪画面:接收端其实看见了命令,回执也写进暂存区,下一次读取前暂存区被电源切换抹掉。发送端坚持“我发了”,接收端无法证明“我存了”。
林浩找到前一次未丢包的记录,比较两次切换相位。成功那次,回执比电源下凹早几个毫秒写入持久记录;失败那次,回执刚好卡在边缘。它不是完全随机,故障窗口窄得像一扇快关上的门。
有人提出把电源切换整体延后。飞控负责人摇头,阶段切换涉及其他设备的既定顺序,不能为了一个通信箱擅自改整箭时序。地面可以在桌上慢半秒,飞行时不一定有那半秒。
周野要求把延后切换作为对照试验保留,而非正式解法。它证明故障与切电边缘有关,却不能靠挪动整套任务时序把问题藏起来。飞控负责人把这句话写进修改单,避免有人看见“延后后不丢包”就急着宣布完成。
吕建国打来电话问能否先把验收文件发出去。周野说发动机本体那一页可以签,整箭接口这页必须留空。他把区分写得明明白白:不是否认团队九十秒的成果,也不让一个没回声的接口搭成果的顺风车。
周野让人把“发送成功”从界面上改名为“已发出,未确认”。只有远端把命令写稳并回传,状态才能变成“已确认”。一盏绿灯若连证据的层级都分不清,迟早会让人凭颜色做错决定。
试验组用独立便携记录仪接在远端输入旁,确认命令边沿没有消失。下一步要修的是回执形成和保留的过程,而非再把发送功率加大。找准入口,才不会在错误的地方堆硬件。
报废件库里恰好有两块退役遥测板,一块缓存区损坏,一块供电接口不兼容新箱。系统提示可从它们身上重构一个短时保留回执的模块。周野暂时没确认,他要先弄明白回执到底该由谁来签名。
他把两块板放到桌上,没有急着拆。若让发送端自己生成“已收到”,再稳的存储也只是让它替远端说话。真正的确认必须在远端验证并写稳状态后产生;那一声回话晚一点没关系,不能提前冒名顶替。
林浩在试验图上标出五个节点,准备下一轮逐段注入同一事件。周野让他把不确定状态也留一个位置。工程师最怕在图上写“不知道”,但飞行控制最需要知道的,往往正是谁还没有足够证据说“知道”。
夜里,接收端又丢了一次回声。记录员指着发送日志说“关机已确认”,周野把那四个字划掉,只留下“关机命令已发出”。少的不是一句好听的话,而是另一端真正回答的那一声。