陶金偉,車 鑫,陳海泉
(中國航發(fā)商用航空發(fā)動機有限責任公司, 上海 200241)
仿真技術由于其天生的優(yōu)勢, 在數(shù)控系統(tǒng)的研制過程中,已成為重要工具和手段, 由于實際發(fā)動機數(shù)控試車投入高、風險大,因此在數(shù)控系統(tǒng)裝機之前, 需進行一系列仿真試驗, 其中主要包括控制系統(tǒng)數(shù)字仿真、硬件在回路仿真、半物理仿真等環(huán)節(jié), 各個環(huán)節(jié)相輔相成, 但功能、仿真回路、仿真目的不盡相同[2]。
構建發(fā)動機控制系統(tǒng)全數(shù)字仿真平臺不僅可以在發(fā)動機研制的初期起到控制系統(tǒng)需求確認的作用,也可以在研制后期作為驗證平臺對需求進行驗證;仿真平臺主要目的是在研制前期盡可能多的發(fā)現(xiàn)軟件故障,由于軟件故障主要是在設計階段產(chǎn)生的一種軟件缺陷而造成的, 是在系統(tǒng)運行之前就已經(jīng)存在的[1],因此利用計算機仿真驗證平臺可以很快的發(fā)現(xiàn)并修正軟件錯誤,對比于實物驗證平臺,仿真平臺可以并行驗證,通常情況下能有效的提升效率。
控制軟件作為發(fā)動機控制邏輯和故障檢測和保護邏輯的實現(xiàn)載體,通常在整體發(fā)動機研制的后期才能得到充分的驗證,且常常受制于硬件研制的進度滯后以及硬件研制數(shù)量限制的影響,而導致控制軟件的研制進度落后于其他部件。因此,在發(fā)動機性能、部件和附件等仿真模型已具備的前提下,建立發(fā)動機全數(shù)字仿真平臺是解決上述問題的有效方法。而控制軟件不受環(huán)境影響的特點,使得其具備了在仿真環(huán)境下就可以完成驗證的可能。
目前,商用的大涵道比渦扇發(fā)動機一般采用全權限數(shù)字電子控制(FADEC)技術。電子控制器(electronic engine control,EEC)是整個控制系統(tǒng)的核心,具有強大的數(shù)字計算能力和數(shù)據(jù)處理能力,從而能完成更加先進、復雜的控制[3]。EEC接收來自飛機的指令,采集發(fā)動機溫度、壓力、轉(zhuǎn)速以及作動部件位置等參數(shù),實現(xiàn)發(fā)動機在所有使用條件下的穩(wěn)態(tài)、過渡態(tài)、起動、點火、反推的控制功能和限制保護(包括參數(shù)限制和極限保護)功能,保證發(fā)動機在飛行包線內(nèi)不出現(xiàn)超溫、超轉(zhuǎn)、超壓、失速及喘振等現(xiàn)象,允許飛行員無約束操作而發(fā)動機不出現(xiàn)異?,F(xiàn)象和破壞性故障。因此,在構建控制系統(tǒng)仿真平臺時,需要集成如飛機模型、發(fā)動機模型、燃油系統(tǒng)模型、傳感器模型、電子控制器硬件模型等仿真模塊,在此基礎上,集成操作系統(tǒng)構建控制軟件的開發(fā)平臺。具體的仿真平臺架構如圖1所示。
圖1 發(fā)動機全數(shù)字仿真架構
發(fā)動機控制軟件開發(fā)平臺構建的關鍵因素如下:
1)EEC仿真,即仿真硬件設計,EEC的仿真是構建閉環(huán)仿真平臺的關鍵,模擬電子硬件,控制軟件可以不經(jīng)修改直接運行,使得控制軟件是整個仿真系統(tǒng)中唯一的一個真件。
2)仿真系統(tǒng)集成,即軟件設計,調(diào)度各仿真部件和控制軟件以一定的周期和時序運行,以模擬真實情況下的并行運行。
EEC仿真主要基于風河公司的SIMICS平臺,在此基礎上開發(fā)處理器模型,存儲器模型,外設模型等構建硬件仿真,同時在該硬件上模擬操作系統(tǒng),共同構成EEC仿真平臺。
考慮到系統(tǒng)的可靠性和安全性設計,電子控制器EEC一般采用冗余設計的模式,由功能完全相同的雙通道構成,雙控制通道分為A、B兩個通道,其中一個作為主控通道,另一個作為熱備份通道,當主控通道發(fā)生故障時,可以進行平穩(wěn)切換至另一通道。EEC的兩個通道間通過數(shù)據(jù)總線進行數(shù)據(jù)交換,當主控通道的部分輸入信號發(fā)生故障時,即可通過數(shù)據(jù)總線獲取備份通道的數(shù)據(jù),借用備份通道的輸入信號進行系統(tǒng)重構。
Simics是一款高性能的計算機硬件模擬器,可以通過模擬不同硬件構建不同架構的計算機系統(tǒng)。Simics可以實現(xiàn)指令級別、處理器內(nèi)核處理器級別、硬件電路板級別等不同級別的模擬,同時還具有較高的性能[4]。Simics 為開發(fā)者提供了一個通用的框架,基于該框架集成處理器、存儲器、外設等構成硬件仿真,同時還可以支持固件、驅(qū)動程序和操作系統(tǒng)的開發(fā)等功能[5]。
Simics 的主要功能主要有如下幾方面:
1)提供目標指令集運行的平臺,Simics平臺提供驅(qū)動軟件目標指令集運行的能力,使得用戶可以在PC環(huán)境下,運行真實的軟件目標程序;
2)處理器仿真,Simics能仿真諸如ARM、PowerPc、X86等多種架構的CPU[6],并且可以在這些仿真硬件上運行多種實時嵌入式操作系統(tǒng),包括VxWorks、Linux等;
3)存儲器和外設的仿真,利用Simics提供的語言對硬件設備進行建模,建模的對象包括處理器、存儲器、外設、網(wǎng)絡通信等多種設備。具體SIMICS的架構及開發(fā)如圖2所示。
圖2 SIMICS架構[7]
綜上,Simics 主要用來虛擬特定的嵌入式硬件平臺來開發(fā)相應的軟件[8]。
發(fā)動機控制軟件從大的方面可分為應用軟件(AS)、操作軟件(OS)以及操作軟件與應用軟件的接口(ASOS接口),操作軟件直接與硬件交聯(lián),其功能主要是給應用軟件提供運行環(huán)境,如任務調(diào)度,通信等,其行為主要包括調(diào)度的策略,異常的處理等,不具有主動行為,只要將其提供服務的能力限制在一定的范圍內(nèi),不對整個系統(tǒng)的行為造成影響。因此,OS仍以仿真的形式提供。具體EEC軟硬件仿真架構如圖3所示。
圖3 EEC軟硬件仿真架構
在該仿真架構下,由于操作系統(tǒng)為仿真件,因此存儲器、IO、引導、驅(qū)動等的仿真不影響系統(tǒng)整體的仿真性能,所以,而處理器作為應用軟件運行的載體,其仿真程度直接影響應用軟件的行為,處理器仿真是該平臺實現(xiàn)的關鍵。
2.3.1 處理器仿真
基于仿真平臺的總體架構,該平臺并未針對驅(qū)動等的驗證,主要面向于為應用軟件的運行提供仿真平臺,因此,在處理器的仿真上,無需完全仿真真實的處理器,而只需要仿真其內(nèi)核即可,因此選取PowerPC處理器系列下的e500內(nèi)核,基于該內(nèi)核,模擬器寄存器的模型,指令集等,使得通過商用的編譯器編譯得到的目標碼能直接在仿真的處理器上運行。
按照PowerPC體系下的e500內(nèi)核實現(xiàn)寄存器模型,如通用寄存器,浮點寄存器,處理器控制寄存器,定時、中斷寄存器,SPRs、BTB、Cache控制、MMU、調(diào)試寄存器,SPE和SPE APU等。
按照PowerPC體系下的e500內(nèi)核實現(xiàn)指令集仿真,針對e500核的處理器架構,在X86計算機上,采用高級語言開發(fā)實現(xiàn)PowerPC指令[9],主要涉及如整數(shù)運算指令,浮點指令,存取操作指令,流程控制指令,處理器控制指令,同步指令,信號處理指令等的仿真。
由于是在X86平臺下的PC機中進行仿真,因此在執(zhí)行指令時,需要通過解釋執(zhí)行或者動態(tài)翻譯的方法將PowerPC的指令轉(zhuǎn)換為X86的指令;ISS 的基本仿真策略分為解釋型和編譯型兩種[10],解釋型指令集仿真策略,為CPU指令系統(tǒng)中每一條指令編寫對應的函數(shù)來解釋執(zhí)行,執(zhí)行這兩種方法在運行效率上均不高,因此,在實際運行時,采用編譯型策略加上一定的緩存技術,以提高指令運行的效率。
2.3.2 與真實硬件的差異
在寄存器與指令集本身的模擬上,除了部分特殊的SPE指令和Cache相關指令未實現(xiàn)外,其余均于真實處理器一致。
在指令的處理方面,由于真實的處理器存在流水線等架構,而仿真時并為考慮,如指令預取、譯碼、執(zhí)行、寫回等。
以上差異均與軟件運行的效率,即運行時間相關,而在仿真運行時,由于并不實時,更多的考慮是在正常情況下完成功能,同時能通過故障注入的方式完成軟件錯誤處理邏輯的驗證;因此在軟件設計時,可通過時間分區(qū)的調(diào)度設計、WCET分析和驗證、故障模式分析及超時故障策略設計與驗證等消除仿真平臺與真實平臺差異帶來的影響,使得在仿真環(huán)境與真實處理器環(huán)境下,軟件的行為(如調(diào)度順序、通信方式)等,是一致的。
系統(tǒng)軟件集成的主要目的是驅(qū)動各個模型以特定的頻率運轉(zhuǎn)起來,并相互交聯(lián)完成系統(tǒng)的功能,因此在構建數(shù)字仿真平臺時,軟件集成工作主要關注點如下:
1) 模型以何種方式交聯(lián)?
2) 模型以何種頻率運行、運行的順序如何、模塊之間如何協(xié)同工作?
就以上兩個問題,分別以軟件架構以及同步設計兩個方面進行介紹。
圖4 軟件架構圖
總線結構的出現(xiàn)大大促進了計算機的發(fā)展??偩€結構使計算機能夠方便的組件化,設備接入總線,從總線上獲取設備所需要的輸入,通過總線發(fā)送處理后的輸出。采用基于總線的思想,將總線結構引入軟件中,協(xié)同仿真總線提供了基本的數(shù)據(jù)讀寫操作,從而滿足各個模塊之間的互聯(lián)互通。
通過用例模擬飛行包線,驅(qū)動飛機模型和發(fā)動機模型,控制發(fā)動機進入各個狀態(tài),從而達到發(fā)動機仿真的目的,同時,可以通過故障注入,模擬發(fā)動機不同飛行包線、不同狀態(tài)下的故障,從而完整的驗證FADEC的控制邏輯等。配合集成測試軟件完成部分相關的驗證活動,如測試覆蓋率獲取等。
仿真平臺區(qū)別于真實平臺,其時間特性是相對的,因此在仿真頻率的選取上,將發(fā)動機對于控制的最大頻率的要求進行歸一化,通過量化的頻率作為分辨率進行控制時序的設計,因此,在運行效率上,仿真的效率是應該高于真實硬件的。
同步運行是仿真平臺運行正常的關鍵,如果各個模塊之間運行不同步,將造成各模型之間信號的傳遞出現(xiàn)延遲,從而造成整個系統(tǒng)功能喪失。最簡便的同步方法是將所有的模型通過軟件的方式集成編譯至一個鏡像內(nèi)運行,但由于發(fā)動機模型等仿真模型集成方法的各不相同,該方法并不適用。只能采用類似分布式仿真的方法,各個模型獨立運行,通過通信的方法進行同步。
考慮到如上兩方面,本文設計的仿真運行環(huán)境主要有如下設計:
1) 單個模型異步運行,運行的時鐘由協(xié)同仿真總線提供。
2) 協(xié)同仿真總線提供統(tǒng)一的仿真運行時鐘,時鐘的頻率為系統(tǒng)控制要求頻率的最大公倍數(shù)。該時鐘為非周期時鐘,需要等到所有的模型在單個仿真步長內(nèi)完成所有工作后,才開始下一個仿真周期。
3) 對于多任務的模型,由模型內(nèi)部自行調(diào)度,如EEC仿真模型,其運行時序由OS進行調(diào)度,其調(diào)度順序應與目標平臺一致。
如圖5所示,由于并未采用絕對時間仿真,因此每一個仿真周期不相等,即達到了仿真同步的效果,又不影響模塊的邏輯順序,缺點周期內(nèi)任務肯定能運行完成,所以無法模擬在單個周期內(nèi)任務運行超時的故障,但是該故障可以通過其他方法模擬,如直接注入等。
圖5 同步調(diào)度圖
為驗證仿真平臺的正確性,設計如下的用例:上電運行,待所有模塊同步運行后,通過用例注入一個飛行循環(huán),驗證控制發(fā)動機在各個狀態(tài)下的功能,具體如表1所示。
表1 用例說明
測試執(zhí)行方法及預期輸出:在基于SIMICS的仿真平臺、真實硬件平臺中,分別運行上述用例,得到結果,并比對兩種平臺運行的結果是否正確且一致。
在SIMICS平臺執(zhí)行用例,將結果與真實硬件平臺的結果進行對比,對比發(fā)動機狀態(tài)從巡航狀態(tài)->最大巡航狀態(tài)->爬升狀態(tài)轉(zhuǎn)換的過程數(shù)據(jù),如圖6所示。
圖6 測試結果及比對
可以觀察到:
1) 對SIMICS平臺的仿真結果分析,輸出的發(fā)動機狀態(tài)切換符合預期期望,高壓轉(zhuǎn)子轉(zhuǎn)速和低壓轉(zhuǎn)子轉(zhuǎn)速變化趨勢滿足發(fā)動機的控制要求,SIMICS仿真平臺上用例運行結果正確。
2) 除在信號精度等方面存在差異外,在SIMICS平臺和真實硬件平臺上執(zhí)行結果與SIMICS仿真平臺執(zhí)行結果基本保持一致。
基于以上的論述,以處理器仿真為核心,構建發(fā)動機控制軟件與發(fā)動機模型的閉環(huán)仿真系統(tǒng),能有效的進行控制系統(tǒng)控制邏輯的驗證,同時減小PC機環(huán)境與真實目標環(huán)境的差異,可以作為發(fā)動機研制過程中,控制軟件的開發(fā)與驗證平臺。
在驗證方面,對仿真平臺的正常功能進行了驗證,但對于異常處理,如各類系統(tǒng)故障、硬件故障、隨機瞬時故障(如由電磁干擾、粒子輻射等原因引起的短暫功能失效,并且是一次有效性[11])等,未進行詳細的論述。以該平臺為基礎,模擬硬件和系統(tǒng)故障注入,發(fā)現(xiàn)更多的軟件故障將是下一步的工作。