陶金偉,車 鑫,陳海泉
(中國航發商用航空發動機有限責任公司, 上海 200241)
仿真技術由于其天生的優勢, 在數控系統的研制過程中,已成為重要工具和手段, 由于實際發動機數控試車投入高、風險大,因此在數控系統裝機之前, 需進行一系列仿真試驗, 其中主要包括控制系統數字仿真、硬件在回路仿真、半物理仿真等環節, 各個環節相輔相成, 但功能、仿真回路、仿真目的不盡相同[2]。
構建發動機控制系統全數字仿真平臺不僅可以在發動機研制的初期起到控制系統需求確認的作用,也可以在研制后期作為驗證平臺對需求進行驗證;仿真平臺主要目的是在研制前期盡可能多的發現軟件故障,由于軟件故障主要是在設計階段產生的一種軟件缺陷而造成的, 是在系統運行之前就已經存在的[1],因此利用計算機仿真驗證平臺可以很快的發現并修正軟件錯誤,對比于實物驗證平臺,仿真平臺可以并行驗證,通常情況下能有效的提升效率。
控制軟件作為發動機控制邏輯和故障檢測和保護邏輯的實現載體,通常在整體發動機研制的后期才能得到充分的驗證,且常常受制于硬件研制的進度滯后以及硬件研制數量限制的影響,而導致控制軟件的研制進度落后于其他部件。因此,在發動機性能、部件和附件等仿真模型已具備的前提下,建立發動機全數字仿真平臺是解決上述問題的有效方法。而控制軟件不受環境影響的特點,使得其具備了在仿真環境下就可以完成驗證的可能。
目前,商用的大涵道比渦扇發動機一般采用全權限數字電子控制(FADEC)技術。電子控制器(electronic engine control,EEC)是整個控制系統的核心,具有強大的數字計算能力和數據處理能力,從而能完成更加先進、復雜的控制[3]。EEC接收來自飛機的指令,采集發動機溫度、壓力、轉速以及作動部件位置等參數,實現發動機在所有使用條件下的穩態、過渡態、起動、點火、反推的控制功能和限制保護(包括參數限制和極限保護)功能,保證發動機在飛行包線內不出現超溫、超轉、超壓、失速及喘振等現象,允許飛行員無約束操作而發動機不出現異常現象和破壞性故障。因此,在構建控制系統仿真平臺時,需要集成如飛機模型、發動機模型、燃油系統模型、傳感器模型、電子控制器硬件模型等仿真模塊,在此基礎上,集成操作系統構建控制軟件的開發平臺。具體的仿真平臺架構如圖1所示。

圖1 發動機全數字仿真架構
發動機控制軟件開發平臺構建的關鍵因素如下:
1)EEC仿真,即仿真硬件設計,EEC的仿真是構建閉環仿真平臺的關鍵,模擬電子硬件,控制軟件可以不經修改直接運行,使得控制軟件是整個仿真系統中唯一的一個真件。
2)仿真系統集成,即軟件設計,調度各仿真部件和控制軟件以一定的周期和時序運行,以模擬真實情況下的并行運行。
EEC仿真主要基于風河公司的SIMICS平臺,在此基礎上開發處理器模型,存儲器模型,外設模型等構建硬件仿真,同時在該硬件上模擬操作系統,共同構成EEC仿真平臺。
考慮到系統的可靠性和安全性設計,電子控制器EEC一般采用冗余設計的模式,由功能完全相同的雙通道構成,雙控制通道分為A、B兩個通道,其中一個作為主控通道,另一個作為熱備份通道,當主控通道發生故障時,可以進行平穩切換至另一通道。EEC的兩個通道間通過數據總線進行數據交換,當主控通道的部分輸入信號發生故障時,即可通過數據總線獲取備份通道的數據,借用備份通道的輸入信號進行系統重構。
Simics是一款高性能的計算機硬件模擬器,可以通過模擬不同硬件構建不同架構的計算機系統。Simics可以實現指令級別、處理器內核處理器級別、硬件電路板級別等不同級別的模擬,同時還具有較高的性能[4]。Simics 為開發者提供了一個通用的框架,基于該框架集成處理器、存儲器、外設等構成硬件仿真,同時還可以支持固件、驅動程序和操作系統的開發等功能[5]。
Simics 的主要功能主要有如下幾方面:
1)提供目標指令集運行的平臺,Simics平臺提供驅動軟件目標指令集運行的能力,使得用戶可以在PC環境下,運行真實的軟件目標程序;
2)處理器仿真,Simics能仿真諸如ARM、PowerPc、X86等多種架構的CPU[6],并且可以在這些仿真硬件上運行多種實時嵌入式操作系統,包括VxWorks、Linux等;
3)存儲器和外設的仿真,利用Simics提供的語言對硬件設備進行建模,建模的對象包括處理器、存儲器、外設、網絡通信等多種設備。具體SIMICS的架構及開發如圖2所示。

