施先旺,劉婷婷,李國良
(1.西安航天動力研究所,陜西西安710100;2.中國航天科技集團(tuán)軟件評測中心,北京100037)
在某發(fā)動機(jī)控制系統(tǒng)中,根據(jù)系統(tǒng)主控計算機(jī)發(fā)出的控制指令,使發(fā)動機(jī)執(zhí)行相應(yīng)的增壓、起動、關(guān)機(jī)及緊急關(guān)機(jī)等程序,控制指令的可靠檢測是實(shí)現(xiàn)發(fā)動機(jī)工作狀態(tài)控制必須首先要解決的關(guān)鍵問題。根據(jù)控制指令特征,采用有限狀態(tài)機(jī)設(shè)計了一種檢測方法,大大提高了檢測的可靠性。
控制指令包括增壓、起動、關(guān)機(jī)、緊急關(guān)機(jī)、燃料排放及備用指令等,共7種,共用一個16位數(shù)字量端口??刂浦噶钣上到y(tǒng)主控計算機(jī)發(fā)出,指令信號驅(qū)動電氣系統(tǒng)指令繼電器,使相應(yīng)繼電器觸點(diǎn)斷開或閉合。在發(fā)動機(jī)控制系統(tǒng)中,繼電器觸點(diǎn)狀態(tài)改變使指令檢測電路輸出邏輯電平變化,經(jīng)由控制指令接口輸入。控制系統(tǒng)軟件實(shí)時檢測控制指令接口狀態(tài),即時識別控制指令,并啟動相應(yīng)的控制時序。
控制指令信號特征如下:
1)指令采用邏輯電平表示,高電平有效,低電平無效;
2)指令信號高電平持續(xù)時間≮5 s;
3)任意時刻有且僅有一個有效指令。
發(fā)動機(jī)工作過程中,通過執(zhí)行上述指令,嚴(yán)格按照設(shè)定的通電順序、通電時間,使給定的電爆閥動作,完成增壓、系統(tǒng)充填、通電點(diǎn)火、起動、燃燒室工作、切斷燃料供應(yīng)使燃燒室停止工作等設(shè)定的程序。系統(tǒng)中電爆閥只能動作一次,且任何一個指令的工作時序、執(zhí)行次序也必須確保一次成功。因此,必須確??刂浦噶顪?zhǔn)確、可靠、實(shí)時識別,既不可漏檢,亦不能誤檢。在控制指令產(chǎn)生、傳輸、檢測、執(zhí)行各環(huán)節(jié)中,執(zhí)行環(huán)節(jié)不可逆轉(zhuǎn)。為提高任務(wù)可靠性,應(yīng)能識別錯誤指令、干擾產(chǎn)生的偽指令、繼電器觸點(diǎn)失效產(chǎn)生的假指令等,防止誤操作。
在計算機(jī)系統(tǒng)中,一般數(shù)字量的檢測只需直接讀取數(shù)字量端口即可。為提高可靠性,可以采用重復(fù)讀取的方法,或進(jìn)一步采用數(shù)字濾波算法。但對于本文涉及的系統(tǒng),僅僅采取這些措施是遠(yuǎn)遠(yuǎn)不夠的。
為提高指令檢測的可靠性,必須充分利用指令的各種特征,包括上述信號特征以及隱含的任務(wù)特征,即:
1)必須利用信號的寬度,多次、等間隔檢測;
2)同時檢測所有信號,根據(jù)“任意時刻有且僅有一個有效指令”,丟棄無效信號;
3)檢測信號上升沿,最大限度地確認(rèn)信號是主動產(chǎn)生的;
4)指令只能執(zhí)行一次,指令執(zhí)行后應(yīng)對此指令予以屏蔽;
5)必須考慮指令的生存周期,且任意時刻只能有一個指令在執(zhí)行。
根據(jù)上述原則,對數(shù)字量的檢測不再是一般的靜態(tài)讀取過程,而是一種多信號按時間序列讀取、比較、判斷的動態(tài)過程。在這一過程中,指令識別過程事實(shí)上被劃分為幾種特定狀態(tài),每一種狀態(tài)不僅與數(shù)字量端口狀態(tài)有關(guān),也與前一狀態(tài)有關(guān)。
根據(jù)以上分析,采用有限狀態(tài)機(jī)為指令信號檢測過程建模。有限狀態(tài)機(jī)是一種概念上的機(jī)器,常見于數(shù)字時序電路設(shè)計。有限狀態(tài)機(jī)由一組狀態(tài)集、一個起始狀態(tài)、一組輸入符號集、一個映射輸入符號和當(dāng)前狀態(tài)到下一狀態(tài)的轉(zhuǎn)換函數(shù)組成。當(dāng)輸入符號串時,有限狀態(tài)機(jī)隨即進(jìn)入起始狀態(tài),在任意特定時刻,只能處于其中一種狀態(tài)。狀態(tài)的轉(zhuǎn)換依賴于當(dāng)前狀態(tài)、輸入符號(觸發(fā)條件)和轉(zhuǎn)換函數(shù),轉(zhuǎn)換時間理論上為零。為此,根據(jù)指令特征和檢測要求,從指令發(fā)出到指令執(zhí)行結(jié)束,定義空閑、等待、檢測、有效、執(zhí)行、超時、完成7個狀態(tài),各狀態(tài)及其對應(yīng)的輸入符號集、狀態(tài)轉(zhuǎn)換函數(shù)列如下。
1)S0,空閑(FSA_DIC_IDLE):起始狀態(tài),指令執(zhí)行超時或指令已執(zhí)行時轉(zhuǎn)入。所有信號均無效時轉(zhuǎn)入等待狀態(tài)。
2)S1,等待 (FSA_DIC_WAIT):等待控制指令。多個信號有效或單一信號有效但對應(yīng)指令已執(zhí)行時保持,檢測狀態(tài)信號異常時轉(zhuǎn)入。當(dāng)且僅當(dāng)出現(xiàn)一個未執(zhí)行的有效信號時轉(zhuǎn)入檢測狀態(tài)。
3)S2,檢測 (FSA_DIC_COUNT):檢測控制指令。在N次采樣期間某單一信號應(yīng)保持有效。信號異常轉(zhuǎn)入等待狀態(tài),重新檢測;正常則依次設(shè)置指令字、發(fā)信號激活對應(yīng)的發(fā)動機(jī)時序控制過程、轉(zhuǎn)入有效狀態(tài)。
4)S3,有效 (FSA_DIC_CAPTURED):指令就緒、等待執(zhí)行。檢測發(fā)動機(jī)時序控制過程發(fā)出的執(zhí)行信號并累計等待時間,若等待時間超出設(shè)定值則轉(zhuǎn)入超時狀態(tài),若信號檢測到則轉(zhuǎn)執(zhí)行狀態(tài)。
5)S4,執(zhí)行(FSA_DIC_HOLD):指令執(zhí)行中。檢測發(fā)動機(jī)時序控制過程發(fā)出的完成信號并累計等待時間,若等待時間超出設(shè)定值則轉(zhuǎn)超時狀態(tài),若信號檢測到則轉(zhuǎn)完成狀態(tài)。
6)S5,超時 (FSA_DIC_TIMEOUT):指令超時。直接轉(zhuǎn)空閑狀態(tài)。
7)S6,完成 (FSA_DIC_DONE),指令完成。屏蔽已執(zhí)行指令并轉(zhuǎn)空閑狀態(tài)。
基于有限狀態(tài)機(jī)的指令檢測過程參見圖1。
2.3.1 正常指令檢測
結(jié)合圖1,分析本方法是否能夠充分利用2.1所列5個信號特征:
1)在檢測狀態(tài)(S2),要求指令信號在N次采樣期間保持有效,滿足特征1);
2)在等待狀態(tài)(S1),當(dāng)且僅當(dāng)出現(xiàn)一個未執(zhí)行的有效信號時才能轉(zhuǎn)入檢測狀態(tài),而在檢測狀態(tài),采樣期間狀態(tài)變化即視為異常并轉(zhuǎn)入等待狀態(tài),滿足特征2);
3)在空閑狀態(tài)(S0,初始狀態(tài)),當(dāng)且僅當(dāng)所有信號均無效時轉(zhuǎn)入等待狀態(tài),啟動指令檢測狀態(tài)機(jī),且在等待狀態(tài)只能由單一、未執(zhí)行的有效信號觸發(fā)轉(zhuǎn)入檢測狀態(tài),滿足特征3);
4)在完成狀態(tài)(S6),屏蔽已執(zhí)行指令,滿足特征4);
5)狀態(tài)覆蓋了指令發(fā)出到執(zhí)行結(jié)束全過程,且一次只處理一個指令,滿足特征5)。
顯然,對于正常指令,本方法可以可靠識別并提交執(zhí)行。
2.3.2 異常信號處理
對于錯誤指令、干擾產(chǎn)生的偽指令、繼電器觸點(diǎn)失效產(chǎn)生的假指令等,本方法均能正確予以過濾,最大限度防止誤操作。
指令執(zhí)行期間(圖1中S3~S6)發(fā)出的指令、高電平持續(xù)時間小于采樣時間的指令視為錯誤指令,結(jié)合圖1分析可知,錯誤指令將被忽略。
對于指令信號線可能串入的干擾,由于必須符合2.1所列5個信號特征,故其被錯誤識別為正常指令的概率極低,可以忽略;同時,通過提高指令信號高電平持續(xù)時間(≮5s),當(dāng)某指令信號被干擾時,本方法可以在指令信號持續(xù)期間自動拋棄異常信號段,多次重新檢測,直至有效識別,可能導(dǎo)致延遲執(zhí)行,但極大地提高了執(zhí)行成功的概率;在某信號被檢測期間,若信號線出現(xiàn)異常,檢測過程將自動重新啟動,避免在存在干擾的條件下確認(rèn)指令有效,也進(jìn)一步提高了可靠性。
對于繼電器觸點(diǎn),若在檢測程序啟動前即已失效,當(dāng)失效造成某信號保持為低電平(無效)時該信號對應(yīng)指令亦將失效,保持為高電平時將導(dǎo)致所有指令失效。若在指令檢測過程中失效,視其發(fā)生在檢測的不同階段,將導(dǎo)致某指令或所有指令失效,在極端惡劣的情況下也可能不可避免地產(chǎn)生假指令,但這種情形出現(xiàn)的概率極低,可以忽略。
控制軟件是基于嵌入式實(shí)時操作系統(tǒng)設(shè)計的,采用C語言實(shí)現(xiàn)。為實(shí)現(xiàn)上述指令檢測算法,定義了狀態(tài)機(jī)、指令檢測任務(wù)、指令執(zhí)行任務(wù)、指令執(zhí)行信號量等。
狀態(tài)機(jī)定義如下:
指令檢測任務(wù)tskEngineSeqCmd為周期性任務(wù),執(zhí)行周期為7.5 ms,優(yōu)先級較高;指令執(zhí)行任務(wù)為tskEngineAct,優(yōu)先級較低。指令檢測任務(wù)結(jié)構(gòu)如下:
相關(guān)的信號量包括:
SEM_EngineSeqCmd:指令檢測任務(wù)在判明指令有效時提交,由指令執(zhí)行任務(wù)檢測;
SEM_EngineAct:指令執(zhí)行任務(wù)在指令執(zhí)行前提交,指令檢測任務(wù)在有效(FSA_DIC_CAPTURED)狀態(tài)檢測到后即轉(zhuǎn)入執(zhí)行(FSA_DIC_HOLD)狀態(tài);
SEM_SEM_EngineDone:指令執(zhí)行任務(wù)在指令執(zhí)行結(jié)束后提交,指令檢測任務(wù)在執(zhí)行(FSA_DIC_HOLD)狀態(tài)檢測到后即轉(zhuǎn)入完成(FSA_DIC_DONE)狀態(tài)。
構(gòu)造對應(yīng)每個狀態(tài)的switch語句,在每個分支中對相關(guān)狀態(tài)進(jìn)行判斷,執(zhí)行相應(yīng)動作并完成狀態(tài)轉(zhuǎn)換。
為檢驗(yàn)所提出的控制指令檢測方法,在單元測試、組裝測試、確認(rèn)測試及系統(tǒng)聯(lián)試各階段進(jìn)行了大量測試,方法得到了全面、充分的驗(yàn)證。
首先進(jìn)行指令檢測任務(wù)測試,以tskEngine-SeqCmd執(zhí)行周期的測試為重點(diǎn)。在任務(wù)執(zhí)行過程中插入數(shù)字量輸出指令,并采用記錄儀持續(xù)記錄分析輸出信號頻率,應(yīng)能觀測到穩(wěn)定的、周期為2×7.5 ms的方波。
其次進(jìn)行狀態(tài)機(jī)測試。對于每一個指令,構(gòu)造指令信號,覆蓋每一個狀態(tài),確認(rèn)狀態(tài)轉(zhuǎn)換、狀態(tài)處理過程無誤。為了驗(yàn)證對異常信號的處理能力,在FMEA分析基礎(chǔ)上,采用軟件構(gòu)造各種異常信號,通過指令模擬器發(fā)送執(zhí)行,檢查狀態(tài)機(jī)對應(yīng)的處理過程,將處理結(jié)果與預(yù)估結(jié)果比對確認(rèn)。
激活指令執(zhí)行任務(wù)tskEngineAct,重復(fù)上述狀態(tài)機(jī)測試過程。此階段重點(diǎn)是確認(rèn)指令檢測過程和指令執(zhí)行過程的協(xié)調(diào)性。
對于每一個控制指令,監(jiān)測指令執(zhí)行過程和結(jié)果,分析控制系統(tǒng)軟件發(fā)送的狀態(tài)監(jiān)測數(shù)據(jù),反復(fù)確認(rèn)指令檢測、執(zhí)行過程。
采用有限狀態(tài)機(jī)設(shè)計的指令信號檢測方法,能夠可靠識別控制指令,且能有效屏蔽錯誤指令、干擾產(chǎn)生的偽指令、繼電器觸點(diǎn)失效產(chǎn)生的假指令等,為提高發(fā)動機(jī)工作狀態(tài)控制的可靠性創(chuàng)造了條件。有限狀態(tài)機(jī)模型有助于解決復(fù)雜的實(shí)時性問題,值得推廣。
[1](印度)卡莫爾 R.陳曙暉等譯.嵌入式系統(tǒng)-體系結(jié)構(gòu)、編程與設(shè)計[M].北京:清華大學(xué)出版社,2005.
[2]王凌,宋揚(yáng),李國林,等.基于有限狀態(tài)機(jī)的飛行器自毀系統(tǒng)時序控制設(shè)計[J].現(xiàn)代電子技術(shù),2009(8):8-11.
[3]楊瑞霞.運(yùn)用狀態(tài)機(jī)提高嵌入式軟件效率[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用.2009(5):20-25.
[4]李凌鵬,孫文.有限狀態(tài)機(jī)在防空作戰(zhàn)仿真中的應(yīng)用[J].電光與控制,2005(5):80-82.
[5]周新蕾,劉正高.航天軟件可靠性安全性技術(shù)應(yīng)用發(fā)展趨勢[J].質(zhì)量與可靠性,2006(3):45-47,53.
[6]楊軍麗.星載設(shè)備嵌入式軟件可靠性仿真測試方法設(shè)計[D].北京:中國科學(xué)院研究生院空間科學(xué)與應(yīng)用研究中心,2007.
[7]CHAPMAN M.The final word on the 8051[M/OL].[2007-06-24].http://www.ebookee.net/The-Final-Word-on-the-8051.
[8]Texas Instruments.TMS320x281x DSP system control and interrupts reference guide[R].USA:Texas Instruments,2008.
[9]Texas Instruments.TMS320 DSP/BIOS user's guide[R].USA:Texas Instruments,2004.