方向既明,剩下的就是集中力量,将蓝图变为现实。
就在这次技术攻关启动会结束的第二天,在姜晨的建议和国家的强力推动下,一个集结了国内自动化、计算机、软件、精密机械等领域最顶尖力量的数控系统联合攻关团队,在凤凰军工厂的技术支持和资源倾斜下,正式挂牌成立。
项目被赋予了一个充满时代烙印和希望的代号——“红星”。
“红星”团队的阵容堪称国家级的“梦之队”。
领军人物毫无悬念地由德高望重、在数控领域耕耘一生的周启明教授担任总师;核心骨干汇聚了来自京城大学、华清大学、国防科大等顶尖高校自动化和计算机系的教授、博导及其最得意的门生;中科院计算所、自动化所、软件所派出了最强的研究员阵容;原机械工业部下属的京城机床研究所、齐城机床研究所等几个老牌劲旅的数控技术专家也悉数加入。
当然,也少不了凤凰军工厂自己培养起来的、经历过“磐石”光刻机、“神盾”雷达等一个个硬仗洗礼的、实战经验丰富的软硬件尖兵。
这几乎是把当时国内能找到的相关领域的“牛人”都一网打尽了,摆出了一副不成功便成仁、要打一场数控系统“聊渖战役”的架势。
接到任命的那一刻,周教授感觉自己肩上的担子重如泰山,但他浑浊的老眼中却燃烧着前所未有的火焰。
这可能是他这一代科技工作者,为国家突破核心技术瓶颈、挺直工业脊樑、实现“龙国制造”梦想的最后一次机会了,必须豁出老命,背水一战。
攻关的过程,远比所有人预想的都要艰难,每一步都踩在未知的荆棘之上,洒满了汗水甚至泪水。
首先拦在面前的就是硬件平台的搭建。
虽然姜晨指明了risc架构的方向,国内也有“磐石”计划的基础,但要研制出能够满足数控系统微秒级实时响应、高可靠性、强抗干扰能力的专用控制芯片或工业级板卡,依然挑战巨大,绝非一日之功。
团队不得不采取“两条腿走路”的策略:一路人马,由王志宏教授领衔,基于现有的“磐石”衍生芯片进行深度优化设计,增加实时控制所需的特殊指令和接口,目标是儘快拿出“国产芯”方案。
另一路人马,则先采用国外有限引进的几款早期商用risc芯片,如ipsr3000、ad29k系列搭建原型验证平台,用于先行验证软件算法和系统架构,边学习、边验证、边等待“国产芯”的成熟。
无数个日夜,硬件组的工程师们像着了魔一样,伏在堆满了示波器、逻辑分析仪和各种测试线缆的实验台前,与电路板上那些比蚂蚁还小的元件和信号搏斗。
他们绘制着一遍遍修改的电路图,小心翼翼地焊接调试着脆弱得如同艺术品的原型板,彻夜不眠地追踪着高速信号中那些鬼魅般的毛刺和抖动,解决着一个又一个看似微小却可能导致整个系统崩溃的时序竞争、信号串扰和电磁兼容(ec)的“玄学”问题。
为了模拟工业现场恶劣的电磁环境,他们甚至土法上马,用大功率电机和电焊机在旁边製造干扰,测试板卡的抗干扰能力。
如果说硬件是“骨架”,那么软件系统的构建,则是更为艰巨的“灵魂”工程。
姜晨提供的只是核心算法原理和架构思想,相当于甩给了这帮国内顶尖专家们一份“设计哲学”和几把“关键钥匙”。
但怎么用这些钥匙打开一扇扇紧锁的大门,把那些听起来牛逼哄哄的抽象理念,转化成几十万行乃至上百万行能在冰冷硬件上稳定、高效、实时运行的底层控制代码——这活儿,按理说,还得靠团队自己,像最苦逼的码农一样,从helloworld开始,一砖一瓦,硬生生把这座软件“金字塔”给搭建起来。
这他妈简直是要命。
要知道,这年头国内的软件产业还处于“史前文明”阶段,连个像样的“轮子”都没几个。
成熟的软件工程方法论?不存在的。
高效的开发工具链?你想多了,那破编译器跑起来比老牛还慢,吐出来的bug比吐的槽还多,调试器更是简陋得跟石器似的,查个内存洩漏能让你把头发薅光。
更别提那颗数控系统最需要的“心脏”——稳定可靠、能满足苛刻实时性要求的国产实时操作系统内核(rtos)了,根本就没有现成的!
写过代码的都知道,没有参考,纯手搓原创,那玩意儿有多难。
软件组的工程师们,特别是中科院软件所来的“大拿”李慧兰研究员带领的核心内核与算法团队,接下这活儿的时候,心里其实是捏着一把汗的。
他们感觉自己简直就像是“信息时代的石器部落”,要靠着最基础的c语言甚至部分性能关键点得用汇编硬抠,而他们面对的是一头头叫做“高级算法”和“系统架构”的史前巨兽。
从最底层的硬件抽象层(hal)、中断处理、实时任务调度内核,到中间层的插补算法库(什么样条、nurbs,听着就头大)、运动控制引擎、plc解释器(这玩意儿也得自己写!),再到上层的人机交互界面(hi,估计只能搞个字符界面凑合了)、g代码解释器、加工工艺库
每一个环节,都充满了未知的挑战和深不见底的“天坑”。
尤其是负责运动控制算法的核心小组,那压力简直能把人压成相片。
他们得把姜晨嘴里那些“听起来很美”的先进理念——什么“前瞻控制”、“样条插补”、“模型预测”、“自适应控制”——变成能在微秒级时间内稳定运行的代码。
这活儿,哪是把数学公式翻译成代码那么简单?
简直就是要在豆腐上雕花,还得保证豆腐高速移动时不散架!
为了保证微米级的插补精度和毫秒级甚至亚毫秒级的实时响应,他们得在算法的理论精度和实际运行的计算效率之间玩命找平衡。
他们反覆抠着每一个数学公式的推导,挖空心思找计算量更小的数值解法,优化每一行代码的执行效率,甚至连处理器那点可怜的缓存怎么用才能效率最高都得算计到骨子里。
在无数次的计算机仿真和连接了真实电机的半物理仿真实验中,他们跟精度极限、实时性要求以及硬件平台的计算能力限制,进行着殊死搏斗。
组里那个负责样条插补算法、刚博士毕业留校的年轻天才“小孙博士”,就是活生生的例子。
为了解决一个高速过小线段时的速度波动和“啃刀”问题,这在实际加工中是要出人命的!他把自己锁在实验室,地上铺满了写满公式的草稿纸,推演了上百种不同的缓衝区管理和速度平滑策略。
硬是扛了三天三夜没合眼,眼睛熬得跟兔子似的。
最后,当他在屏幕上看到那根颤抖的仿真曲线终于变得像少女的皮肤一样平滑,模拟出来的加工表面也光洁如镜时,他兴奋得一蹦三尺高,结果因为身体透支加上精神过度亢奋,眼前一黑,“咣当”一声,直接脸着地砸在了键盘上,把旁边的同事吓得魂飞魄散,七手八脚把他抬去了医务室。
负责伺服驱动接口的小组也好不到哪去,他们简直就是戴着镣铐跳舞的“驯兽师”。
国产伺服电机和驱动器那性能,参差不齐就算了,参数还老自己“漂移”,响应慢半拍,偶尔还会莫名其妙“抽风”失控。
不像国外大厂有“御用”的电机驱动,性能稳定,配合默契。
他们没这条件,只能硬着头皮上。必须写出更皮实、更聪明的控制算法,得能自动识别电机那不靠谱的参数,还得能根据负载和工况变化实时调整控制策略,用软件的智慧去弥补硬件的先天不足。
这帮人经常背着笨重的示波器、信号发生器和早期的“便携式”计算机,那玩意儿重得像块砖头,跑到油污遍地的电机厂和机床厂车间,跟电机工程师、装配技师们一起,蹲在机器旁边现场改设计、调参数,解决一个又一个接地气的疑难杂症。
简直就是“it界的赤脚医生”。
面对如此艰巨的挑战,这帮国内最顶尖的计算机专家和软件工程师们,虽然压力山大,但内心深处也憋着一股劲儿。
尤其是姜晨这位年轻得不像话、却已经创造了无数奇迹的总师,亲自指明了方向,还给出了那么多干货——核心原理和算法思想。
这让他们既感到了巨大的压力,也产生了一种前所未有的、想要在这个新领域证明自己的冲动。
“姜总师虽然年轻,但在大方向和核心技术的把握上,简直神了!”李慧兰私下里跟周教授感慨,“他提出的risc、开放架构这些思路,简直是给咱们指出了一条明路!接下来就看咱们软件组的了,总不能让硬件组把骨架搭好了,咱们这灵魂跟不上吧?”
周教授也深以为然,他拍着胸脯跟姜晨保证:“姜总师您放心,您把方向指明了,剩下的硬骨头,我们这帮老傢伙就算把牙啃碎了,也得把它啃下来!保证拿出一个让您满意、让国外同行刮目相看的‘红星’系统!”
不少年轻的博士、工程师更是摩拳擦掌,准备在姜晨面前好好露一手。
他们承认姜晨在总体设计和硬件上是“神人”,但在软件编程和算法实现这些“细活儿”上,他们才是真正的专家!
他们要用自己的代码,把姜晨那些“听起来很美”的理念,变成真正跑起来的奇迹!
就在软件组的专家们斗志昂扬,准备按照姜晨画出的“路线图”,开始这场注定充满艰辛的“万里长征”,预计至少要奋战个三五年的时候
姜晨再次召集了核心软件团队开会。
这一次,他没有再讲什麽高深的理论,也没有再画什么宏伟的蓝图。
他只是让助手抱进来几大摞厚厚的、用特殊保密纸张打印出来的文件,以及几盘当时最先进的数据磁带。
“各位老师,各位同志,”姜晨看着眼前这羣准备“抛头颅洒热血”的软件精英们,脸上露出一丝意味深长的笑容,“我知道,要把一套全新的、高性能的数控系统软件从零开始搭建起来,难度非常大,时间也非常紧迫。”
李慧兰等人点点头,心想:您总算知道我们的难处了,是不是要给我们增加人手或者放宽期限?
“所以,”姜晨话锋一突,“为了嗯加快研发进度,少走一些弯路,我利用凤凰厂这边的计算机资源,他指了指天花板,仿佛那里藏着一台超级计算机,把我之前提出的一些核心算法和架构,进行了更详细的嗯‘原型验证’和‘参考实现’。”
他指了指桌上那几大摞文件和磁带。
“这里面,是基于risc架构和我们选定的实时内核,实现的关于前瞻控制、样条插补、伺服自适应控制等关键模块的核心代码框架,以及部分关键函数的嗯‘参考实现’。总代码量,大概十几万行吧。还有这些磁带里,是一些更底层的驱动程序和接口函数库。”
姜晨说得轻描淡写,彷彿只是随手写了篇课程论文的附录。
但会议室里,却瞬间陷入了死一般的寂静。
所有软件专家,包括周教授和李慧兰在内,全都像被施了定身法一样,目瞪口呆地看着桌上那堆积如山的“参考实现”。
十十几万行?!核心代码框架?!关键函数参考实现?!
这他妈还叫“参考”?!
这简直就是把整道题的解题步骤,连带着关键公式的推导过程,全都给你写出来了啊!
就差最后一步帮你把答案都抄上去了!
他们原本以为姜晨是个指点江山的“战略家”,最多是个懂点底层原理的“架构师”。
他们做梦也没想到,这位年轻得过分的总师,竟然竟然还他妈是个能肝十几万行硬核底层代码的“骨灰级程序猿”?!
而且还是在这么短的时间内?!
这这不科学!
这根本就不可能!
王志宏教授,那个搞risc硬件的专家,第一个反应过来,他猛地冲到桌前,拿起一摞打印稿,颤抖着手翻了起来。
他虽然主攻硬件,但对底层软件和汇编也极为精通。
只看了几页,他就倒吸了一口凉气,嘴里喃喃道:“这中断处理这任务调度这内存管理太太精妙了!简直是教科书级别!不对,比教科书还牛逼!这这真的是人写出来的?!”
李慧兰研究员也扑了过去,抢过另一部分关于实时内核和plc解释器的代码。
她看得更快,脸上的震惊之色也越来越浓。
她发现,这些代码不仅仅是实现了功能,其结构之清晰、注释之规范、效率之高、对硬件资源的利用之极致简直就是一件件精雕细琢的艺术品!
很多地方的处理方式,甚至完全超出了她之前的认知!
“这这底层驱动对硬件时序的把握还有这个plc指令的解释执行效率我的天”
而周教授和他那帮搞控制算法的学生们,则死死盯住了关于插补和伺服控制的部分。
当他们看到那些曾经让他们绞尽脑汁、甚至让小孙博士累倒的难题,如高速过小线段的速度平滑、复杂曲面的nurbs插补精度控制、伺服参数的在线自适应整定,都被用一种举重若轻、优雅到极点的算法和代码实现时,他们感觉自己的膝盖有点软。
“前瞻控制的缓冲区管理原来可以这样实现?!”
“样条插补的这个快速求逆解算法简直是神来之笔!”
“自适应控制的参数收敛速度他是怎么做到的?!”
之前还摩拳擦掌,准备在姜总师面前“露一手”的专家们,此刻看着眼前这堆“参考代码”,感觉自己就像是一羣刚刚学会加减乘除的小学生,却突然看到有人把微积分的标准答案拍在了他们面前。
震惊。
难以置信。
继而是一种近乎于“朝圣”般的敬畏!
他们终于明白,自己面对的,根本不是一个普通的年轻天才。
这是一个无法用常理揣度的、人形的怪物!
或者说神?