第二天,周野把一块板放在发送端,一块板放在接收端,中间隔着完整的飞行模拟链路。
他不让人先改软件,而是让每个动作留下独立标记:命令到达、远端校验通过、状态写入可保留区、回执发出、发送端确认收到。五个动作不能再被一行“通信成功”糊成一团。
第一轮重放,前三个标记亮了,第四个没有。接收端的状态已经写稳,回执却在接口供电切换时丢失。周野松了半口气:远端没有漏做命令,只是没能把完成的事实告诉发送端。
接收端工程师想把回执发送动作提前,放到状态落盘之前。林浩立刻指出矛盾:那样回声可能先回来,远端状态却还没保存。电源若恰好在中间断开,地面会以为下一阶段可用,远端醒来却没有相应记录。
周野把顺序写在试验卡上:先完成,再保留,最后回话。三步中任一步失败,都要留下可辨认的状态,而不能用一个绿色图标把剩余两步顺手带过。
可飞控负责人提醒,即使这一轮是回执丢了,也不能假设下一次同样如此。若远端没执行,发送端只看见沉默,两种情况在旧界面上一模一样。
“所以要把沉默拆开。”周野说。
他们给接收端加一份独立事件序号。每个命令只对应一个序号,状态先写稳,再生成回执;发送端没收到时可以询问序号状态,而不是盲目再发一条可能重复执行的命令。
林浩拿门禁刷卡打比方:“刷了一次,屏幕没亮,你再刷一次,门可能只该开一回。”陈大川说他家小区门禁没这么高级,常常刷两次才认人。梁师傅提醒他们别把火箭的后续动作也做成“多刷几次总会开”。
退役遥测板被拆解检测,仍能使用的存储单元与隔离接口各有一半。系统能把两块板的合格部分合在一起,但周野先把失败板上的旧数据彻底隔离,避免上一台设备的事件序号跑进新箱。
质量组为每块板建立新旧序列号对照表。退役前的失效部位、重构后的复测项目和实际装入的位置一一对应。谁若只看到“重构成功”四个字,却不知道哪一半曾经损坏,就无法判断下一轮故障该从哪里查起。
梁师傅检查接插件时发现两块板的定位缺口不同。系统可以修正,但外壳上若仍留着旧标记,工人可能把新模块当成旧型号拿去别处。周野要求重构同时更新物理识别牌,能插上不是唯一的验收标准。
【检测到可重构遥测回执模块】
【重构目标:独立事件留存与切电后回读】
【消耗重构点:】
【当前重构点:】
重构后的模块没有把所有数据都存进去,只保留完成确认所需的最小记录。储存越多,越容易在短暂切换里把时间浪费在无关细节上;该留下的,是序号、结果和远端自身的状态。
质量组做断电试验,第一轮过了,第二轮却出现一条旧序号重放。林浩追查到测试脚本,它在恢复供电后自动补发上一条查询。模块正确回答旧事件,界面却把这个回答当成新确认。
负责界面的工程师起初不服,说回执内容是真的。周野把新旧任务编号放在一起:“昨天的车票是真的,也不能拿它进今天的站。”界面显示的数据必须带着发生时的身份,不能只看一句“完成”就替当前任务盖章。
他们把旧序号重放三次,模拟备链路延迟、控制器重启和记录服务器乱序。三次都只进入历史日志,没有给当前阶段加一盏绿灯。这几轮看似没推进试验,实际上把最难解释的一类假成功挡在门外。
周野让软件同时比对任务周期与事件序号。旧周期的回复可以存档,不能给当前阶段亮绿灯。这样既没有丢证据,也不会把昨天的回答拿来证明今天已经完成。
第三轮开始,他们故意在五个动作的不同位置切电。命令未到达、已到达未写稳、已写稳未回执、回执已发但发送端未收,各有不同的恢复路径。最危险的“只知道对面沉默”被拆成几种可查状态。
周野把发送端的自动重试次数限制住,真正的不确定状态要求地面或飞控按预案处理。系统不准为了让屏幕尽快变绿,擅自把不可逆动作重复一遍。
试验主管要求预案不能只写“人工确认”。值班员拿不到拆开设备的机会,必须知道能查看哪两路独立证据、等多久、何时停止下一阶段。飞控组把这些条件写成清楚的操作栏,周野让没参与研发的夜班人员照栏演练一次,避免手册只对作者自己有用。
远端回执终于在连续切换中稳定出现。陈大川看着新界面的灰、黄、绿三色:“以前绿灯只有嘴,现在绿灯总算有签字了。”
但周野没有让它进入飞行配置。模块由两块报废板重构,能扛一次切电,不代表能扛温度循环、振动和长时间运行。下一章要让这声“收到”在最难的条件下仍能留下来。