白 靈,魏 磊,張文博,王曉東,王玉光
(1.北奔重型汽車集團(tuán)有限公司,內(nèi)蒙古 包頭 014030;2.內(nèi)蒙古一機(jī)集團(tuán)宏遠(yuǎn)電器股份有限公司,內(nèi)蒙古 包頭 014030)
某商用車組合儀表主要由指針表頭、TFT液晶顯示屏及指示符組成,偶爾會出現(xiàn)“死機(jī)”故障。故障現(xiàn)象為:指針儀表的指針指到某一位置不動作,液晶屏顯示數(shù)據(jù)不變,在這種情況下,關(guān)閉儀表“15”電,即將鑰匙擰到“OFF”擋,儀表沒有復(fù)位,還是維持“死機(jī)”故障現(xiàn)象;將鑰匙擰到“ON”擋,組合儀表還是維持“死機(jī)”故障現(xiàn)象;只有將整車電源總開關(guān)斷開后再接通,然后將鑰匙擰到“ON”擋,組合儀表重新啟動,各個指針儀表指針復(fù)位指示正常,液晶屏復(fù)位顯示正常,組合儀表功能恢復(fù)。
通過故障現(xiàn)象初步分析,儀表在發(fā)生“死機(jī)”故障的時候,儀表是在運行的,只是在執(zhí)行一些高優(yōu)先級的事件 (例如中斷和高優(yōu)先級的任務(wù)等),不再執(zhí)行一些低優(yōu)先級事件。該儀表軟件的基本架構(gòu)如下:AD數(shù)據(jù)采集任務(wù)——負(fù)責(zé)AD數(shù)據(jù)采集和鑰匙“15”電檢測;步進(jìn)電機(jī)任務(wù)——負(fù)責(zé)步進(jìn)電機(jī)的走位;顯示任務(wù)——負(fù)責(zé)液晶屏上具體位置的數(shù)據(jù)顯示;按鈕任務(wù)——負(fù)責(zé)按鈕的操作采集處理;加密驗證任務(wù)——負(fù)責(zé)驗證硬件和軟件是否合法保護(hù)客戶的權(quán)益;其余任務(wù)——負(fù)責(zé)其他功能,例如故障檢測、數(shù)據(jù)保存等,除此之外,還有一些中斷負(fù)責(zé)頻率信號的采集和提供時間基準(zhǔn)。
我們在偶爾出現(xiàn)“死機(jī)”故障儀表軟件程序上增加測試點,以便準(zhǔn)確找到出現(xiàn)故障的原因,分別在以下5處增加的測試點進(jìn)行監(jiān)控:①AD轉(zhuǎn)換任務(wù);②其余任務(wù)中存儲里程任務(wù);③按鈕任務(wù);④加密驗證任務(wù);⑤CAN芯片出現(xiàn)故障。
當(dāng)再次出現(xiàn)“死機(jī)”故障時通過上述測試點監(jiān)控發(fā)現(xiàn),任務(wù)都是在等待時間片轉(zhuǎn)的時候出現(xiàn),于是排除了在執(zhí)行某個任務(wù)程序死循環(huán)后而造成的“死機(jī)”故障現(xiàn)象的情況,于是我們推測故障的原因就是中斷造成操作系統(tǒng)調(diào)度失敗或者失誤調(diào)度造成。
為此我們在臺架試驗臺上模擬制造了一個高優(yōu)先級事件-20us的定時中斷,結(jié)果模擬出了儀表“死機(jī)”故障現(xiàn)象。軟件程序中對儀表“15”電的檢測屬于AD數(shù)據(jù)采集任務(wù),優(yōu)先級比中斷低,在出現(xiàn)故障的時候此AD采樣任務(wù)一直不能得到執(zhí)行,即關(guān)閉儀表“15”電不能被正確檢測到,所以必須關(guān)閉“30”電,才能使儀表復(fù)位,恢復(fù)正常功能;同樣軟件架構(gòu)中的顯示任務(wù)及步進(jìn)電機(jī)任務(wù)也不會執(zhí)行,所以液晶屏顯示不會變,指針儀表的指針會停留在出現(xiàn)故障前的位置,進(jìn)一步確定了導(dǎo)致“死機(jī)”故障原因是中斷造成操作系統(tǒng)調(diào)度失敗。
這次我們修改了測試方法,通過可編程設(shè)置外部信號發(fā)生裝置,使車速和轉(zhuǎn)速信號變化得更無規(guī)律,在內(nèi)部仿真環(huán)境下抓到了一次“死機(jī)”故障,確定儀表“死機(jī)”故障時操作系統(tǒng)任務(wù)調(diào)度失敗。進(jìn)一步檢查發(fā)現(xiàn),故障時操作系統(tǒng)任務(wù)調(diào)度中斷 (時基中斷)在調(diào)度的時候沒有正常退出,被轉(zhuǎn)速捕捉中斷打斷造成調(diào)度失敗,通過進(jìn)一步分析發(fā)現(xiàn)要出現(xiàn)這個故障現(xiàn)象必須受轉(zhuǎn)速高低電平出現(xiàn)的時刻,又受時基中斷執(zhí)行時刻,以及是否有任務(wù)的切換影響,因此很難在短時間內(nèi)出現(xiàn)“故障”且無規(guī)律可尋。
通過上述故障分析、排查,確認(rèn)“死機(jī)”故障是由中斷造成操作系統(tǒng)調(diào)度失敗而產(chǎn)生。當(dāng)進(jìn)入“時基中斷服務(wù)子程序”后,此階段需要任務(wù)調(diào)度、高優(yōu)先級以及中斷產(chǎn)生的時候 (3個條件同時滿足)就會出現(xiàn)任務(wù)調(diào)度失敗,一旦失敗,以后所有的調(diào)度都不能正常執(zhí)行,從故障現(xiàn)象上看如同“死機(jī)”,軟件流程如圖1所示。
圖1 優(yōu)化前時基中斷軟件流程圖
從圖1可以看出,當(dāng)進(jìn)入“時基中斷服務(wù)子程序”后,此階段又需要任務(wù)調(diào)度且又有高優(yōu)先級中斷產(chǎn)生的時候 (3個條件同時滿足)就會出現(xiàn)任務(wù)調(diào)度失敗,一旦失敗,后續(xù)所有的調(diào)度都不能正常執(zhí)行,優(yōu)化設(shè)置“時基中斷”優(yōu)先級為最高,在執(zhí)行任務(wù)調(diào)度的時候不會被別的中斷打斷造成任務(wù)調(diào)度失敗,如果有其他中斷在此時刻需要等到退出時基中斷后再執(zhí)行相應(yīng)的中斷服務(wù)程序,軟件流程圖如圖2所示。
圖2 優(yōu)化后時基中斷軟件流程圖
隨著電子技術(shù)的發(fā)展,越來越多的先進(jìn)技術(shù)也應(yīng)用到儀表中,嵌入式軟件中斷在汽車儀表中得到了廣泛的應(yīng)用,由于中斷執(zhí)行具有隨機(jī)性,與硬件、環(huán)境和應(yīng)用都有密切的關(guān)系,帶來的問題往往具有隱蔽性[2]。本文結(jié)合實車儀表的故障排查、原因分析及優(yōu)化設(shè)計,為后續(xù)儀表設(shè)計中軟件中斷的應(yīng)用積累了豐富的經(jīng)驗。