困難對於人來說,是一把打向坯料的錘,打掉的應是脆弱的鐵屑,鍛成的將是鋒利的鋼刀——契訶夫。 很多人害怕困難,實際上並不是害怕困難本身,而是害怕為了克服困難而所需付出的努力,所以困難並非不可克服,之所以不可克服,是因為努力不夠! 我們開始了在金山石化總廠的反應釜溫度控製試驗,但我馬上發現項目的難度遠超出我的想象...... “不行,沒有控製住!”老葛看著手裡打印出來的溫度控製曲線記錄,搖著頭說道。 “你看這裡,溫度突然升高了,明顯是反應釜中的化學反應開始放熱了,但控製係統沒有及時降溫!”老葛指著溫度控製曲線記錄紙上一個突然上升的溫度脈沖說道。 “再看這裡,溫度又突然下降了,明顯上反應釜中的化學反應開始吸熱了,但控製係統沒有及時加溫!”老葛又指著溫度控製曲線記錄紙上一個突然下降的溫度脈沖說道。 我們來到金山石化總廠已經一個多星期了,試驗結果非常不理想,每天我們看著一卷又一卷的溫度控製曲線記錄紙上那些不聽“使喚”上躥下跳的溫度控製曲線束手無策。 之前,一開始在上海器皿二廠的項目中,我們好歹把溫度控製住了,隻是最後燒出來的產品不合格; 而現在,連溫度都沒有控製住,這反應釜裡的化學反應過程是否正確就更談不上了! 看到控製的曲線像一匹脫離韁繩的野馬,老葛也很焦急,因此他每天都會來實驗室,看我們的試驗結果,並和我們一起分析控製中出現超調的原因。 確實如老葛說的,他們的反應釜容積小,這意味著熱容量小,對化學反應中出現的放熱和吸熱產生的溫度乾擾非常敏感。 另一方麵,反應釜的熱容量雖然小,但並不是零,因此有著自己的熱慣性,一旦由於化學反應過程中的放熱和吸熱產生了溫度乾擾,由於反應釜的熱容量的存在,因此控製係統在調控時並不能馬上影響正在進行的化學反應,因此非常容易出現超調。 所謂的超調,就是對溫度波動進行調整控製後,溫度不會立即回到原來的設定位置,而是還會隨著慣性繼續上沖或繼續下跌,而等到通過調整控製回到原來的設定位置後,又不會立即停下來,保持在設定的溫度位置,而是會隨著慣性繼續下跌或上沖。 超調的問題,在自動控製中是一個經典的問題,有很多種方法可以解決。 我感興趣的領域就是自動控製領域,我甚至還花了二年多的時間去準備報考自動控製的研究生,因此我對自動控製理論可以說是再熟悉不過了。 我知道,隻要在傳統的負反饋控製基礎上,適當地加入現代控製理論中的前饋控製,就能很好地解決超調問題。 但是,我遇到的最大困難和之前上海器皿二廠的項目是一樣的,那就是040微處理器的設計初衷是為了簡單的家用電器控製,而不是為了復雜的工業過程控製! 因此在一次我們租賃團隊內部的情況分析會上,小傅終於憋不住了,說:“這040究竟行不行啊?要解決超調問題,就必須加入現代控製理論中的前饋控製,但這040本來就是用來控製家用電器的,現在卻硬要用來控製復雜的工業過程,這不是逼著人去上吊嗎?!” 應當承認小傅的抱怨不是沒有道理的,040的設計初衷確實是用來控製家用電器的,是我們硬要用來控製復雜的工業過程,因此其運算能力和內存都遠遠無法滿足要求。 事實上,不要說現代控製理論中的算法需要復雜的數學計算,就連為了實現最常規的傳統PID控製,當時我們在上海器皿二廠的項目中就已經捉襟見肘、費盡心力了! “要不我們放棄算了,反正我們也沒有和金山石化總廠簽訂任何的合作協議。”這時小楊在一旁聽了小傅的話,也頗有打退堂鼓的意思。 “那我們的租賃合同怎麼辦?都快三個月過去了,一個項目也沒有拿到,現在好不容易有了一個,還是一塊‘肥肉’,現在又要放棄,如果接下來還是沒有項目進來,那我們該怎麼辦?”老劉在一旁聽了小楊的話,大聲質疑道。 “先不要講什麼項目了,現在我們發工資都是向廠裡借的錢,如果一直這樣下去,恐怕連工資都發不出了!”這時小黃在一旁一麵抽著煙一麵提醒大家道。 可能是小黃的話讓大家意識到了一個更為嚴峻的問題,那就是接下來我們可能連工資都發不出了! 於是大家都沉默了,甚至有人開始唉聲嘆氣起來。 沒錯,我們陷入了一個進退二難的境地: 如果進,040不是用來控製復雜的工業過程的,因此不能滿足金山石化總廠提出的控製要求實屬正常; 如果退,那很快我們就連工資也發不出了,成功完成租賃合同規定的上繳利潤更是無從談起! 但我們有其它更好的選擇麼? 沒有! 也許我們的境遇就是那個時代的一個縮影,因為這是一個有條件要上,沒有條件也要上的時代! 當時的情景如果用一個不恰當的比喻,比如說“反導”,我們既沒有S400,也沒有S300,甚至連薩姆II導彈都沒有,我們有的隻是一桿“鳥槍”! 換句話說,我們隻能用“鳥槍”去反導! 然而:任何問題都有解決的辦法,無法可想的事是沒有的——愛迪生。 我看著愁眉不展的小夥伴們,問了大家一個之前在討論接還是不接上海器皿二廠項目時問過的問題: “繼續下去,我們不一定能解決問題,結果就是連工資也發不出了;而如果放棄,短時間內也不一定能接到新的項目,即使接到了,040也未必能勝任,因為040本來就不是設計用來進行復雜的工業控製的,因此結果也是發不出工資,大家說說,我們是繼續呢,還是放棄呢?” “是啊,上次我們接了上海器皿二廠的項目,本來想這項目的復雜程度可能是到頂了,但想不到現在金山石化總廠的項目還要復雜!所以即使放棄了,接下來接到的項目也未必就會是簡單的,甚至比金山石化總廠的項目更復雜也不一定,所以我看也沒有必要挑精揀肥的了!”小宋聽了我的話,在一旁附和著我。 “這倒是的!現在看來工業過程控製都是很復雜的,是我們自己把問題想簡單了,因此我們即使放棄了這個項目,再接到的也可能是同樣復雜的項目,而且我們還不一定能接到項目!所以現在我們放棄是‘等死’,繼續下去則是‘送死’,所以我看還不如主動點,‘送死’算了!”小傅是個直性子,有什麼說什麼,但由於喜歡看書,因此有時候說話還挺幽默。 “哎呀,我們的命怎麼這麼不好啊!上次,接上海器皿二廠的項目,最後成功了,當時我想我們的運氣真好,僥幸逃過了一劫,但想不到現在又要麵臨生死二難的選擇了!”小史聽了小傅的話,就在一旁苦笑著說道。 我見大家雖然依然信心不足,但已經不再像之前那樣的愁眉苦臉和唉聲嘆氣了,就笑著鼓動大家說:“小傅說得對,工業過程控製都是復雜的,否則也不需要用微型計算機來控製了,因此是我們自己把問題想簡單了!” “這次的金山石化總廠項目,我們依然套用了上次器皿二廠項目的算法,但金山石化總廠的反應釜不是器皿二廠的池爐,它有著自己的特點,所以我們自然控製不住了!” “因此我想接下來我們要做的最重要的一件事就是先把這反應釜中的化學反應特點給搞清楚,特別是化學反應過程的放熱和吸熱對溫度的影響,以及反應釜自身由於熱容量的存在而造成的滯後特性對控製效果的影響搞清楚,建立一個數學模型,然後再用現代控製理論結合PID算法,量身定製地編寫一個最優化的控製程序。”我接著說了我的想法。 “但這反應釜裡的化學反應時間很長啊,最短的也要幾小時,長的要幾天!”小楊聽了我的話,在一旁提醒我道。 “那我們就搬到現場來住!每天24小時輪流蹲守,觀察和記錄反應釜裡的化學反應過程。”我看了一眼小楊和大家,斬釘截鐵地說道。 就這樣,我和我的小夥伴們一起把被子鋪蓋都搬到石化總廠的試驗現場,大家輪班記錄整個化學反應過程對溫度的響應特征...... ` 寒冬下的上海,陰冷的天氣,寒風卷起地下的枯葉,屋頂上覆蓋著一層薄薄的霜在拂曉的晨輝下反射出淡淡的銀光。 金山石化總廠,試驗控製室中燈火通明,玻璃窗上布滿了汽霧,窗前的暖氣片上,放著三隻上世紀八十年代初常見的典型鋁製飯盒,水泥地上鋪著二床被褥,老葛和小揚在打著呼嚕。 我坐在反應釜的控製櫃前,全神貫注地注意著控製櫃中的溫度顯示變化,並不時地把一些重要的變化和數據記錄在筆記本上,小賈身上披了一件上世紀八十年代初那種工廠裡常見的工作老棉襖,靜靜地坐著我的身邊,每次我值夜班,她都是這樣。 “你去睡吧,不用這樣陪著我。”我善意而又有點愛憐地對小賈說道。 “我不困!我在一旁可以提醒你不要忘了記錄數據。”小賈搖搖頭,不介意地輕聲說道。 “沒事,我不會忘的!”我見小賈執意要陪著我,不肯去睡,就安慰她道。 “我真的不困!”小賈搖搖頭說道。 “再說你說不會忘的,昨天我就看到溫度出現了變化,但你卻好像在想著什麼心事,沒有注意到!”小賈又補充道。 她說得沒錯,這記錄控製數據是一件需要高度集中注意力的事情,但同時又是一件非常枯燥的事情,因為很可能幾個小時都沒事,控製出來的曲線就是一條直線,但也可能突然出現攪動了! 而我滿腦子的如何解決問題,包括如何優化算法等等,以至於經常會想著想著出神了而忘了記錄數據,因此小賈在一旁等於讓我多了一雙眼睛。 於是我不再堅持催小賈去睡,隻是過意不去她這樣天天陪著我值夜班,就伸出手去摸了一下她手的溫度,想看看她是不是會冷。 小賈沒有想到我會去摸她的手,下意識地一下子把手縮了回去,同時也臉紅了,但很快她就明白了我的用意,於是就紅著臉說:“我不冷!” 我見小賈突然臉紅了,馬上意識到了自己剛才的舉動有“越界”之嫌,雖然我的本意隻是想通過摸摸她的手去試一下她的手溫,從而知道她究竟冷不冷。 我這個人歷來在和女孩子的接觸上是非常小心且敏感的,我從不會去主動觸摸女孩子,但剛才不知道怎麼回事,居然會情不自禁地去摸一下小賈的手,於是我也不禁臉紅了起來。 小賈見我也臉紅了,且表情中露出一絲的尷尬,可能是猜到了我在想什麼,於是就大方地伸出手來抓住了我的手放在了她的手背上,說:“我真的不冷!你看,我的手不是暖暖的麼?” 我一摸,感到小賈的手確實是暖暖的,於是就把手抽了回來,不好意思地說:“嗯,你的手倒是不冷,看來這工作大棉襖還是管用了!” 那時正值隆冬季節,但好在金山石化總廠是一個化工廠,不缺蒸汽,因此試驗現場有暖氣,於是我們就在水泥地上鋪了一床被子睡覺用,同時把裝飯菜的盒飯放在室內窗前的暖氣片上加熱,晚上值班時,披一件工作大棉襖,也還扛得住。 就這樣,連續三十多天不分晝夜的“車輪大戰”開始了...... 經過將近一個月的摸索後,我們已經對反應釜的化學反應特點和反應釜本身的熱容量滯後特性建立了一個初步的數學模型,接下來就是對癥下藥了——建立算法和編製相應的控製程序了,但我們遇到了更為棘手的問題,那就是計算機程序的調試。 根據我們從金山石化總廠的反應釜獲得的數學模型,我們必須對其量身定製地製定一個控製方案,而製定出來的控製方案,必須經過反應釜的實際使用後才能知道結果,這又是一個不斷實踐的過程,因此我們不得不反復地修改程序,以期得到最佳的控製效果——用專業的話說,就是要對微型計算機的程序進行調試。 但當時還沒有“閃存”這個概念,因為固態存儲芯片還有問世呢! 所以每次我們要修改計算機程序,都首先要用紫外線燈把EEPROM中的原有程序“擦乾凈”; 然後把修改過的新計算機程序重新“燒製”到“擦乾凈”的EEPROM中; 然後再將此EEPROM把微型計算機中裝著老的計算機程序的EEPROM替換下來。 同時又由於當時還沒有在線調試這樣的技術,因此我們隻能先簡單地檢查一下新“燒製”後的EEPROM能否正常工作,如果能夠正常工作,則再上現場進行調試——檢驗修改後的計算機程序的控製效果是否符合預期。 如果在現場調試中發現不對,那還得重復上述的過程,因此每一次的調試過程都非常緩慢和低效率。 更困難的是,我們所有的“擦洗”和“燒製”EEPROM的設備,包括初步調試程序的設備,都在上海的市區內的高泰電訊器材廠的電腦車間裡! 因此每次修改程序,我們都隻能從上海金山縣的石化總廠回到上海的市區內的高泰電訊器材廠的電腦車間。 那時從上海的市區到金山沒有地鐵,也沒有長途公交,隻有小火車。 小火車班次少且慢,因此從市區到金山至少需要半天多的時間,這樣我們每修改一次程序,就需要至少花費一天的時間,其中大部分的時間都是浪費在了路上,因為我們在整個金山石化總廠項目的調試期間,不得不頻繁地在金山縣和上海的市區之間坐小火車往返。找書苑www.zhaoshuyuan.com 然而,塞翁失馬,焉知非福! 四十多年過去了,現在回頭看: 這樣原始的計算機程序調試手段迫使我必須每次的編程都格外地嚴謹和小心,務必沒有任何差錯,因為一旦出錯,重復上述的過程就意味著是一天的時間! 反觀現在的軟件設計人員,都是草草地寫完代碼,也不認真檢查一下,就急急忙忙地開始調試,出錯了,才去看代碼錯在哪裡。 而正是這樣原始的調試手段,讓我有了一個難得的機會學會了如何成為一個設計和編製出來的軟件很少出錯的軟件工程師,這讓我日後在美國和我的同行們競爭時,我的工作效率要遠遠超過他們!自然這又是後話。 更重要的是:我由此看到了決心就是力量,信心就是成功,失敗者往往不是因為能力不夠,而是缺乏與困難決一死戰的決心。 我成功是因為我有決心,從不躊躇——拿破侖。 【下章看點】 聰明的小賈在如何提高程序調試的效率上想出了一個“天才”的方法,使調試的進度因此而大大加快,這讓X對她刮目相看,但與此同時,小賈暗中對X的表白也越來越大膽了,X的情感天平也因此而在不知不覺中出現了搖擺...... 小賈想出了一個什麼樣的“天才”方法?她對X的表白又怎麼越來越大膽了?而X的情感天平又會向哪個方向搖擺呢? X的情感天平又會向哪個方向搖擺呢? 欲知詳情,請見下一章分解。