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