尘土与星辰 -1992|第158章|旁路与回滚|中文
会议室的门被推开,一股混合着机油、旧纸张和空调冷气的味道扑面而来。长条会议桌对面坐着三个人,除了李厂长,还有技术科的刘工和那个拿平板的年轻人。桌面上已经摆好了一台带串口转接线的工控机,旁边散落着几本翻卷的《PLC编程手册》和半截粉笔。 “坐。”李厂长指了指对面
第158章 旁路与回滚
会议室的门被推开,一股混合着机油、旧纸张和空调冷气的味道扑面而来。长条会议桌对面坐着三个人,除了李厂长,还有技术科的刘工和那个拿平板的年轻人。桌面上已经摆好了一台带串口转接线的工控机,旁边散落着几本翻卷的《PLC编程手册》和半截粉笔。
“坐。”李厂长指了指对面的空位,“直接接测试线。刘工盯着日志。”
林尘拉开椅子,左脚落地时,脚踝处传来一阵钝痛。他不动声色地将重心移到右腿,从背包里取出笔记本电脑。开机,插上网线,接上USB转RS485模块。屏幕亮起,终端窗口跳出绿色的光标。他没有打开IDE,而是直接运行了打包好的可执行文件。
正在初始化PPI协议栈...
链路握手... 成功。
开始轮询寄存器D0-D500...
数据流开始滚动。起初的几秒很顺畅,但到了第一百条左右,终端的刷新频率明显慢了下来。刘工凑近屏幕,眉头皱起:“延迟上来了。你看这时间戳,间隔从50毫秒跳到了120毫秒。车间里传送带不停,这个延迟会导致传感器数据堆积,上位机迟早报警。”
林尘盯着日志。他知道问题出在哪:PPI转Modbus的中间件在解析老式西门子的非标准报文时,做了额外的校验重试。这是理论推演时无法完全模拟的物理损耗。老设备没有硬件流控,软件层面的握手必然消耗时间。
“李厂长,”林尘没有关窗口,手指在键盘上快速敲击,调出另一个终端,“这是中间件的重试机制触发了。如果强行压频率,丢包率会超过3%。我切到旁路模式。”
他按下回车。脚本执行了branch_fallback.py。数据流的刷新速度肉眼可见地降了下来,时间戳间隔稳定在200毫秒。终端底部跳出一行黄字:[INFO] 已切换至降频轮询模式。产能预估损失:7.8%。数据完整性:100%。
会议室里安静了几秒。只有机箱风扇的嗡嗡声和窗外隐约的鸟鸣。
李厂长没看屏幕,而是看向林尘:“降频保完整,这个逻辑我懂。但你们学生总喜欢把‘保底’说得像恩赐。我要的是确定性能不能跑满七天不崩。车间不是实验室,机器一停,全厂跟着罚钱。”
“能。”林尘的声音很平,“旁路模式剥离了动态校验,只保留基础心跳和断线重连。代码量减少了三分之一,内存占用从120兆降到45兆。工控机是十年前的老配置,跑不动花哨的算法,但跑这个,余量够。就算突然断电重启,脚本也会自动从断点续传,不会覆盖旧数据。”
刘工在旁边的测试本上敲了几下,调出内存监控曲线。峰值确实压在了安全线以下。他抬头看了李厂长一眼,点了点头。
李厂长拿起保温杯,喝了一口,把盖子拧紧。“七天试点。脚本部署在二号车间的备用机上。你每天下午四点来现场看日志,有问题当场改。验收标准就一条:数据不断,机器不报警。费用按之前谈的,预付三千,验收后结清。有问题吗?”
“没有。”林尘回答。三千块,刚好够垫付下个月的房租和弟弟的药费。他不需要讨价还价,因为底线已经划清。
“行。”李厂长站起身,把一份盖着红章的《试点运行协议》推过来,“签字。明天上午八点,带U盘去二号车间找刘工。”
林尘拿起笔。笔尖划过纸面,留下清晰的黑色字迹。签完字,他把协议推回去,开始收拾电脑。拔线,关机,装包。动作一气呵成。左脚在起身时猛地抽搐了一下,他扶住桌沿,停了两秒,等那股酸麻过去,才直起身。
“林尘。”周教授在门口叫住他,递过来一个牛皮纸袋,“厂里食堂的饭票,还有这个。”纸袋里是一本《工业通信协议实战案例》,书页已经泛黄,边角卷起。“老电工的经验,比白皮书管用。晚上回去翻翻第三章,里面讲了老式PLC的接地干扰怎么处理。”
“谢谢周老师。”林尘接过纸袋。
走出会展中心时,太阳已经升到头顶。初秋的风带着点凉意,吹散了会议室里的沉闷。他站在路边等K3路公交,把背包换到右肩。左脚每走一步,鞋底的摩擦都牵扯着跟腱。他摸了摸口袋里的协议复印件,指尖传来纸张粗糙的触感。三千块。数字不大,但足够让下个月的账本不再出现赤字。
公交车晃晃悠悠地开回学校。车厢里人不多,他找了个靠窗的位置坐下。打开电脑,屏幕亮起,右下角的日历提醒跳了出来:老赵项目:安全扫描适配 - 截止明日08:00。
他深吸了一口气,点开昨晚新建的安全合规适配清单。运维部的规矩很死:所有外联请求必须走代理白名单,禁止直连。这意味着他得把脚本里所有的socket.connect()替换成代理转发逻辑,并且重写心跳保活机制。不能硬编码IP,得用环境变量注入。
手指落在键盘上。代码一行行敲出来,屏幕的光映在脸上。车厢的颠簸让视线偶尔模糊,但他没有停。他知道,厂里的试点是“明线”,老赵的扫描是“暗线”。两条线都在抢时间,而他的身体和精力只有一份。
下午三点,他回到宿舍。舍友都不在,只有风扇在头顶吱呀转动。他把左脚搭在凳子上,用冷水毛巾敷了十分钟。痉挛稍微缓解,但肌肉依然僵硬。他坐回书桌前,继续写代理模块。
def init_proxy_tunnel(target_ip, proxy_host):
# 建立隧道连接,捕获异常
try:
conn = socks.socksocket()
conn.set_proxy(socks.SOCKS5, proxy_host, 1080)
conn.connect((target_ip, 8080))
except Exception as e:
log.error(f"代理隧道建立失败: {e}")
return False
代码写到一半,手机震动。是一条陌生号码发来的短信:林工,二号车间的备用机IP段临时调整了,从192.168.1.x改到10.0.5.x。刘工让你今晚把脚本里的网段配置改好,明早直接拷过去。另外,厂里网络隔离,外网不通,你带离线安装包。
林尘盯着屏幕。IP段变更意味着他得重新编译网络配置模块,并且打包所有依赖库。老赵的扫描报告还没写完,厂里的离线包又催得急。时间像被拧紧的发条,咔咔作响。
他关掉短信窗口,打开终端。先跑了一遍老赵项目的代理模块测试。绿灯亮起,扫描通过。他松了口气,但没停。接着新建文件夹,开始打包厂里的脚本。依赖库一个个下载,压缩,校验。
窗外的天色渐渐暗下来。宿舍楼下的路灯亮起,昏黄的光晕透过玻璃照在桌面上。他揉了揉发酸的眼睛,左脚已经麻木到失去知觉,只能靠右手撑着桌沿保持坐姿。屏幕上的进度条缓慢爬升:打包中... 78%... 85%...
他知道,今晚注定又是一个不眠夜。但账本上的数字在增加,代码在跑通,路在往前延伸。他不需要奇迹,只需要把下一个函数写完。
进度条跳到100%。打包完成。
他拔出U盘,插进读卡器校验。文件完整。他合上电脑,靠在椅背上。黑暗里,他听见自己的呼吸声,平稳,绵长。明天早上八点,二号车间。他得在七点前赶到。
手机屏幕再次亮起。这次是老赵的微信语音。他点开,电流声里夹杂着键盘敲击的背景音:林尘,扫描报告过了。不过运维部刚通知,下周要上生产环境,得做压力测试。你准备一下并发脚本,周三前发我。费用按新标准结。
林尘盯着屏幕。并发脚本。压力测试。新标准。
他拿起笔,在草稿纸上写下:周三 18:00前交付并发压测脚本。 然后在下面画了一条横线。
窗外的风大了些,吹得窗框微微作响。他站起身,左脚落地时依然刺痛,但他已经习惯了这种重量。他走到水池边,用冷水洗了把脸。水珠顺着下颌滴落,冰凉,清醒。
明天,车间。后天,压测。日子是一行行代码,敲下去,就得跑通。没有退路,也不需要退路。他擦干手,走回书桌,重新打开终端。屏幕的光再次亮起,照亮了桌角那本翻旧的《Linux内核设计与实现》。
夜还长。但路已经铺到了脚下。
More from WayDigital
Continue through other published articles from the same publisher.
Comments
0 public responses
All visitors can read comments. Sign in to join the discussion.
Log in to comment