李慶楠,宋 丫,嚴(yán) 琳,騫恒源
(航空工業(yè)西安航空計(jì)算技術(shù)研究所,陜西 西安 710065)
近年來,機(jī)載設(shè)備綜合化程度和復(fù)雜性不斷提高,設(shè)備故障的排查也越發(fā)復(fù)雜[1,2]。設(shè)備故障的診斷、分析及定位往往依賴于飛參和產(chǎn)品內(nèi)部非易失存儲(chǔ)器中記錄的數(shù)據(jù)。由于機(jī)載設(shè)備最小任務(wù)周期與飛參記錄周期不一定相同,且受通信數(shù)據(jù)數(shù)量的限制,并不能將所有信息均上傳飛參。這對(duì)某些暫態(tài)故障的排查帶來不便,此時(shí)產(chǎn)品內(nèi)部非易失存儲(chǔ)器中記錄的故障信息是排故的重要依據(jù)。然而設(shè)備往往采用事件觸發(fā)記錄的方式,該方式存在消耗時(shí)間動(dòng)態(tài)范圍寬、可拓展性不強(qiáng),適用范圍窄的缺點(diǎn),因此設(shè)計(jì)一種記錄消耗時(shí)間動(dòng)態(tài)范圍可控,且適用范圍廣的故障記錄機(jī)制具有重要意義。
非易失存儲(chǔ)器(NVM)可分為只讀存儲(chǔ)器(ROM)、閃存(Flash)、光、磁介質(zhì)存儲(chǔ)器、非易失隨機(jī)存取存儲(chǔ)器(NVRAM)。ROM可細(xì)分為不可編程ROM、可編程ROM(PROM)、可擦除可編程ROM(EPROM)和電可擦除可編程ROM(EEPROM)。
NVRAM借助帶有備用電源的SRAM或借助NVM(如EEPROM)存儲(chǔ)SRAM中的信息來實(shí)現(xiàn)非易失功能。NVRAM可以像SRAM一樣讀寫,而且寫入的信息掉電不丟失,不需要EEPROM和FLASH的特定擦除和編程操作[3]。
在機(jī)載領(lǐng)域,常用NVRAM作為故障記錄存儲(chǔ)器,少量場(chǎng)景使用EEPROM。
本文設(shè)計(jì)的故障信息內(nèi)容與所占大小如表1所示。
表1 故障信息內(nèi)容
幀頭用于標(biāo)識(shí)一條故障信息的起始位置;接口類型用于標(biāo)識(shí)故障的接口類別,最大支持64種,每種接口最多可包含256個(gè)通道;故障時(shí)機(jī)可分為上電自檢測(cè)、周期自檢測(cè)及維護(hù)自檢測(cè);故障現(xiàn)場(chǎng)用于記錄判故所依賴的數(shù)據(jù),不同接口記錄的故障現(xiàn)場(chǎng)數(shù)據(jù)類型可不相同;故障次數(shù)用于表示故障發(fā)生的次數(shù),故障從無到有,次數(shù)增加1。
考慮到故障記錄是事件觸發(fā)的,設(shè)備運(yùn)行過程中故障數(shù)量是動(dòng)態(tài)變化的,極端情況下所有故障可能在同一周期發(fā)生,也可能沒有故障,若每次故障發(fā)生時(shí)直接寫非易失存儲(chǔ)器,記錄故障所消耗的時(shí)間動(dòng)態(tài)變化范圍大,可能引起任務(wù)超時(shí)。
另外,對(duì)于寫周期有限制的非易失存儲(chǔ)器,若每次故障發(fā)生時(shí)進(jìn)行寫操作,可能由于多個(gè)故障發(fā)生的時(shí)間間隔小于非易失存儲(chǔ)器寫周期而導(dǎo)致寫入失敗。
因此,本文設(shè)計(jì)了如圖1所示的故障記錄機(jī)制。
圖1 故障記錄機(jī)制
故障記錄過程可劃分為3個(gè)步驟。首先,故障信號(hào)狀態(tài)發(fā)生變化時(shí),按照表1產(chǎn)生一條故障信息;其次,將故障信息寫入故障記錄隊(duì)列;最后,周期性從故障記錄隊(duì)列中讀取一定數(shù)量的故障記錄,將其寫入非易失存儲(chǔ)器的滾動(dòng)記錄區(qū),最后更新記錄索引信息到固定記錄區(qū)。
本節(jié)以EEPROM(AT24C64A)為例,實(shí)現(xiàn)故障記錄過程,該過程同樣適用于以NVRAM作為存儲(chǔ)器的場(chǎng)景。
AT24C64D采用IIC通信方式,控制引腳少,可以在IIC總線上掛載多片以拓展容量;該EEPROM寫周期最長(zhǎng)為5 ms[4]。
為滿足寫周期要求,本文設(shè)計(jì)的EEPROM最小寫周期為10 ms,故障記錄隊(duì)列最多存放512條故障信息。周期任務(wù)流程圖如圖2所示。
設(shè)備運(yùn)行過程中,周期性對(duì)自身軟、硬件資源進(jìn)行檢測(cè),若發(fā)現(xiàn)故障,則生成故障信息并寫入故障記錄隊(duì)列;每?jī)蓚€(gè)周期從故障記錄隊(duì)列中讀取故障信息,若讀取到故障信息,則寫入EEPROM,并在下個(gè)周期將更新后的故障記錄索引記錄到EEPROM中,否則不進(jìn)行EEPROM寫操作。
經(jīng)實(shí)際應(yīng)用驗(yàn)證,本文設(shè)計(jì)的故障記錄機(jī)制具有拓展性強(qiáng)、適用范圍廣的優(yōu)點(diǎn)??梢詰?yīng)用于以NVRAM和EEPROM為存儲(chǔ)器的機(jī)載設(shè)備。同時(shí),能有效減小周期任務(wù)運(yùn)行時(shí)間的動(dòng)態(tài)范圍,避免任務(wù)超時(shí)。另外,該機(jī)制具有良好的可移植性,既能應(yīng)用于任務(wù)簡(jiǎn)單的裸機(jī),也能應(yīng)用于多任務(wù)嵌入式系統(tǒng)中(需將故障記錄隊(duì)列作為共享資源,進(jìn)行互斥訪問),也為其他民用領(lǐng)域故障記錄提供有效參考。
圖2 10 ms周期任務(wù)程序流程圖