闭环回路的最后一个焊点凝结,叶安把烙铁搁回架子,拿起示波器探头扎在信号输出端。
屏幕上的波形跳了两下,稳住了。
卡尔曼滤波的迭代收敛速度比他预估的还快三个周期。
三十秒内锁定目标运动要素,误差收敛到可接受范围。剩下的精度靠鱼雷出管后的线导修正补齐。
叶安把电路板从测试夹具上取下来,翻到背面检查了一遍焊点。没有虚焊,没有桥接。每一颗焊珠都圆润饱满,反射着日光灯管惨白的光。
他从口袋里掏出那部砖头大哥大,拨了个号。
两声。
“我,赵丰。”
“厂长,火控板子做完了。”
那头愣了一拍。“这么快?你不是说要一周?”
“提前了。”叶安把板子用防静电袋套好,塞进帆布包。“明天拉出去试。”
“明天?”赵丰的嗓门拔高了半个调,“你说拉出去,拉到哪?”
“海上。”
电话那头沉默了三秒。赵丰的呼吸透过话筒传过来,带着一股子被惯性碾压后的认命。
“几点?”
“早上六点。潮汐窗口在七点到九点之间,咱们得提前到位。”
“用哪条船?”
“022。”叶安把帆布包甩上肩膀,拉开隔间的门。“让林涛把三号艇从船坞里开出来,加满油,弹药库清空,火控接口留着。”
“弹药库清空?那你测什么?”
“测算法。不测炸弹。”叶安迈出仓库,铁皮门在身后哐当合拢。“鱼雷用训练弹,战斗部灌水泥配重。我只要验证射击诸元的解算精度和线导修正的闭环响应,不需要真炸。”
赵丰那边传来保温杯盖子拧动的声响。老厂长在喝水压惊。
“行。我现在就去安排。”
“还有一件事。”
“说。”
“王铁牛他们不要停。镍基合金弯管的试制照常推进,楚天阔和沈流那边也别断。我出海测试,他们继续干活。一码归一码。”
赵丰应了一声,挂了。
叶安揣着大哥大往行政楼走。天色已经暗透了,船坞方向的探照灯把龙门吊的剪影切在铅灰色的云底上。
他拐进办公室,把防静电袋从帆布包里取出来,搁在绘图桌正中央。
然后拉开铁皮柜子,从最底层抽出一个硬壳笔记本。
本子里夹着三张薄纸。每一张上面都是他手写的测试方案。三套。保守型、标准型、极限型。
保守型:单目标,固定航速,直航。验证卡尔曼滤波的基本收敛性能。
标准型:单目标,变速机动。验证滤波器对目标航向突变的跟踪能力。
极限型:双目标,交叉航路。验证火控计算机同时解算两个目标并分配射击诸元的能力。
叶安把三张纸铺在桌上,拿起铅笔,在极限型方案的备注栏里补了一行字:
“训练弹命中散布半径目标值:≤五十米。”
五十米。
在水下声学测距精度只有百米级的条件下,靠被动声纳方位数据加卡尔曼滤波反推出的射击诸元,要把一枚不带末段声学导引的训练弹打进五十米的散布圈里。
这是M国MK-117火控系统实战演习的公开指标。
叶安要用一块巴掌大的电路板和一套手写的算法,在第一次海试中就摸到这条线。
他把笔记本合上,塞回柜子。
拉灯。锁门。
凌晨五点四十。
港城的天还黑着。海面上一层薄雾,探照灯的光柱穿过去,在雾气里劈出一道浑浊的白。
022三号艇停在浮动码头旁边。深灰色的艇体贴着水面,低矮的舰桥和船身融为一体,连锚链都收进了甲板下面的暗舱。
叶安背着帆布包站在码头边上,帆布鞋踩在湿漉漉的木板上,鞋底打滑。
赵丰比他早到十分钟。老厂长穿着件军绿色的棉大衣,领子竖起来挡风,保温杯攥在手里,嘴里呼出的白气被海风一卷就散了。
“林涛呢?”叶安往艇上瞥了一眼。
“里头。”赵丰朝舰桥方向努了努嘴,“五点就到了。发动机预热、喷水泵自检全做完了。火控接口你自己上去接。”
叶安踩着舷梯上了艇。林涛从舰桥底下的舱口探出半个脑袋。
“叶总工。”
“接口在哪?”
“左舷战情室,第三个机柜。我把原装的火控模块拆了,留了标准的总线插座。”林涛缩回去,铁梯上的脚步声咚咚咚往下走。
叶安弯腰钻进舱口。022的内部空间比航母逼仄得多,到处是管线和压力表。他侧着身挤过一道水密门,摸进了战情室。
第三个机柜敞着门,里面的接线端子排整整齐齐。林涛干活讲究,连拆下来的原装模块都用防静电袋包好搁在旁边。
叶安从帆布包里掏出那块电路板,把排线插头对准总线插座,“咔”一声推到底。
指示灯亮了。绿的。
他拉过旁边一台便携式终端,屏幕上跳出初始化界面。光标闪了三下,提示符出现。
叶安敲了两行命令。卡尔曼滤波器启动,状态向量清零,等待声纳数据输入。
“走。”他从战情室退出来,爬上舰桥。
赵丰已经从码头上跨过来了,棉大衣的下摆被舷梯的铁栏杆刮了一道。
“目标船呢?”叶安站在舰桥上,朝码头另一侧看。
一艘老旧的拖轮停在三百米外的泊位上。船壳锈迹斑斑,烟囱冒着懒洋洋的黑烟。甲板上装着两台声学信标发射器,用铁链固定在栏杆上。
“信标频率调好了?”
赵丰从大衣口袋里掏出对讲机,按了一下。“老张,信标开机。”
拖轮甲板上“嘀”了一声。信标发射器的指示灯亮了,开始向水里发送标准化的声学脉冲。
叶安回头看了一眼战情室方向。舱壁后面,那块巴掌大的电路板正在等待第一笔真实的声纳数据。
“林涛,起锚。出港。”
022的喷水泵嗡地一声闷响,尾部喷出两道白色水花。艇体缓缓离开码头,在薄雾中划出一道浅浅的尾迹。
赵丰扒着舰桥的栏杆,保温杯都忘了喝。
四十分钟后。
测试海域。海面能见度三海里,浪高零点八米。
拖轮在两海里外按预设航线匀速直航,航速八节。信标的声学脉冲每两秒一次,穿过海水传到022的被动声纳阵列。
叶安蹲在战情室里,终端屏幕上的数字跳动着。
方位角数据一笔笔灌进滤波器。状态向量开始收敛。
第十秒。目标距离估计值:三千八百米。置信度偏低。
第二十秒。距离修正到三千六百五十米。航向估计值浮动收窄。
第三十秒。
叶安盯着屏幕。
距离:三千六百二十米。航向:零二七。航速:八点一节。
置信度指标跳过了阈值线。
锁定。
从第一笔数据输入到目标运动要素解算完毕,二十八秒。
比他设计的三十秒上限快了两秒。
叶安没动。他把训练弹的射击诸元调出来,核对了一遍航路规划。自适应弧线的起始段指向目标预测位置的前方一百二十米,中段根据实时方位修正自动弯折。
“一号训练弹,装填。”
鱼雷舱里传来液压机构的闷响。林涛的回报从对讲机里蹦出来:“一号管,装填完毕。”
叶安的手指悬在终端键盘上方。
屏幕上,目标的航迹线稳稳延伸,滤波器的预测位置和实际位置的偏差缩到了个位数。
“发射。”
一声沉闷的气压弹射。艇体微微一震。训练弹脱管入水,尾部的螺旋桨搅出一串白色气泡。
屏幕切换到线导监控界面。训练弹的实时位置用绿色光点标示,沿着那条自适应弧线稳稳推进。每隔两秒,火控计算机下传一次航路修正指令,光纤线导的延迟不到零点一秒。
绿色光点逼近红色目标光点。距离数字飞速递减。
八百米。五百米。两百米。
叶安的瞳孔微微收缩。
一百米。五十米。
绿点和红点重叠。
“命中。”林涛的吼声从鱼雷舱传上来,“训练弹近炸引信触发,散布半径~”
对讲机里翻了两页纸的声响。
“三十七米。”
叶安靠回椅背。
三十七米。比他设定的五十米目标值低了百分之二十六。
第一发。第一次海试。单目标直航工况。
赵丰从舰桥上探头往战情室里看。叶安的背影靠在椅子里,一动不动。
“小叶?”
叶安没回头。他在终端上敲了一行记录,然后切换到标准型测试方案的参数页。
“老张,通知拖轮。变速机动,航向随机改变。间隔九十秒。”
对讲机里应了一声。
赵丰扒着舱口的边框,往里面又探了半个身子。
“第一发中了?”
“中了。”
“散布多少?”
“三十七米。”
赵丰的保温杯从手里滑了一下,被他慌忙捞住。杯盖磕在舱壁上,叮当响了两声。
叶安转过椅子,从帆布包里摸出一颗水果糖,剥开扔嘴里。
“别激动厂长。这才热身。”
他嚼着糖,手指在键盘上敲出下一条装填指令。
屏幕上,拖轮的航迹开始不规则地扭动,信标的方位角数据剧烈跳变。
卡尔曼滤波器的状态向量跟着晃了两拍,随即咬住了新的目标航向。
叶安盯着那组跳动的数字,搪瓷缸子里的凉茶纹丝未动。
拖轮的航迹在屏幕上扭成了一条不规则的折线。每隔九十秒,航向突变一次,幅度在二十到六十度之间随机跳。
卡尔曼滤波器的状态向量晃了三拍。
叶安盯着那组跳动的数字,拇指搁在键盘空格键上方,没按。
第一次航向突变。滤波器的预测位置和实际位置瞬间拉开了一百八十米的偏差。状态协方差矩阵膨胀,置信度指标掉到阈值以下。
正常。
目标突然转向,等于告诉滤波器“你之前的预测全错了”。这时候算法必须迅速抛弃旧的状态估计,用新涌入的方位数据重建目标运动模型。
关键在“多快”。
叶安数着心跳。
五秒。十秒。十二秒。
置信度指标重新爬过阈值线。新的航向估计值稳定在零四三度,与拖轮实际航向的偏差收窄到两度以内。
十二秒重新锁定。
叶安在终端上敲了一行记录,切换射击解算界面。
“二号训练弹,装填。”
林涛的回报从对讲机里蹦出来:“二号管,装填完毕。”