,, ,
(1.中國海洋大學(xué) 信息科學(xué)與工程學(xué)院,山東 青島 266100;2.海軍航空大學(xué) 青島校區(qū)軍用虛擬仿真研究與訓(xùn)練中心,山東 青島 266041)
隨著現(xiàn)代電子技術(shù)和信息技術(shù)的飛速發(fā)展,現(xiàn)代作戰(zhàn)飛機智能化和信息化程度都非常高,而且以航空電子模塊化發(fā)展為機載現(xiàn)代裝備的發(fā)展趨勢,與此同時機載設(shè)備軟件化趨勢日趨明顯,F(xiàn)-22上由軟件實現(xiàn)的航電功能高達80%[1],在關(guān)系安全的核心系統(tǒng)中,如飛控計算機(FCC)的軟件代碼占整個源代碼的1/3[2]。模擬訓(xùn)練手段越來越成為國內(nèi)外軍事訓(xùn)練的主要手段之一,新型作戰(zhàn)飛機的列裝都需要研制配套的模擬訓(xùn)練器。因此,綜合現(xiàn)代飛機裝備發(fā)展趨勢和訓(xùn)練需求,在模擬訓(xùn)練開發(fā)過程中需要重點研究航空裝備的統(tǒng)一建模技術(shù),使航空裝備的仿真開發(fā)標(biāo)準(zhǔn)化,形成統(tǒng)一的模型抽象方法和交互方法,這樣有利于機載仿真設(shè)備跨平臺通用,也真正能夠?qū)崿F(xiàn)軟件模型的重構(gòu)[3-4],更能夠?qū)崿F(xiàn)型號設(shè)備仿真的繼承性和多態(tài)性。當(dāng)前,國外的統(tǒng)一建模仿真訓(xùn)練平臺,對傳感器模型做了很多限制,而且授權(quán)非常昂貴無法滿足國內(nèi)需求,但國內(nèi)還沒有專門針對航空裝備的統(tǒng)一建模仿真平臺,對模擬訓(xùn)練器的研制主要采取兩種方式,第一種是根據(jù)裝備的使用訓(xùn)練流程,建立比較全面的仿真操作邏輯,針對需要顯示的傳感器數(shù)據(jù)通過專門的算法進行仿真;第二種是將裝備分成幾個模塊或者系統(tǒng),然后根據(jù)劃分的特點和各個模塊的功能及指標(biāo),進行專門的建模。 這兩種方式導(dǎo)致仿真軟件的復(fù)用率較低,每次面對新型飛機模擬訓(xùn)練系統(tǒng)都要重新進行設(shè)計開發(fā),主要原因是航空裝備的仿真沒有實現(xiàn)標(biāo)準(zhǔn)化,尤其是同一類設(shè)備不同型號、不同類型設(shè)備之間沒有采用軟件設(shè)計模式[5-6],沒有建立標(biāo)準(zhǔn)化的統(tǒng)一建模仿真平臺。
本文提出了利用抽象工廠模式[7-8]建立仿真工廠模式架構(gòu),以仿真或訓(xùn)練任務(wù)配置為驅(qū)動,設(shè)計了工廠-實體-機載裝備三層仿真模式體系,可以根據(jù)XML[9]提供的任務(wù)配置,快速的完成工廠、飛機、裝備的仿真設(shè)計和開發(fā),通過實體抽象、機載裝備類型抽象、型號繼承抽象的技術(shù),實現(xiàn)從飛機到機載設(shè)備仿真開發(fā)的重構(gòu)技術(shù),避免了大量航空裝備的重復(fù)開發(fā)。
現(xiàn)代軍用飛機雖然有不同的型號,但是不同型號的飛機都有同類產(chǎn)品,如都有火控雷達、慣導(dǎo)、大氣、飛控、羅盤、顯控、外掛物、任務(wù)機等[10-11],有些屬于同一廠商不同型號,有些屬于不同廠商,但同一類型產(chǎn)品的基本功能、狀態(tài)和控制是一樣的,因此基于設(shè)備的輸入輸出接口對同一類型產(chǎn)品進行抽象建立產(chǎn)品類型生產(chǎn)線,再在不同的產(chǎn)品生產(chǎn)線基礎(chǔ)上對不同類型產(chǎn)品類進行二次抽象,建立最初級的機載設(shè)備生產(chǎn)線。基于兩級類生產(chǎn)線可以快速的生產(chǎn)新舊型號的各種類型的設(shè)備和系統(tǒng),也可以快速地對原有仿真機型進行加裝新的仿真設(shè)備或者更換新的仿真設(shè)備。
機載設(shè)備及傳感器仿真基于仿總線接口進行充分的抽象后,采用抽象工廠方法模式,建立面向航空裝備的仿真工廠平臺simFactory,該仿真工廠屬于類創(chuàng)建型模式,在仿真工廠模式中,可以通過基類快速的創(chuàng)建新的產(chǎn)品或者基于產(chǎn)品資源類庫創(chuàng)建同一產(chǎn)品的不同型號,然后在產(chǎn)品內(nèi)部完成新增功能和特性。
航空裝備仿真包括飛機、機載裝備、導(dǎo)彈三大類型。
飛機和導(dǎo)彈定義為實體[12-13],文中統(tǒng)一稱為Entity,在對實體進行仿真建模時,需要完成實體內(nèi)部各種類型設(shè)備的仿真建模。
仿真工廠平臺在飛機仿真設(shè)計生產(chǎn)過程中,以實體為組成的基本單位,基本實體由顯示模型和算法模型組成,實體可以包含基本實體。
仿真設(shè)備是指機載設(shè)備或系統(tǒng),一般可以獨立地完成一些特定功能,是作為實體的一個部分,平臺中稱為仿真模型。從仿真模型的特點考慮,算法模型稱為SLC(系統(tǒng)邏輯組件)、顯示模型稱為DLC(顯示邏輯組件)。有些系統(tǒng)只有SLC,有些復(fù)雜的系統(tǒng)由SLC和DLC共同組成。
飛機的類型很多,包括戰(zhàn)斗機、運輸機、轟炸機、直升機、預(yù)警機等待,然而每種類型的飛機又分很多型號,如F15飛機、F16飛機等,有些型號的飛機又分很多小的型號,如F16A/F16B/F16C等。機載設(shè)備也存在種類多、型號多。在進行仿真設(shè)計時,需要提高設(shè)計的重構(gòu)性,降低設(shè)計的復(fù)雜度,因此需要進行抽象建模。
2.3.1 實體抽象建模
在進行實體抽象建模時,根據(jù)抽象工廠模式架構(gòu)進行設(shè)計,首先建立仿真實體接口類ISimEntity,然后基于接口類派生出實體類CSimEntity,在實體類模型的基礎(chǔ)上可以建立各型具體的實體對象。所以對實體進行科學(xué)的抽象數(shù)據(jù)描述也就實現(xiàn)了實體的抽象建模,實體模型包括通用控制模型和通用數(shù)據(jù)模型,如表1和表2。實體抽象數(shù)據(jù)模型如表3。
表1 抽象控制接口類
表2 模型抽象數(shù)據(jù)接口
表3 仿真實體抽象接口類
2.3.2 設(shè)備抽象建模
機載設(shè)備有同一功能類型的,也有非同類型的。但是從仿真工廠模式設(shè)計考慮,需要設(shè)計的抽象模型能夠適應(yīng)工廠模式下實體的集成和對實體內(nèi)部模型的管理。同時模型接口類也能泛化出模型類和設(shè)備類。表4設(shè)備模型抽象接口類。
設(shè)備模型繼承于抽象接口模型,對模型及其數(shù)據(jù)的操作以虛函數(shù)形式定義,對于模型的通用管理采用內(nèi)聯(lián)函數(shù)實現(xiàn)函數(shù)體,包括:刪除本模型、設(shè)置/獲取本模型輸入控制數(shù)據(jù)、設(shè)置/獲取本模型輸入仿真數(shù)據(jù)、設(shè)置模型基本配置。
表4 設(shè)備模型抽象接口類
仿真平臺(也稱裝備仿真工廠simFactory),主要實現(xiàn)仿真工廠實例的創(chuàng)建,通過仿真工廠實現(xiàn)各型仿真實體的創(chuàng)建、管理和運行,各型仿真設(shè)備和系統(tǒng)模型的創(chuàng)建、管理、調(diào)度和運行,并能夠建立實體庫和設(shè)備資源庫,根據(jù)實際裝備組成情況調(diào)用實體庫和資源庫,快速的完成新型實體的集成和仿真。從而該平臺既可以用于新型號飛行模擬器的研制開發(fā)、導(dǎo)彈武器的研制開發(fā),也可以用于現(xiàn)有型號飛機的設(shè)備加裝和改進后的仿真。
平臺總體功能包括:XML任務(wù)配置、建立工廠、實體仿真、模型仿真、集成調(diào)度、仿真管理等。功能模塊設(shè)計如圖2所示。
圖2 功能模塊設(shè)計
平臺基于配置項的模塊化設(shè)計,每個模塊是基于模型插件模版類進行開發(fā),開發(fā)完成的每個模型插件作為平臺的仿真資源庫,因此資源庫分為實體資源庫和模型資源庫。平臺根據(jù)任務(wù)配置文件調(diào)用相應(yīng)的實體資源庫,完成實體對象的創(chuàng)建,并建立實體容器列表用于實體對象的管理,實體對象根據(jù)任務(wù)配置文件在初始化過程中調(diào)用模型資源庫相應(yīng)的模型插件,完成模型對象的創(chuàng)建,同時建立模型容器列表對模型進行動態(tài)管理。建立模型與模型、模型與實體的數(shù)據(jù)傳輸關(guān)系和控制關(guān)系,實現(xiàn)實體和模型的裝配,至此實體創(chuàng)建完畢,啟動平臺仿真運行功能,實現(xiàn)實體-模型的更新、管理、調(diào)度。
實體由子實體和模型組成。模型也可以由多個模型組成。平臺提供的開發(fā)環(huán)境,包括:1)該平臺提供系統(tǒng)仿真模型的框架和抽象的數(shù)據(jù)接口類、控制接口類、顯示接口類; 2)該平臺提供基礎(chǔ)的API;3)該平臺提供仿真工廠抽象接口類、實體抽象接口類、模型抽象接口類; 4)仿真工廠既可以生產(chǎn)設(shè)備(系統(tǒng))模型、也可以生產(chǎn)實體模型(飛機、導(dǎo)彈)。 平臺類架構(gòu)如圖3所示。
圖3 工廠平臺類結(jié)構(gòu)
每個模型都必須添加屬于模型的接口控制變量和接口數(shù)據(jù)變量,并且唯一。每個模型都繼承了基礎(chǔ)公共處理函數(shù)、管理函數(shù)。工廠創(chuàng)建實體、添加實體,在運行過程中動態(tài)創(chuàng)建和銷毀實體(導(dǎo)彈),在工廠內(nèi)部管理實體,避免外部調(diào)用復(fù)雜化。工廠與外部通信接口包括網(wǎng)絡(luò)傳輸接口、視景顯示信息接口、硬件采集接口(適配器模式)、配置獲取接口、故障狀態(tài)接口、數(shù)據(jù)記錄接口等。模型之間的依賴關(guān)系,依據(jù)機載系統(tǒng)之間的關(guān)系進行交互。工廠既創(chuàng)建后臺系統(tǒng)仿真模型SLC,又創(chuàng)建前臺顯示模型DLC。
XML描述文件設(shè)計仿真工廠加工生成任務(wù),在工廠模式下形成的是“工廠-飛機-裝備模型”三層仿真模式體系,因此在XML描述驅(qū)動任務(wù)時需要體現(xiàn)出三級結(jié)構(gòu),如圖4。
圖4 驅(qū)動任務(wù)描述
在Mission中主要包括下列任務(wù)描述關(guān)鍵信息:
任務(wù)參數(shù):描述任務(wù)ID,任務(wù)類型,任務(wù)名稱
系統(tǒng)參數(shù):描述地形紋理,仿真時間,步長。
環(huán)境參數(shù):描述氣象參數(shù),大氣溫度,電磁參數(shù),紅外參數(shù)。
機場信息:描述機場位置,跑道參數(shù),返場參數(shù),壓強。
仿真實體:描述每個實體的參數(shù),并指定實體的描述文件,如Path=MissionDataJS_101.XML,表示101飛機描述文件。
如圖5,在飛機實體描述文件中,主要完成單個實體需要加載的任務(wù)和配套模型,在JS_101.XML飛機描述文件下,加載的模型包括飛行模型、大氣模型、導(dǎo)航模型等,也包括了模型運行需要的指標(biāo)參數(shù),實體屬性等。
圖5 實體任務(wù)描述
系統(tǒng)邏輯組件類SLC實現(xiàn)機載系統(tǒng)模型仿真,SLC模型具有統(tǒng)一的抽象接口類ISimModel和CSimModel基類,在“設(shè)備抽象建?!币呀?jīng)對SLC基本模型作了詳細闡述,這里重點闡述SLC模型之間的控制接口和數(shù)據(jù)接口的交互設(shè)計。
在SLC模型組件內(nèi)部定義本模型的控制接口和數(shù)據(jù)接口,以及需要交互的其他SLC模型接口。以慣導(dǎo)(INS)模型為例,在VC8環(huán)境下的數(shù)據(jù)接口和控制接口定義如下:
m_pINS->SetName("IINSInterface");
m_pINSControl->SetName("IINSControlInterface");
//慣導(dǎo)模型數(shù)據(jù)接口
m_pData=dynamic_cast
//慣導(dǎo)模型控制接口
m_pControl=dynamic_cast
SLC屬于某一實體,因此SLC模型之間的數(shù)據(jù)交互在實體內(nèi)完成,屬于實體內(nèi)模型之間數(shù)據(jù)交互。
定義SLC模型組件入口函數(shù)和訪問方式如下:
// CXSimEntity某型仿真實體類
extern "C" DLLEXPORT ISimEntity* CreateSimEntity()
{
return dynamic_cast
}
// CXModel某SLC模型仿真類
extern "C" DLLEXPORT ISimModel* CreateXModel()
{
return dynamic_cast
}
//模型組件訪問方式如下:
HINSTANCE h=LoadLibraryA(pszDll); //加載SLC組件
_mhInstance[pszDll]=h;
typedef ISimModel* (CALLBACK *CREATEMODELPROC)();
CREATEMODELPROC proc;
proc=reinterpret_cast
GetProcAddress(h,pFuncName));
建立仿真模型庫句柄動態(tài)存儲管理表,用于對SLC模型庫的加載和釋放進行動態(tài)管理,建立仿真模型指針容器,用于對實體需要的模型進行動態(tài)控制管理,對模型的數(shù)據(jù)進行交互訪問,如表5是定義的模型存儲容器,SLC模型的具體交互在實體基類CSimEntity中,通過周期遍歷pModel中存儲的所有模型,將每個模型輸出的仿真數(shù)據(jù)和控制數(shù)據(jù)發(fā)送給其他所有模型,由各自模型進行篩選取值,如圖6所示。
表5 SLC模型容器定義
圖6 SLC 功能流程圖
顯控仿真系統(tǒng)組件SLC接受其他SLC組件的狀態(tài)數(shù)據(jù)和傳感器數(shù)據(jù)、目標(biāo)數(shù)據(jù)、載機其他數(shù)據(jù)等,處理后適合MFD、HUD屏幕顯示。同時處理人機交互按鍵信息實現(xiàn)顯示畫面和菜單的控制,并將需要可視化顯示的數(shù)據(jù)作為顯示符號的驅(qū)動數(shù)據(jù),將顯示符號和數(shù)據(jù)轉(zhuǎn)換成指令幀。
顯示邏輯組件類DLC,接受顯控仿真系統(tǒng)組件SLC的繪圖指令幀,進行指令解碼,完成顯示畫面、符號的實時繪制和更新。
DLC模型的實現(xiàn)可以采用OpenGL底層[14]進行設(shè)計開發(fā),也可以借助專業(yè)的儀表開發(fā)工具,如GL Studio[15]和IData[16]等,從設(shè)計模式考慮,也為了便于平臺的整體設(shè)計、配置和獨立運行,采用OpenGL進行開發(fā)。優(yōu)點是更有力于利用此平臺提供的基類直接進行DLC的開發(fā)。
將DLC顯示的內(nèi)容進行分類、特征提取,再抽象成顯示數(shù)據(jù)模型。一般分為基本顯示符號:字符、線、圓弧、矩形、三角形、窗口;特殊顯示符號通過位圖實現(xiàn)。特征屬性一般分為:顏色、閃爍、線型、字體等。因此對基本顯示符號需要繼承抽象接口類IDrawMode實現(xiàn)CDrawMode類,在該類中完成基本符號的繪制函數(shù)、特征設(shè)置函數(shù)。在設(shè)計開發(fā)實際DLC應(yīng)用時,基于CDrawMode派生出需要的顯示組件就可以快速的完成顯示設(shè)備的開發(fā)。DLC類設(shè)計如圖7所示,調(diào)用流程如圖8所示。
圖7 DLC類設(shè)計圖
圖8 DLC流程圖
CGLHZFontClass和CGLENFontClass字符處理類提供字符處理和顯示的函數(shù),封裝了OpenGL函數(shù)通過HBITMAP、HFONT、HDC完成中英文字符的處理和顯示。CBaseDrawIMG基礎(chǔ)繪圖類調(diào)用OpenGL底層函數(shù)實現(xiàn)所有顯示符號、圖形特征的設(shè)置、繪制、控制顯示。CDrawMode類中定義了字符類對象和基礎(chǔ)繪圖類對象、畫面繪制函數(shù)和窗口繪制函數(shù),實現(xiàn)DLC的創(chuàng)建和顯示。
利用平臺提供的仿真任務(wù)配置模板,以某型固定翼戰(zhàn)機J-X和對手戰(zhàn)機F16為仿真對抗實體,設(shè)計任務(wù)配置文件和實體配置文件。其中任務(wù)文件和實體文件效果如圖4和圖5,文件的主要配置項數(shù)據(jù)如表6和表7。利用simFactory平臺建立仿真工廠實體,根據(jù)實體配置文件利用simFactory提供的SLC SDK和DLC SDK完成機載模型的快速開發(fā)。最后由仿真工廠完成每個實體所有模型的交互。
表6 開發(fā)任務(wù)配置
表7 實體任務(wù)數(shù)據(jù)表
仿真應(yīng)用運行在處理器Intel(R) Core(TM) i7-6700HQ CPU@2.60 GHz、內(nèi)存16 G、GeForce 940MX環(huán)境下,機載系統(tǒng)顯示效果如圖9所示,HUD和MFD在SLC、DLC模型驅(qū)動下實時顯示所有機載模型的數(shù)據(jù)。
圖9 機載系統(tǒng)顯示效果
以J-X戰(zhàn)機仿真模型和配套仿真儀表的實時交互數(shù)據(jù)為評價對象,如表8,在該應(yīng)用中測試了模型交互的最大實時數(shù)據(jù)量、單個數(shù)據(jù)傳輸?shù)淖畲笞止?jié)數(shù),及更新時間和交互時間,測試結(jié)果表明模型和儀表的更新周期和最大交互時間非常理想,也證明了該平臺具備復(fù)雜任務(wù)下航空裝備仿真實體的快速化、標(biāo)準(zhǔn)化開發(fā)。
表8 J-X實體-模型-變量仿真性能評價
本平臺不僅提供了實體仿真的系統(tǒng)架構(gòu)和仿真運行的管理調(diào)度,更重要的是提供了實體所有機載模型的抽象建模方法,使不同類型的模型在橫向之間可以擴展,相同類型不同型號的模型在縱向可以繼承,模型之間的交互數(shù)據(jù)實現(xiàn)了類型統(tǒng)一,由實體負責(zé)模型的裝配、交互和管理,工廠對象負責(zé)實體對象的產(chǎn)生和動態(tài)管理,抽象仿真工廠根據(jù)任務(wù)建立仿真訓(xùn)練應(yīng)用和仿真工廠對象,實現(xiàn)整個訓(xùn)練任務(wù)、對抗、環(huán)境的管理和導(dǎo)演。
實體和模型的開發(fā)以現(xiàn)有的基礎(chǔ)模型庫為基礎(chǔ),無需從新開始,因此平臺可以應(yīng)用于專業(yè)的設(shè)備建模人員進行機載模型的開發(fā),提供了裝空裝備仿真開發(fā)的效率,使各類型、各等級的航空裝備實現(xiàn)了標(biāo)準(zhǔn)化仿真。