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