五点整,开始第一次测试。”
……
下午五点。
实验室里,所有人都到齐了。
韩栋、陆佳杰、李云禾、林淑仪、倪光楠,还有十几个核心工程师。
大屏幕上,显示着虚拟列车的三维模型。
这是陆佳杰团队用超算建立的数字孪生体。
列车的每一个部件,从车头到车尾,从转向架到车顶受电弓,全部按照真实参数建模。
“系统自检。”陆佳杰坐在操作台前,敲击键盘。
屏幕上开始滚动数据。
“速度传感器,正常。”
“压力传感器,正常。”
“制动控制阀,正常。”
“CAN总线,正常。”
“时钟同步,误差0.8微秒,正常。”
所有指标,全部绿灯。
李云禾站在操作台后面,手里拿着一个红色的按钮。
这是紧急制动按钮。
“开始吧。”李云禾说。
陆佳杰深吸一口气,点击了启动按钮。
屏幕上,虚拟列车开始移动。
速度表的指针缓缓上升。
100公里,150公里……
韩栋站在大屏幕前,他的目光紧紧盯着屏幕右下角的一个数字。
延迟时间:0ms。
这是从控制指令发出,到执行器响应的时间差。
现在是0,因为还没有发出任何指令。
速度继续上升。
180公里,190公里,200公里。
“保持200公里匀速。”李云禾说。
陆佳杰调整参数,列车进入巡航状态。
屏幕上,虚拟的铁轨在飞速后退,两侧的树木、电线杆变成了模糊的影子。
一切都很平稳。
李云禾盯着屏幕,眼睛眯了起来。
突然,
他按下了红色按钮。
紧急制动!
屏幕上,一个巨大的红色警告框弹出。
同时实验室角落里的制动控制阀发出嘶的一声,压缩空气从阀口喷出。
所有人的目光,瞬间集中到屏幕右下角。
延迟时间的数字,开始跳动。
10ms,50ms,100ms……
最后,定格在了300ms。
0.3秒。
实验室重新归于寂静。
陆佳杰的脸色瞬间煞白。
他盯着那个数字,手指在键盘上颤抖。
“不可能……”陆佳杰喃喃自语。
“已经优化过中断响应,用了内联汇编,时钟同步误差只有0.8微秒……怎么会有0.3秒的延迟?”
李云禾没有说话。
他只是静静地看着屏幕。
屏幕上虚拟列车在制动指令发出0.3秒后,才开始减速。
按照200公里的时速计算,0.3秒意味着列车多跑了16.67米。
16.67米。
在高速铁路上,这个数字可能意味着生与死的区别。
如果前方是一个信号机,16米就是撞上去和停在安全距离之外的区别。
如果前方是一个道岔,16米就是脱轨和安全通过的区别。
韩栋走到操作台前,看了一眼数据日志。
“把刚才的数据流导出来,我要看每一个环节的时间戳。”
陆佳杰颤抖着手,敲击键盘。
很快,一个启航办公软件的表格出现在屏幕上。
表格里密密麻麻记录着每一个数据包的发送时间和接收时间。
韩栋的目光从上往下扫描。
突然,他停住了。
“这里。”韩栋指着其中一行。
“CAN总线仲裁延迟,250毫秒。”
陆佳杰凑过来看到那一行数据,整个人愣住了。
“怎么可能……”陆佳杰的声音有些发抖。
“设置的制动指令优先级是最高的,怎么会被延迟250毫秒?”
韩栋没有回答。
他继续往下看。
很快,他找到了原因。
“看这里。”韩栋指着另一行数据。
“在制动指令发出的前一刻,辅助电源控制单元正在上传一个诊断数据包。
这个数据包长度是128字节,在1Mbps的总线速度下,传输时间大约是1毫秒。”
陆佳杰点了点头。
“对,1毫秒,这很正常啊。”
“但你看这个。”韩栋又指着下一行。
“在这个数据包传输完成之前,空调控制单元又发送了一个状态报告,64字节。
然后是车门控制单元,32字节。
然后是照明控制单元,16字节……”
陆佳杰的脸色越来越难看。
他明白了。
虽然制动指令的优先级最高,但CAN总线的非破坏性仲裁机制,只在总线空闲时生效。
如果总线正在传输一个数据包,即使优先级再高的指令也得等这个包传完。
而在高负载情况下,各个控制单元都在疯狂上传数据。
一个包接一个包,就像多米诺骨牌。
制动指令就这样被堵在了队列里。
250毫秒,就是这样累积出来的。
“还有50毫秒呢?”林淑仪问。
韩栋指着日志的最后一行。
“液压执行器的响应时间。
从电磁阀通电,到制动风缸压力上升到设定值,需要50毫秒。
这是物理延迟,没法优化。”
实验室里再次陷入沉默。
陆佳杰双手抱着头。
他觉得自己这四十八小时的努力,全部白费了。
李云禾走到陆佳杰身边,拍了拍他的肩膀。
“小陆,别灰心。”李云禾安慰着,是长者对晚辈的激励。
“失败不可怕,可怕的是不知道为什么失败。”
他指着屏幕上的数据。
“现在知道问题在哪了,总线拥塞,这就好办了。”
陆佳杰抬起头,眼睛有些红。
“李老,您有办法?”
李云禾看向韩栋。
“韩栋同志,你那个时间触发机制现在只是理论对吧?”
韩栋点了点头。
“对,还没有实现时间窗口的硬件调度。”
“那就实现它。”李云禾说道。
“把总线时间切成片,给制动指令预留专用窗口。
不管其他单元有没有数据要发,这个窗口都空着,只等制动指令。”
陆佳杰猛地站起来。
“对!时间触发!”
他快步走到白板前,抓起马克笔。
“如果把基本周期设为10毫秒,前5毫秒只允许传输关键指令,后5毫秒才是共享窗口……”
陆佳杰飞快地在白板上画着时序图。
韩栋看着他,嘴角微微上扬。
年轻人就是有这股子劲。
摔倒了,爬起来继续跑。
“佳杰,这次改动涉及到底层调度器的重写,工作量不小。”韩栋说道。
“我知道韩总。”
陆佳杰转过身,眼中燃烧着火焰。
“给我七十二小时。”
韩栋看了看手表。
“好,五月十三日,我要看到新版本。”
“没问题韩总!”
陆佳杰点了点头,转身就往外走,身后跟着那十二个工程师。
倪光楠叹了口气。
“韩总,这次测试……”
“很好。”韩栋抢先说道。
“暴露问题,就是最大的成功。”
他走到窗前,看着楼下灯火通明的燕京城。
“老倪,你知道为什么我一定要搞硬件在环测试吗?”
倪光楠摇头。
“因为只有在真实环境里,那些藏在代码深处的细节才会跳出来。”韩栋转过身。
“如果今天这个问题是在首发列车上暴露出来,后果不堪设想。”
倪光楠沉默了。
他明白了。
这0.3秒的延迟,不是失败。
这是启航在正式投入使用前的宝贵经验。
李云禾走到韩栋身边。
“韩栋同志,我有一个问题。”
“您说。”
“你为什么对TTCAN这么有信心?这个架构,在全世界都没有先例,万一走不通呢?”
韩栋笑了。
“李老,您见过导弹吧?”
李云禾点头。
“那您知道,导弹的制导系统,是怎么工作的吗?”
“时间触发。”李云禾脱口而出。
“对。”韩栋说。
“导弹飞行过程中,每一毫秒都在执行预定的控制序列。
不管外界环境如何变化,这个序列是确定的,可预测的。”
他指了指窗外。
“高铁本质上就是一枚在地面上飞行的导弹,既然导弹能用时间触发,高铁为什么不能?”
李云禾愣住了。
他从来没有从这个角度思考过问题。
但韩栋说得对。
高速列车和导弹,在控制逻辑上有着惊人的相似性。
都是高速运动的物体。
都需要极高的可靠性。
都不允许有任何延迟和不确定性。
李云禾笑了起来。
“韩栋同志,你这个思路,打开了一扇新的门!”
韩栋看着窗外,目光深邃。
在他的脑海里已经开始推演下一步。
时间触发机制,只是第一步。
接下来还要解决时钟同步、故障检测、冗余备份……
每一个环节都是一场硬仗。
但韩栋不曾犹豫。
因为他知道,这条路,走得通。
……