李勇 糜杰 施浩琴
摘要:針對某項目軟件開發(fā)過程中出現(xiàn)的故障類型繁多,故障申報規(guī)模龐大的問題,設(shè)計了一種采用實時故障與非實時維護故障分類處理的方法。該方法首先通過對航空發(fā)動機控制軟件中常見申報故障進行分類處理,其次針對不同類型的故障設(shè)計不同故障碼,最后針對軟件內(nèi)部運行異常專門設(shè)計了軟件的異常捕獲記錄功能。試驗結(jié)果表明,設(shè)計的故障分類方法具有良好的故障申報效果,適用于復雜系統(tǒng)的故障診斷檢測。
關(guān)鍵詞:故障診斷;故障申報;實時故障碼;維護故障碼;軟件異常捕獲與記錄
1 引言
隨著航空發(fā)動機控制功能越來越復雜,對發(fā)動機運行過程中的故障監(jiān)控要求也越來越精細??刂栖浖鳛榭刂坪诵模撠熃邮胀獠恐噶畈?zhí)行運算給出輸出指令,它的核心作用也愈發(fā)凸顯,軟件的復雜度也越來越高,軟件失效的隱患也越來越多。
本文針對故障診斷要求越來越高的需求,聚焦系統(tǒng)與軟件專業(yè)故障,實現(xiàn)故障異常的識別和檢測算法設(shè)計。在研究過程中,通過梳理系統(tǒng)層面與軟件層面故障,設(shè)計實時故障碼以及維護故障碼,最后針對軟件運行異常設(shè)計異常捕獲記錄功能。最終,解決了軟件監(jiān)控過程中出現(xiàn)的故障申報問題。
2 系統(tǒng)層面實時故障診斷
系統(tǒng)層面的故障診斷,主要是系統(tǒng)架構(gòu)層面的故障診斷,取決于系統(tǒng)余度的構(gòu)型。針對系統(tǒng)層面的故障診斷,設(shè)計了實時故障的診斷與申報機制。檢測的目的是為了將系統(tǒng)層面的故障信息提供給飛行員或維護人員,為下一步的操作處理提供參考。
目前本文這方面主要考慮的是設(shè)備/功能的BIT檢測。該檢測一般指的是外部關(guān)鍵設(shè)備功能的檢測,比如FMV輸出閥、VSV輸出閥、開入信號(例如KI_Start起動按鈕)等。
檢測的一般原理檢查期望與實際是否一致。若一致,通過,若不一致,不通過。
檢測的常用方法有奇偶校驗不一致、校驗和不一致、輸出給定與反饋不一致、多余度不一致、范圍超限等。
故障申報方法:采用實時故障碼,定義16個16位整型數(shù),每個bit位代表一個故障狀態(tài)??偣部梢员碚?56個故障信息。
3 軟件層面故障診斷
從軟件專業(yè)角度,故障診斷更加關(guān)注的是在既定系統(tǒng)架構(gòu)、硬件資源確定的情況下,如何使用軟件的手段增加故障\異常的檢出;因此針對軟件更關(guān)注的內(nèi)部運行異常,設(shè)計了維護故障的捕獲、記錄、申報功能;站在軟件層面,維護故障可以記錄更詳細和更廣泛的故障異常信息。該部分檢測的目的是為了監(jiān)視軟件內(nèi)部異常及細節(jié)的故障信息。
軟件內(nèi)部異常檢測,一般指的是軟件運行異常狀態(tài)的檢測。檢測的一般原理:若期望與實際不一致,則軟件異常。
故障申報:采用維護故障碼的形式,捕獲故障時刻的特征參數(shù),并記錄故障碼。
4 實時故障和維護故障申報
實時故障碼,以固定實時周期將故障信息通訊給飛機,更注重是外部接口,信息精煉,用于飛機顯示、告警、記錄。
維護故障碼,按照已記錄故障碼,非實時地循環(huán)發(fā)送給飛機,一次發(fā)一個故障碼信息。維護故障碼,是記錄內(nèi)部異常信息,強調(diào)信息量大,實時性偏弱,用于設(shè)計人員分析監(jiān)測運行。
5 軟件異常運行監(jiān)控記錄功能
為了彌補實時故障碼信息的局限性,同時為了更全面的捕獲記錄異常信息(方便設(shè)計和排故分析),專門設(shè)計了軟件的異常捕獲記錄功能。給每個軟件異常分配一個唯一的故障碼標識;在軟件程序中常駐異常檢測代碼;當異常觸發(fā)時刻,記錄該異常的故障碼、發(fā)生時刻及特征參數(shù)信息。該故障信息作為一條記錄,存儲到NVRAM中。
a)設(shè)計假設(shè)
1)異常的類型較多,因此用一個16位整數(shù)對異常進行編碼;
2)異常的類型雖然多,但同一時刻不會大量爆發(fā);
3)異常的發(fā)生屬于偶發(fā)性質(zhì),不會長時間持續(xù)。
b)設(shè)計思路
1)建立一個基于NVRAM的緩存池,可以存放多個異常記錄信息(32個);
2)異常信息已記錄的格式,在觸發(fā)的時刻被軟件監(jiān)視捕獲,并寫入緩存池,異常記錄以故障碼為索引;
3)異常捕獲后,如果緩存池已經(jīng)記錄過該故障碼,則在該故障碼的存儲位置更新最新的異常信息;如果緩存池中沒有該故障碼信息,則從緩存池中找一個空白記錄位置進行信息記錄;
4)如果緩存池已經(jīng)全部用滿,且新捕獲的故障碼沒有出現(xiàn)在緩存池中,則覆蓋最舊的記錄,用于存儲新發(fā)生的異常;
5)通過用戶上位機串口和數(shù)據(jù)記錄儀串口,采用異常記錄循環(huán)的方式(間隔3s),進行對外顯示記錄。
c)異常發(fā)生時間算法
1)定義異常信息結(jié)構(gòu):
包含故障碼、控制器絕對時間、Arinc429飛機授時(日、時、分)、記錄次數(shù)、故障特征參數(shù)1、故障特征參數(shù)2;
2)由于記錄存儲空間受限以及同時有效利用飛機授時和EEC時間,優(yōu)化設(shè)計了時間換算算法。
控制器絕對時間,使用軟件的5ms中斷計數(shù)(除以200),換算為秒;
飛機授時,使用飛機Arinc429授時的年、月、日、時、分、秒;取其中的日、時、分,換算為單位是分的一個整形數(shù);
這樣,即使飛機授時無效的情況下,也能夠反應出故障發(fā)生時刻的基本時間信息;
3)特征參數(shù)根據(jù)故障類別進行設(shè)置,目的是根據(jù)此參數(shù)快速識別故障類別,及時定位到該故障。
d)異常記錄方式及優(yōu)點
由于記錄存儲NVRAM空間有限,設(shè)計了循環(huán)存儲方式:
1)新發(fā)生的異常(之前未記錄過的),占用一條空白記錄位置;
2)已發(fā)生記錄的異常,在原有位置更新信息;
3)如果循環(huán)存儲空間已滿,新發(fā)生的異常覆蓋最舊的故障記錄信息。
通訊顯示方式:每次通訊顯示一條記錄(占用6個16位通訊位置),對已記錄故障進行循環(huán)顯示。
循環(huán)存儲以及循環(huán)顯示優(yōu)點如下:
1)記錄的異常信息沒有限制(只要分析識別到的異常,設(shè)計了異常捕獲方法的都可以記錄);很靈活,可以不斷增加;
2)記錄的故障信息更全面,涵蓋了發(fā)生時刻、發(fā)生次數(shù)、故障特征參數(shù);
3)記錄的故障信息定位更準確,更利于故障排查;
4)通過該內(nèi)部監(jiān)視功能,可以把軟件派生的異常處理進行顯形設(shè)計;
6 實例
1、定義如下故障碼結(jié)構(gòu):
typedef struct tagFAULTINFO
{
INT16U FaultCode; /* Fault Code*/
INT16U EecTime; /* 控制器絕對時間(s),最大表示18小時*/
INT16U AcTime; /* Arinc429飛機授時(日、時、分)*/
INT16U RecordCnt; /* 記錄次數(shù)*/
INT16S FaultPara1; /* 故障特征參數(shù)1*/
INT16S FaultPara2; /* 故障特征參數(shù)2*/
}FAULTINFOSTRU;
2、對故障進行分類:
#define EXC_INPUT_SIGNAL (0xFF<<8)
#define EXC_ABNORM_BRANCH (0xFE<<8)
#define EXC_TIMEOUT (0xFD<<8)
#define EXC_SOFT_RUNNING (0xFC<<8)
#define EXC_EXTERN (0xFB<<8)
#define EXC_EEC (0xFA<<8)
#define EXC_ENGINE (0xFB<<8)
3、建立函數(shù)FaultSnapshot(INT16U faultcode,INT16S para_1, INT16S para_2)。
形參faultcode表示故障碼、形參para_1、para_2分別表示故障特征參數(shù)1、故障特征參數(shù)2;其中故障碼faultcode根據(jù)已分類的故障進行設(shè)置。
在需要異常監(jiān)測中調(diào)用FaultSnapshot,進行故障碼的獲取。例如為了檢測N1轉(zhuǎn)速選擇分支異常。在異常發(fā)生處,調(diào)用FaultSnapshot函數(shù),故障碼設(shè)置為(EXC_INPUT_SIGNAL|EM_N1)。
7 結(jié)論
綜上所述,本文設(shè)計了一種瞬態(tài)異常的實時捕獲記錄方法。該方法使得異常記錄范圍不再受限,從而可以把焦點轉(zhuǎn)移到異常的識別和檢測方法設(shè)計本身。結(jié)合故障碼的設(shè)計,更有利于軟件的維護。
參考文獻:
[1]王曉東,陳道蓄.數(shù)據(jù)結(jié)構(gòu)(STL框架)[M].2009年9月第1版.
[2]William Collins.Data Structures and the Standard Template Library.McGraw-Hill Science,2002.
[3]肖建.ASP.NET 編程實例與技巧集粹[M].北京:北京希望電子出版社,2003.
[4]張海蕃.軟件工程導論[M].北京:清華大學出版社,2003.
[5]趙晶.基于信息融合技術(shù)的航空發(fā)動機智能檢查研究[M].南京航空航天大學,2010.
[6]向立杰,譚杰等.先進控制算法軟件的設(shè)計與開發(fā)[J].計算機工程,2003,29(18):41-43.
[7]孫鶴旭,林濤.嵌入式控制系統(tǒng)[M].北京:清華大學出版社,2007,3-4.