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