圖2 SIMICS架構[7]
綜上,Simics 主要用來虛擬特定的嵌入式硬件平臺來開發相應的軟件[8]。
發動機控制軟件從大的方面可分為應用軟件(AS)、操作軟件(OS)以及操作軟件與應用軟件的接口(ASOS接口),操作軟件直接與硬件交聯,其功能主要是給應用軟件提供運行環境,如任務調度,通信等,其行為主要包括調度的策略,異常的處理等,不具有主動行為,只要將其提供服務的能力限制在一定的范圍內,不對整個系統的行為造成影響。因此,OS仍以仿真的形式提供。具體EEC軟硬件仿真架構如圖3所示。

圖3 EEC軟硬件仿真架構
在該仿真架構下,由于操作系統為仿真件,因此存儲器、IO、引導、驅動等的仿真不影響系統整體的仿真性能,所以,而處理器作為應用軟件運行的載體,其仿真程度直接影響應用軟件的行為,處理器仿真是該平臺實現的關鍵。
2.3.1 處理器仿真
基于仿真平臺的總體架構,該平臺并未針對驅動等的驗證,主要面向于為應用軟件的運行提供仿真平臺,因此,在處理器的仿真上,無需完全仿真真實的處理器,而只需要仿真其內核即可,因此選取PowerPC處理器系列下的e500內核,基于該內核,模擬器寄存器的模型,指令集等,使得通過商用的編譯器編譯得到的目標碼能直接在仿真的處理器上運行。
按照PowerPC體系下的e500內核實現寄存器模型,如通用寄存器,浮點寄存器,處理器控制寄存器,定時、中斷寄存器,SPRs、BTB、Cache控制、MMU、調試寄存器,SPE和SPE APU等。
按照PowerPC體系下的e500內核實現指令集仿真,針對e500核的處理器架構,在X86計算機上,采用高級語言開發實現PowerPC指令[9],主要涉及如整數運算指令,浮點指令,存取操作指令,流程控制指令,處理器控制指令,同步指令,信號處理指令等的仿真。
由于是在X86平臺下的PC機中進行仿真,因此在執行指令時,需要通過解釋執行或者動態翻譯的方法將PowerPC的指令轉換為X86的指令;ISS 的基本仿真策略分為解釋型和編譯型兩種[10],解釋型指令集仿真策略,為CPU指令系統中每一條指令編寫對應的函數來解釋執行,執行這兩種方法在運行效率上均不高,因此,在實際運行時,采用編譯型策略加上一定的緩存技術,以提高指令運行的效率。
2.3.2 與真實硬件的差異
在寄存器與指令集本身的模擬上,除了部分特殊的SPE指令和Cache相關指令未實現外,其余均于真實處理器一致。
在指令的處理方面,由于真實的處理器存在流水線等架構,而仿真時并為考慮,如指令預取、譯碼、執行、寫回等。
以上差異均與軟件運行的效率,即運行時間相關,而在仿真運行時,由于并不實時,更多的考慮是在正常情況下完成功能,同時能通過故障注入的方式完成軟件錯誤處理邏輯的驗證;因此在軟件設計時,可通過時間分區的調度設計、WCET分析和驗證、故障模式分析及超時故障策略設計與驗證等消除仿真平臺與真實平臺差異帶來的影響,使得在仿真環境與真實處理器環境下,軟件的行為(如調度順序、通信方式)等,是一致的。
系統軟件集成的主要目的是驅動各個模型以特定的頻率運轉起來,并相互交聯完成系統的功能,因此在構建數字仿真平臺時,軟件集成工作主要關注點如下:
1) 模型以何種方式交聯?
2) 模型以何種頻率運行、運行的順序如何、模塊之間如何協同工作?
就以上兩個問題,分別以軟件架構以及同步設計兩個方面進行介紹。

