警报声划破车间的安静,深圳测试机的红灯闪了三下,随即产线自动停机。刘好仃没抬头,手指已经滑到键盘上,调出通讯日志。
小李从工位弹起来:“又闪了?不是刚重启过?”
“不是闪。”刘好仃放大时间轴,“是停。pLc反馈延迟0.3秒,超限了。”
小吴凑过来,盯着波形图看了两秒:“上次闪屏在78%,这次也是78%——模块加载点一致,说明不是随机故障。”
“对。”刘好仃把cAN总线的优先级调度拉出来,“新模块初始化时抢了通道,老系统反应不过来,直接判异常。”
小李皱眉:“可测试环境没这问题。”
“测试机是独立供电,产线设备共享总线。”刘好仃敲了敲屏幕,“咱们忘了,车间不是实验室,没人给它腾出干净的路。”
小吴挠头:“那现在咋办?停一天损失不小。”
“不耽误。”刘好仃转头对小李说,“在固件层加个错峰补偿,让新模块加载时主动让出0.15毫秒,等pLc握手完成再占资源。”
小李点头,手指飞快敲进代码。编译、烧录、重启。
第二次自检开始。进度条走到78%,所有人屏住呼吸。
跳过,绿灯亮。
“通了。”小吴松了口气,拍了下小李肩膀,“你这延迟补偿,比闹钟还准。”
刘好仃没笑,盯着实时延迟曲线看了十秒:“现在0.08秒,达标。但得跑满24小时,确认稳定性。”
小李应了声,打开监控面板。刘好仃转身走向操作台,顺手抓了杯凉茶,喝了一口,茶底浮着片茶叶,他没管。
---
中午,小王在3号工位接了个电话,聊了五分钟。期间系统弹出两次提醒,随后界面变灰,进入静默状态。
他挂了电话,抬手准备操作,扳手刚离架,系统才跳出响应提示。
“慢了。”刘好仃调出动作传感器记录,“他抬手幅度够,但系统没认。”
小吴翻着日志:“三次无响应才降频,他只中断两次,不该静默。”
“问题不在降频。”刘好仃放大视频,“在唤醒。他回来时动作小,系统判定‘未明确操作’,继续闭嘴。”
“那不是对的吗?”小吴问,“万一他只是路过呢?”
“可他是老师傅,动作习惯稳定。”刘好仃回放三次历史记录,“每次中断后返岗,都是先看设备,再动手。视线落点比动作早0.3秒。”
小吴一愣:“你是说……用眼睛‘开机’?”
“人盯机器,机器也该认人。”刘好仃转头对小吴说,“把‘恢复触发’条件加一条:动作+视线回归。调车间AI模型,轻量级,只跑这一项。”
小吴皱眉:“那得接摄像头,安监那边得批。”
“不用新设备。”刘好仃指了指现有监控,“提取画面特征就行,不存视频,不做人脸识别,只判视线方向。”
小吴想了想:“合规能过,但算力够吗?”
“只在静默状态下激活,每秒扫一次,压不大。”刘好仃喝了口茶,“人等机器,难受。机器等人的信号,才叫聪明。”
下午三点,新逻辑上线。小王故意中断作业,接了个假电话。挂断后,他刚抬头,系统提示音就响了。
“0.4秒。”小吴看着时间戳,“比之前快了一倍。”
刘好仃点头:“动作小,眼神对上了,也算数。这才是‘懂分寸’。”
---
联调前夜,宁波端模拟运行到第38小时,内存占用曲线突然抖了一下。
刘好仃正在核对三地日志,一眼扫到异常。
“不对。”他把宁波的数据单独拉出来,“回收周期到了,但Gc没及时执行。”
小李凑过来:“延迟1.2秒?这会堵死调度队列。”
“老工控机,垃圾回收效率低。”刘好仃对比三地曲线,“深圳和东莞的衰减是缓坡,宁波的实际斜率陡了30%。”
小吴问:“那不是会提前耗尽记忆?”
“更糟。”刘好仃调出调度日志,“资源偏移波动现在0.7秒,卡顿一次,后续所有响应都脱节。”
“要不暂停联调?”小李问。
“不用。”刘好仃打开远程终端,“把宁波端的衰减周期从5分钟拉到7分钟,再绑定cpU空闲周期触发清理。”
“热更新?”小吴瞪眼,“现在?”
“现在。”刘好仃敲下确认键,“系统在跑,但没到崩溃点,正好试一试。”
进度条推进,参数推送成功。内存回收重新对齐时间轴。
波动曲线回落,稳定在±0.09秒。
“成了。”小李轻声说。
刘好仃没说话,盯着屏幕看了三分钟,确认无后续异常,才点了保存。
他站起身,走到窗边。夜里的车间灯火通明,几台测试机安静立着,状态灯绿着,像几双醒着的眼睛。
小吴走过来,递了杯热茶:“明早四地联调,能撑住吧?”
“能。”刘好仃接过茶,吹了口气,“问题都出在预料内,没意外。”
“可宁波这台机,到底老了。”
“人也老。”刘好仃笑了笑,“老了就调慢点,别硬撑。系统也一样。”
小吴点头:“那要是哪天它彻底跑不动呢?”
刘好仃看着远处那台机器,轻声说:“那就换,但得让它体面退场——不骂它笨,不怪它慢,只说它完成了该干的活。”
小吴没接话,低头喝茶。
刘好仃把最后一口茶喝完,把杯子放在窗台。
他转身走回工位,打开日志监控面板,把宁波端设为一级预警。
屏幕光映在他脸上,眼睛没闭,手指悬在键盘上方。