出包還是撞鬼? 系統總在凌晨2點崩潰!

作者 : Curt Wilson, Delta Tau Data Systems

裝配線24小時三班不停地運作,白天一直正常,但是每到凌晨2點左右,在令人最睏乏的午夜時分都會出現意外停機的「靈異事件」…

1980年代後期,我曾經任職於一家生產數位動作控制器的小公司,那時我還是一名年輕的工程師。當時數位技術已經相當成熟,也夠便宜了,可以在許多應用中取代以前用的純機械或類比電子控制裝置。此外,隨著數位光電編碼器等位置感測器的成本不斷降低,在以前只能使用類比轉速表進行速度控制的應用中,也可以採用位置控制。

這是一家小公司,所以我必須是一個全能選手,我的其中一個頭銜是應用支援工程師,負責處理客戶問題。當時有一條帶輸送裝置的裝配線剛剛採用了我們的控制器,這條裝配線用於生產最早期的小型螢光燈泡。搭建這條裝配線的工程師對其運行情況非常滿意,因為這條裝配線達到了前所未有的精度和速度。

然而,當裝配線全面投入使用時,出現了一個大問題。這是一條自動化裝配線,本來應當24小時三班不停地運行。但是,當它開始投入連續工作後,從白天到晚上都非常正常,說也奇怪一到每天凌晨2點左右,在令人最睏乏的午夜時分,裝配線都會意外停機。由於這一時間段值班的工作人員很少,因此整個晚上後來的時間這條裝配線一直處於停工狀態。等其他工程師上午8點左右上班以後重置系統,生產才會重新開始。每天都得重覆這樣的「輪迴」。

當然,由於公司損失了四分之一的生產時間,系統總在半夜兩點準時停機的這個「靈異事件」很快地就引起重視,公司專門指派了經驗豐富的技術人員來通宵監控系統,以便尋找問題的根源。有同事說以前曾遇到過這種情況,通常是由類比漂移問題引起的。一開始,大多數的觀點認為工廠溫度在夜間下降,導致一些類比電路無法正常工作。(雖然系統中的放大器是由數位控制器驅動的,但它們仍然是類比元件。)

很多天過去了,尋找漂移問題沒有任何結果。從類比示波器的跡線來看,在系統崩潰之前,關鍵的訊號並沒有發生漂移。後來使用了恆溫器,以便讓夜間的溫度與白天保持一樣,並且採用單獨測量進行確認,但是停機仍然每天晚上都發生。

為了找出夜間停機的問題所在,公司派我去看看從控制器可以獲得什麼樣的資訊。數位控制器有資料記錄功能,我覺得這可能會有幫助。

這個功能按現在的標準來看確實比較原始簡單,但在當時是還是很先進的。一方面,那時的記憶體非常昂貴,因此,如果按發現問題所需的採樣率來計算,它只能儲存不到一分鐘的資料。此外,這一功能是設計用來儲存短時間的非連續性事件,例如伺服馬達調整動作等。如果記憶體緩衝滿了,就會停止工作。

為了使用這一功能來解決我們遇到的問題,我不得不編寫一些低階程式碼,以欺騙緩衝的狀態位元和儲存指針。當緩存對關鍵動作暫存器的記錄快到末尾時,我的程式碼就會檢查動作演算法中是否有任何誤差情況。如果沒有,我會重新編寫儲存指針,它就會重新尋址到記憶體緩衝的開始。如果發生誤差,就讓緩衝停止記錄。這樣,緩衝就可以記錄下來系統停機前最後一分鐘的數據。基本上,這相當於為系統建立一個黑盒子記錄器。

在系統運行良好時,我們運行了幾次數據記錄緩衝,得到了一些參考圖以進行比較,然後將其設置為連續運行一整夜。那天晚上,故障照常發生了,但是我們獲得了可用於分析故障原因的有用數據。

一大早我們上傳了記錄的數據,並用於繪製成圖。一看到圖,我們便恍然大悟,明白問題出在哪裡了,並懊惱自己「為什麼以前沒想到這一點」。

這些圖顯示系統在出現故障前一直都運行良好。當輸送帶中的32位元位置暫存器達到其最大正值並翻轉至最大負值時,故障發生了。輸送帶始終朝「正」方向移動,以它的運行速度,從零位置啟動到故障發生的時刻,大約需要18個小時,這就是為什麼它總是發生在深夜的原因,也是為什麼在運行時間較短的裝配線中從未見過這種故障情況的原因。

短短幾分鐘內,我們就判斷出問題就出在相關應用軟體的數學邏輯無法正確處理位置暫存器翻轉。於是我們又花了幾分鐘時間,確定問題並進行修復後,從此就再也沒有發生過這樣的故障了。

回過頭來看看這個問題,我發現那些資深老手(最初我完全聽從他們的意見)雖然對不同類型的系統都很有經驗,但經驗主義往往阻礙了他們找出問題。那些有經驗的老同事們非常關注類比速度控制系統中發生的各種問題,但卻未注意到數位定位系統可能出現完全不同的問題。

很幸運地,這一經歷也讓我在「千禧危機」(Y2K Scare)發生的十年前就知道存在「翻轉失敗」這樣的軟體問題,所以我很清楚什麼會引起問題以及什麼不會。

— 本文作者Curt Wilson是工業控制公司Delta Tau Data Systems的工程和研究副總裁。他擁有史丹佛大學(Stanford University)機械工程學士和碩士學位。

(原文連結:Looking for drift in all the wrong places,Jenny Liao編譯)

加入LINE@,最新消息一手掌握!

發表評論