圖4 軟件架構圖
總線結構的出現大大促進了計算機的發展。總線結構使計算機能夠方便的組件化,設備接入總線,從總線上獲取設備所需要的輸入,通過總線發送處理后的輸出。采用基于總線的思想,將總線結構引入軟件中,協同仿真總線提供了基本的數據讀寫操作,從而滿足各個模塊之間的互聯互通。
通過用例模擬飛行包線,驅動飛機模型和發動機模型,控制發動機進入各個狀態,從而達到發動機仿真的目的,同時,可以通過故障注入,模擬發動機不同飛行包線、不同狀態下的故障,從而完整的驗證FADEC的控制邏輯等。配合集成測試軟件完成部分相關的驗證活動,如測試覆蓋率獲取等。
仿真平臺區別于真實平臺,其時間特性是相對的,因此在仿真頻率的選取上,將發動機對于控制的最大頻率的要求進行歸一化,通過量化的頻率作為分辨率進行控制時序的設計,因此,在運行效率上,仿真的效率是應該高于真實硬件的。
同步運行是仿真平臺運行正常的關鍵,如果各個模塊之間運行不同步,將造成各模型之間信號的傳遞出現延遲,從而造成整個系統功能喪失。最簡便的同步方法是將所有的模型通過軟件的方式集成編譯至一個鏡像內運行,但由于發動機模型等仿真模型集成方法的各不相同,該方法并不適用。只能采用類似分布式仿真的方法,各個模型獨立運行,通過通信的方法進行同步。
考慮到如上兩方面,本文設計的仿真運行環境主要有如下設計:
1) 單個模型異步運行,運行的時鐘由協同仿真總線提供。
2) 協同仿真總線提供統一的仿真運行時鐘,時鐘的頻率為系統控制要求頻率的最大公倍數。該時鐘為非周期時鐘,需要等到所有的模型在單個仿真步長內完成所有工作后,才開始下一個仿真周期。
3) 對于多任務的模型,由模型內部自行調度,如EEC仿真模型,其運行時序由OS進行調度,其調度順序應與目標平臺一致。
如圖5所示,由于并未采用絕對時間仿真,因此每一個仿真周期不相等,即達到了仿真同步的效果,又不影響模塊的邏輯順序,缺點周期內任務肯定能運行完成,所以無法模擬在單個周期內任務運行超時的故障,但是該故障可以通過其他方法模擬,如直接注入等。

圖5 同步調度圖
為驗證仿真平臺的正確性,設計如下的用例:上電運行,待所有模塊同步運行后,通過用例注入一個飛行循環,驗證控制發動機在各個狀態下的功能,具體如表1所示。

表1 用例說明
測試執行方法及預期輸出:在基于SIMICS的仿真平臺、真實硬件平臺中,分別運行上述用例,得到結果,并比對兩種平臺運行的結果是否正確且一致。
在SIMICS平臺執行用例,將結果與真實硬件平臺的結果進行對比,對比發動機狀態從巡航狀態->最大巡航狀態->爬升狀態轉換的過程數據,如圖6所示。

圖6 測試結果及比對
可以觀察到:
1) 對SIMICS平臺的仿真結果分析,輸出的發動機狀態切換符合預期期望,高壓轉子轉速和低壓轉子轉速變化趨勢滿足發動機的控制要求,SIMICS仿真平臺上用例運行結果正確。
2) 除在信號精度等方面存在差異外,在SIMICS平臺和真實硬件平臺上執行結果與SIMICS仿真平臺執行結果基本保持一致。
基于以上的論述,以處理器仿真為核心,構建發動機控制軟件與發動機模型的閉環仿真系統,能有效的進行控制系統控制邏輯的驗證,同時減小PC機環境與真實目標環境的差異,可以作為發動機研制過程中,控制軟件的開發與驗證平臺。
在驗證方面,對仿真平臺的正常功能進行了驗證,但對于異常處理,如各類系統故障、硬件故障、隨機瞬時故障(如由電磁干擾、粒子輻射等原因引起的短暫功能失效,并且是一次有效性[11])等,未進行詳細的論述。以該平臺為基礎,模擬硬件和系統故障注入,發現更多的軟件故障將是下一步的工作。