九月下旬,陆怀民回到科大。
回到学校,他先去了沈一鸣的办公室。
沈一鸣正伏在桌上看一篇英文期刊,听见敲门声抬起头来,摘下老花镜,上下打量了他一眼。
“瘦了。”沈一鸣说。
“没瘦,是您太久没见我。”陆怀民笑了笑,在沈一鸣对面坐下。
他把去首都这些天的事拣着不涉密的简单说了说。
技术评估通过了,专家们提了不少好建议,宋老身体硬朗,还特意托他带一罐茶叶给他。
沈一鸣接过那罐龙井,放在手心掂了掂,沉默了半晌,才感慨道:
“宋老是我们清华的老前辈,不过我已经有好多年没见过他了。没想到他还记得我。”
虽然只是简单的交流,但陆怀民敏锐地察觉到了,沈一鸣似乎心理压力有些大。
不过也能理解,学部委员增选的事,沈一鸣心中肯定也有数。
再淡泊名利的人,到了这种关口,也难免会生出拼一把的念头。
那份沉甸甸的压力,他不说,陆怀民也不点破。
沈一鸣说着,把茶叶罐小心地收进抽屉,然后拍了拍陆怀民的肩膀,说:
“回来了就好。踏踏实实干,旁的不用想。”
陆怀民点点头,其他的也没多说。
他们师徒二人之间的默契,从来不需要太多言语。
从第二天起,陆怀民便把全部精力重新投入到毕业课题之中。
数控系统不是几块积木随便拼起来就能用的玩具,它有着一条完整的链路——从刀位轨迹的生成,到后处理编译器的翻译,再到目标机床的G代码输出。
只有所有链路全部跑通,并且能应对工业生产中的各种复杂情况,才能称得上真正的数控系统。
在309厂,他当着全国顶尖专家的面接管了三台进口机床,但那靠的是“海燕”工程的桥接技术,绕过了原厂的加密锁,实现了后处理编译器的翻译,到目标机床的G代码输出的这个过程。
而真正自主的数控软件,还有不少工作要做。
他去首都的这段时间,课题组的状态很好。
彭远征带着大家对后处理编译器往前推进了一大步。
西门子SINUMERIK系统的后端适配模块已经基本成型,法那科系统的适配器也经过了数轮优化,代码量虽然大了不少,但结构反而比之前更清晰了。
彭远征还把陈杰森留下的那份架构建议翻来覆去地研究了无数遍,在编译器前端加了一个中间表示的优化pass,能把冗余的抬刀动作合并掉,省出不少加工时间。
郑国光那边的刀位轨迹算法也有了很好的进展,他把MIT算法库里的几个核心函数做了国产机的内存适配,跑通之后效率比预想的要好。
李雪梅则一直在和沈阳第一机床厂的一线专家通信,把厂里反馈回来的工艺参数一条一条地整理入库。
在这期间,陆怀民在309厂认识的哈工大的冯教授对项目给予了极大的指导。
陆怀民时常和他通话,请教一些自主数控软件适配的难点。
一切都在往前推进。
十月二十日,皖省省城落了一场秋雨。
这一天也是陆怀民的生日,仿佛冥冥中约好了一般,这天下午,所有模块恰好都调到了可以联调的状态。
“今天就联调吧。”陆怀民说。
没有人有异议。
所有人都知道联调成功意味着什么。
从四月到现在,半年了。
课题组废寝忘食走过的每一步,都在为今天做准备。
联调从下午三点开始。
陆怀民把所有模块的代码合到一个工程里,又将那台教学切割机重新校准了一遍。
陈青穗则负责记录每一步的操作日志。
她用钢笔写下了第一句:
“一九八〇年十月二十日,十五时零五分,全链路第一次联调测试开始。”
第一次联调失败了。
问题出在刀位轨迹和后处理编译器之间的数据接口上。
机床走到一半突然停了,割枪悬在半空中,CRT屏幕上跳出一行错误码。
“怪我,接口文档里没写清楚。”郑国光主动揽责,语气里满是懊恼:
“分块处理之后,相邻子区域的边界坐标重复率太高,后处理编译器那边当成冗余指令直接过滤掉了。”
“我也有问题。”彭远征摇了摇头:
“编译器这边的过滤阈值确实设得太激进。万一以后接别的CAM系统,难道每次都要让人家改输出格式?应该加上自动识别和转换模块,不能全靠上游保证格式。”
陆怀民摆了摆手:“别分锅了。发现了就好,改。”
几个人凑在一起,对着接口文档重新梳理了一遍数据格式。
郑国光在刀位轨迹模块的输出端加了一个边界坐标去重算法,彭远征顺手在编译器前端加了一段预处理逻辑,把过滤阈值改成了动态自适应的。
改完已经是傍晚七点多。
窗外雨停了。
十月下旬,天黑得早。
食堂的晚饭早过了点,陆怀民跑去买了几个烧饼,又去开水房打了一壶热水,大家对付着吃了两口。
晚上八点,第二次联调开始。
所有人都站在陆怀民身后,目光紧紧锁在那台十四英寸的CRT屏幕上。
屏幕上,CAM系统生成的刀位轨迹开始逐行滚动。
那是一段双曲率船体外板的加工路径。
在船舶工程中,艏部外板是公认最难加工的部件之一,它的曲率在纵向和横向同时变化,中间还有一道渐变的凹槽。
在工程问题中,这已经算是非常复杂的刀位轨迹了。
刀位数据流经郑国光写的预处理模块,自动完成坐标变换和单位归一化,然后涌入了彭远征的后处理编译器前端。
语法分析器把每一行刀位指令拆解成基本的几何元素(直线、圆弧、样条曲线)再打包成一棵抽象语法树。
然后,后端适配器启动,把这套“自主格式”的中间表示,一行一行地翻译成了目标机床的G代码。
陆怀民这套数控系统的思路是分层编译,后端可插拔。
前端解析模块不管你是什么G代码方言,它先把CAM生成的刀位轨迹都翻译成一种统一的中间表示,后处理编译器后端能够适配不同的G代码方言。
在这里,数控软件是自己从头写的,因此课题组自己定义了一套“自主格式的G代码”。
一旦联通成功,就意味着完全自主的数控软件诞生了,它可以适配自己的自主机床,而不用再引进外国的数控软件。
屏幕上,G代码开始一行一行地往外蹦。
G01 X123.456 Y78.901 F200 G02 X156.789 Y89.012 I20.000 J5.000 G03……
每蹦出一行,教学机控制面板上对应的指示灯就闪一下。
伺服电机发出轻微的嗡鸣声,割枪沿着导轨缓缓滑出,橘红色的火点在钢板上划出第一道亮线。
所有人都屏住了呼吸。
割枪走直线,拐弯,切弧线,再拐弯,切扭曲线段。
每一个动作都和屏幕上滚动的G代码严丝合缝地对应着。
角速度、进给率、抬刀高度……似乎所有的参数都在预设的范围内跳动,没有一处异常。
最后一刀走完,割枪自动抬升归位。