方向既明,剩下的就是集中力量,將藍(lán)圖變?yōu)楝F(xiàn)實(shí)。
就在這次技術(shù)攻關(guān)啟動會結(jié)束的第二天,在姜晨的建議和國家的強(qiáng)力推動下,一個集結(jié)了國內(nèi)自動化、計算機(jī)、軟件、精密機(jī)械等領(lǐng)域最頂尖力量的數(shù)控系統(tǒng)聯(lián)合攻關(guān)團(tuán)隊(duì),在鳳凰軍工廠的技術(shù)支持和資源傾斜下,正式掛牌成立。
項(xiàng)目被賦予了一個充滿時代烙印和希望的代號——“紅星”。
“紅星”團(tuán)隊(duì)的陣容堪稱國家級的“夢之隊(duì)”。
領(lǐng)軍人物毫無懸念地由德高望重、在數(shù)控領(lǐng)域耕耘一生的周啟明教授擔(dān)任總師;核心骨干匯聚了來自京城大學(xué)、華清大學(xué)、國防科大等頂尖高校自動化和計算機(jī)系的教授、博導(dǎo)及其最得意的門生;中科院計算所、自動化所、軟件所派出了最強(qiáng)的研究員陣容;原機(jī)械工業(yè)部下屬的京城機(jī)床研究所、齊城機(jī)床研究所等幾個老牌勁旅的數(shù)控技術(shù)專家也悉數(shù)加入。
當(dāng)然,也少不了鳳凰軍工廠自己培養(yǎng)起來的、經(jīng)歷過“磐石”光刻機(jī)、“神盾”雷達(dá)等一個個硬仗洗禮的、實(shí)戰(zhàn)經(jīng)驗(yàn)豐富的軟硬件尖兵。
這幾乎是把當(dāng)時國內(nèi)能找到的相關(guān)領(lǐng)域的“牛人”都一網(wǎng)打盡了,擺出了一副不成功便成仁、要打一場數(shù)控系統(tǒng)“聊瀋戰(zhàn)役”的架勢。
接到任命的那一刻,周教授感覺自己肩上的擔(dān)子重如泰山,但他渾濁的老眼中卻燃燒著前所未有的火焰。
這可能是他這一代科技工作者,為國家突破核心技術(shù)瓶頸、挺直工業(yè)脊樑、實(shí)現(xiàn)“龍國制造”夢想的最后一次機(jī)會了,必須豁出老命,背水一戰(zhàn)。
攻關(guān)的過程,遠(yuǎn)比所有人預(yù)想的都要艱難,每一步都踩在未知的荊棘之上,灑滿了汗水甚至淚水。
首先攔在面前的就是硬件平臺的搭建。
雖然姜晨指明了RISC架構(gòu)的方向,國內(nèi)也有“磐石”計劃的基礎(chǔ),但要研制出能夠滿足數(shù)控系統(tǒng)微秒級實(shí)時響應(yīng)、高可靠性、強(qiáng)抗干擾能力的專用控制芯片或工業(yè)級板卡,依然挑戰(zhàn)巨大,絕非一日之功。
團(tuán)隊(duì)不得不采取“兩條腿走路”的策略:一路人馬,由王志宏教授領(lǐng)銜,基于現(xiàn)有的“磐石”衍生芯片進(jìn)行深度優(yōu)化設(shè)計,增加實(shí)時控制所需的特殊指令和接口,目標(biāo)是儘快拿出“國產(chǎn)芯”方案。
另一路人馬,則先采用國外有限引進(jìn)的幾款早期商用RISC芯片,如MIPS R3000、AMD 29K系列搭建原型驗(yàn)證平臺,用于先行驗(yàn)證軟件算法和系統(tǒng)架構(gòu),邊學(xué)習(xí)、邊驗(yàn)證、邊等待“國產(chǎn)芯”的成熟。
無數(shù)個日夜,硬件組的工程師們像著了魔一樣,伏在堆滿了示波器、邏輯分析儀和各種測試線纜的實(shí)驗(yàn)臺前,與電路板上那些比螞蟻還小的元件和信號搏斗。
他們繪制著一遍遍修改的電路圖,小心翼翼地焊接調(diào)試著脆弱得如同藝術(shù)品的原型板,徹夜不眠地追蹤著高速信號中那些鬼魅般的毛刺和抖動,解決著一個又一個看似微小卻可能導(dǎo)致整個系統(tǒng)崩潰的時序競爭、信號串?dāng)_和電磁兼容(EMC)的“玄學(xué)”問題。
為了模擬工業(yè)現(xiàn)場惡劣的電磁環(huán)境,他們甚至土法上馬,用大功率電機(jī)和電焊機(jī)在旁邊製造干擾,測試板卡的抗干擾能力。
如果說硬件是“骨架”,那么軟件系統(tǒng)的構(gòu)建,則是更為艱巨的“靈魂”工程。
姜晨提供的只是核心算法原理和架構(gòu)思想,相當(dāng)于甩給了這幫國內(nèi)頂尖專家們一份“設(shè)計哲學(xué)”和幾把“關(guān)鍵鑰匙”。
但怎么用這些鑰匙打開一扇扇緊鎖的大門,把那些聽起來牛逼哄哄的抽象理念,轉(zhuǎn)化成幾十萬行乃至上百萬行能在冰冷硬件上穩(wěn)定、高效、實(shí)時運(yùn)行的底層控制代碼——這活兒,按理說,還得靠團(tuán)隊(duì)自己,像最苦逼的碼農(nóng)一樣,從 Hello World開始,一磚一瓦,硬生生把這座軟件“金字塔”給搭建起來。
這他媽簡直是要命。
要知道,這年頭國內(nèi)的軟件產(chǎn)業(yè)還處于“史前文明”階段,連個像樣的“輪子”都沒幾個。
成熟的軟件工程方法論?不存在的。
高效的開發(fā)工具鏈?你想多了,那破編譯器跑起來比老牛還慢,吐出來的Bug比吐的槽還多,調(diào)試器更是簡陋得跟石器似的,查個內(nèi)存洩漏能讓你把頭發(fā)薅光。
更別提那顆數(shù)控系統(tǒng)最需要的“心臟”——穩(wěn)定可靠、能滿足苛刻實(shí)時性要求的國產(chǎn)實(shí)時操作系統(tǒng)內(nèi)核(RTOS)了,根本就沒有現(xiàn)成的!
寫過代碼的都知道,沒有參考,純手搓原創(chuàng),那玩意兒有多難。
軟件組的工程師們,特別是中科院軟件所來的“大拿”李慧蘭研究員帶領(lǐng)的核心內(nèi)核與算法團(tuán)隊(duì),接下這活兒的時候,心里其實(shí)是捏著一把汗的。
他們感覺自己簡直就像是“信息時代的石器部落”,要靠著最基礎(chǔ)的C語言甚至部分性能關(guān)鍵點(diǎn)得用匯編硬摳,而他們面對的是一頭頭叫做“高級算法”和“系統(tǒng)架構(gòu)”的史前巨獸。
從最底層的硬件抽象層(HAL)、中斷處理、實(shí)時任務(wù)調(diào)度內(nèi)核,到中間層的插補(bǔ)算法庫(什么樣條、NURBS,聽著就頭大)、運(yùn)動控制引擎、PLC解釋器(這玩意兒也得自己寫!),再到上層的人機(jī)交互界面(HMI,估計只能搞個字符界面湊合了)、G代碼解釋器、加工工藝庫……
每一個環(huán)節(jié),都充滿了未知的挑戰(zhàn)和深不見底的“天坑”。
尤其是負(fù)責(zé)運(yùn)動控制算法的核心小組,那壓力簡直能把人壓成相片。
他們得把姜晨嘴里那些“聽起來很美”的先進(jìn)理念——什么“前瞻控制”、“樣條插補(bǔ)”、“模型預(yù)測”、“自適應(yīng)控制”——變成能在微秒級時間內(nèi)穩(wěn)定運(yùn)行的代碼。
這活兒,哪是把數(shù)學(xué)公式翻譯成代碼那么簡單?
簡直就是要在豆腐上雕花,還得保證豆腐高速移動時不散架!
為了保證微米級的插補(bǔ)精度和毫秒級甚至亞毫秒級的實(shí)時響應(yīng),他們得在算法的理論精度和實(shí)際運(yùn)行的計算效率之間玩命找平衡。
他們反覆摳著每一個數(shù)學(xué)公式的推導(dǎo),挖空心思找計算量更小的數(shù)值解法,優(yōu)化每一行代碼的執(zhí)行效率,甚至連處理器那點(diǎn)可憐的緩存怎么用才能效率最高都得算計到骨子里。
在無數(shù)次的計算機(jī)仿真和連接了真實(shí)電機(jī)的半物理仿真實(shí)驗(yàn)中,他們跟精度極限、實(shí)時性要求以及硬件平臺的計算能力限制,進(jìn)行著殊死搏斗。
組里那個負(fù)責(zé)樣條插補(bǔ)算法、剛博士畢業(yè)留校的年輕天才“小孫博士”,就是活生生的例子。
為了解決一個高速過小線段時的速度波動和“啃刀”問題,這在實(shí)際加工中是要出人命的!他把自己鎖在實(shí)驗(yàn)室,地上鋪滿了寫滿公式的草稿紙,推演了上百種不同的緩衝區(qū)管理和速度平滑策略。
硬是扛了三天三夜沒合眼,眼睛熬得跟兔子似的。
最后,當(dāng)他在屏幕上看到那根顫抖的仿真曲線終于變得像少女的皮膚一樣平滑,模擬出來的加工表面也光潔如鏡時,他興奮得一蹦三尺高,結(jié)果因?yàn)樯眢w透支加上精神過度亢奮,眼前一黑,“咣當(dāng)”一聲,直接臉著地砸在了鍵盤上,把旁邊的同事嚇得魂飛魄散,七手八腳把他抬去了醫(yī)務(wù)室。
負(fù)責(zé)伺服驅(qū)動接口的小組也好不到哪去,他們簡直就是戴著鐐銬跳舞的“馴獸師”。
國產(chǎn)伺服電機(jī)和驅(qū)動器那性能,參差不齊就算了,參數(shù)還老自己“漂移”,響應(yīng)慢半拍,偶爾還會莫名其妙“抽風(fēng)”失控。
不像國外大廠有“御用”的電機(jī)驅(qū)動,性能穩(wěn)定,配合默契。
他們沒這條件,只能硬著頭皮上。必須寫出更皮實(shí)、更聰明的控制算法,得能自動識別電機(jī)那不靠譜的參數(shù),還得能根據(jù)負(fù)載和工況變化實(shí)時調(diào)整控制策略,用軟件的智慧去彌補(bǔ)硬件的先天不足。
這幫人經(jīng)常背著笨重的示波器、信號發(fā)生器和早期的“便攜式”計算機(jī),那玩意兒重得像塊磚頭,跑到油污遍地的電機(jī)廠和機(jī)床廠車間,跟電機(jī)工程師、裝配技師們一起,蹲在機(jī)器旁邊現(xiàn)場改設(shè)計、調(diào)參數(shù),解決一個又一個接地氣的疑難雜癥。
簡直就是“IT界的赤腳醫(yī)生”。
面對如此艱巨的挑戰(zhàn),這幫國內(nèi)最頂尖的計算機(jī)專家和軟件工程師們,雖然壓力山大,但內(nèi)心深處也憋著一股勁兒。
尤其是姜晨這位年輕得不像話、卻已經(jīng)創(chuàng)造了無數(shù)奇跡的總師,親自指明了方向,還給出了那么多干貨——核心原理和算法思想。
這讓他們既感到了巨大的壓力,也產(chǎn)生了一種前所未有的、想要在這個新領(lǐng)域證明自己的沖動。
“姜總師雖然年輕,但在大方向和核心技術(shù)的把握上,簡直神了!”李慧蘭私下里跟周教授感慨,“他提出的RISC、開放架構(gòu)這些思路,簡直是給咱們指出了一條明路!接下來就看咱們軟件組的了,總不能讓硬件組把骨架搭好了,咱們這靈魂跟不上吧?”
周教授也深以為然,他拍著胸脯跟姜晨保證:“姜總師您放心,您把方向指明了,剩下的硬骨頭,我們這幫老傢伙就算把牙啃碎了,也得把它啃下來!保證拿出一個讓您滿意、讓國外同行刮目相看的‘紅星’系統(tǒng)!”
不少年輕的博士、工程師更是摩拳擦掌,準(zhǔn)備在姜晨面前好好露一手。
他們承認(rèn)姜晨在總體設(shè)計和硬件上是“神人”,但在軟件編程和算法實(shí)現(xiàn)這些“細(xì)活兒”上,他們才是真正的專家!
他們要用自己的代碼,把姜晨那些“聽起來很美”的理念,變成真正跑起來的奇跡!
就在軟件組的專家們斗志昂揚(yáng),準(zhǔn)備按照姜晨畫出的“路線圖”,開始這場注定充滿艱辛的“萬里長征”,預(yù)計至少要奮戰(zhàn)個三五年的時候……
姜晨再次召集了核心軟件團(tuán)隊(duì)開會。
這一次,他沒有再講什麼高深的理論,也沒有再畫什么宏偉的藍(lán)圖。
他只是讓助手抱進(jìn)來幾大摞厚厚的、用特殊保密紙張打印出來的文件,以及幾盤當(dāng)時最先進(jìn)的數(shù)據(jù)磁帶。
“各位老師,各位同志,”姜晨看著眼前這羣準(zhǔn)備“拋頭顱灑熱血”的軟件精英們,臉上露出一絲意味深長的笑容,“我知道,要把一套全新的、高性能的數(shù)控系統(tǒng)軟件從零開始搭建起來,難度非常大,時間也非常緊迫?!?/p>
李慧蘭等人點(diǎn)點(diǎn)頭,心想:您總算知道我們的難處了,是不是要給我們增加人手或者放寬期限?
“所以,”姜晨話鋒一突,“為了……嗯……加快研發(fā)進(jìn)度,少走一些彎路,我利用鳳凰廠這邊的計算機(jī)資源,他指了指天花板,仿佛那里藏著一臺超級計算機(jī),把我之前提出的一些核心算法和架構(gòu),進(jìn)行了更詳細(xì)的……嗯……‘原型驗(yàn)證’和‘參考實(shí)現(xiàn)’。”
他指了指桌上那幾大摞文件和磁帶。
“這里面,是基于RISC架構(gòu)和我們選定的實(shí)時內(nèi)核,實(shí)現(xiàn)的關(guān)于前瞻控制、樣條插補(bǔ)、伺服自適應(yīng)控制等關(guān)鍵模塊的核心代碼框架,以及部分關(guān)鍵函數(shù)的……嗯……‘參考實(shí)現(xiàn)’。總代碼量,大概……十幾萬行吧。還有這些磁帶里,是一些更底層的驅(qū)動程序和接口函數(shù)庫?!?/p>
姜晨說得輕描淡寫,彷彿只是隨手寫了篇課程論文的附錄。
但會議室里,卻瞬間陷入了死一般的寂靜。
所有軟件專家,包括周教授和李慧蘭在內(nèi),全都像被施了定身法一樣,目瞪口呆地看著桌上那堆積如山的“參考實(shí)現(xiàn)”。
十……十幾萬行?!核心代碼框架?!關(guān)鍵函數(shù)參考實(shí)現(xiàn)?!
這他媽還叫“參考”?!
這簡直就是把整道題的解題步驟,連帶著關(guān)鍵公式的推導(dǎo)過程,全都給你寫出來了啊!
就差最后一步幫你把答案都抄上去了!
他們原本以為姜晨是個指點(diǎn)江山的“戰(zhàn)略家”,最多是個懂點(diǎn)底層原理的“架構(gòu)師”。
他們做夢也沒想到,這位年輕得過分的總師,竟然……竟然還他媽是個能肝十幾萬行硬核底層代碼的“骨灰級程序猿”?!
而且還是在這么短的時間內(nèi)?!
這……這不科學(xué)!
這根本就不可能!
王志宏教授,那個搞RISC硬件的專家,第一個反應(yīng)過來,他猛地沖到桌前,拿起一摞打印稿,顫抖著手翻了起來。
他雖然主攻硬件,但對底層軟件和匯編也極為精通。
只看了幾頁,他就倒吸了一口涼氣,嘴里喃喃道:“……這中斷處理……這任務(wù)調(diào)度……這內(nèi)存管理……太……太精妙了!簡直是教科書級別!不對,比教科書還牛逼!這……這真的是人寫出來的?!”
李慧蘭研究員也撲了過去,搶過另一部分關(guān)于實(shí)時內(nèi)核和PLC解釋器的代碼。
她看得更快,臉上的震驚之色也越來越濃。
她發(fā)現(xiàn),這些代碼不僅僅是實(shí)現(xiàn)了功能,其結(jié)構(gòu)之清晰、注釋之規(guī)范、效率之高、對硬件資源的利用之極致……簡直就是一件件精雕細(xì)琢的藝術(shù)品!
很多地方的處理方式,甚至完全超出了她之前的認(rèn)知!
“這……這底層驅(qū)動對硬件時序的把握……還有這個PLC指令的解釋執(zhí)行效率……我的天……”
而周教授和他那幫搞控制算法的學(xué)生們,則死死盯住了關(guān)于插補(bǔ)和伺服控制的部分。
當(dāng)他們看到那些曾經(jīng)讓他們絞盡腦汁、甚至讓小孫博士累倒的難題,如高速過小線段的速度平滑、復(fù)雜曲面的NURBS插補(bǔ)精度控制、伺服參數(shù)的在線自適應(yīng)整定,都被用一種舉重若輕、優(yōu)雅到極點(diǎn)的算法和代碼實(shí)現(xiàn)時,他們感覺自己的膝蓋……有點(diǎn)軟。
“前瞻控制的緩沖區(qū)管理……原來可以這樣實(shí)現(xiàn)?!”
“樣條插補(bǔ)的這個快速求逆解算法……簡直是神來之筆!”
“自適應(yīng)控制的參數(shù)收斂速度……他是怎么做到的?!”
之前還摩拳擦掌,準(zhǔn)備在姜總師面前“露一手”的專家們,此刻看著眼前這堆“參考代碼”,感覺自己就像是一羣剛剛學(xué)會加減乘除的小學(xué)生,卻突然看到有人把微積分的標(biāo)準(zhǔn)答案拍在了他們面前。
震驚。
難以置信。
繼而是……一種近乎于“朝圣”般的敬畏!
他們終于明白,自己面對的,根本不是一個普通的年輕天才。
這是一個……無法用常理揣度的、人形的……怪物!
或者說……神?