蔡偉健
(中國直升機(jī)設(shè)計(jì)研究所,江西 景德鎮(zhèn)333000)
直升機(jī)飛行模擬訓(xùn)練設(shè)備(FSTD)包括飛行模擬機(jī)(FFS)、飛行訓(xùn)練器(FTD)和綜合程序訓(xùn)練器(IPT)等。在飛行模擬訓(xùn)練設(shè)備的研制中,飛行仿真模型是其核心的組成部分,對(duì)模擬器的逼真度起到了關(guān)鍵作用。 在相關(guān)標(biāo)準(zhǔn)中,對(duì)模擬器的客觀測(cè)試大部分也都是針對(duì)飛行仿真模型的,主要包括飛行性能和飛行品質(zhì)兩大部分。
目前國內(nèi)外建立飛行仿真模型的方法基本上都是采用部件法分別建立旋翼、尾槳、機(jī)身、起落架等的部件模型,基于力學(xué)原理進(jìn)行物理建模。 完成基礎(chǔ)模型的構(gòu)建后, 根據(jù)試飛數(shù)據(jù)和飛行員主觀評(píng)估對(duì)模型進(jìn)行參數(shù)調(diào)整,反復(fù)迭代,最終達(dá)到滿足鑒定標(biāo)準(zhǔn)的相關(guān)要求。
國外已經(jīng)有很多用于直升機(jī)飛行仿真模型開發(fā)的軟 件 平 臺(tái), 包 括FLIGHTLAB[1]、GENHEL[2]、ARMCOP[3]等,在飛行力學(xué)模型、飛行控制系統(tǒng)、視景系統(tǒng)等方面都自成體系,甚至,有些直升機(jī)設(shè)計(jì)過程中所需完成的計(jì)算也可以通過這些軟件平臺(tái)來完成。 但所有的建模過程均需要在平臺(tái)規(guī)定的范圍內(nèi)完成,可做的核心部分調(diào)整非常有限,這對(duì)于建立功能完善的飛行模擬訓(xùn)練設(shè)備來說是一個(gè)很大的障礙。
借助于MATLAB/Simulink 平臺(tái),使用直升機(jī)空氣動(dòng)力學(xué)、飛行力學(xué)、渦輪軸發(fā)動(dòng)機(jī)、飛行控制技術(shù)等相關(guān)理論,也可以搭建直升機(jī)飛行動(dòng)力學(xué)模型、發(fā)動(dòng)機(jī)模型,飛控系統(tǒng)模型等。 其框圖式的用戶使用界面讓所要開發(fā)模型的構(gòu)建、修改、集成都變得很方便。 結(jié)合其RTW 工具,可以自動(dòng)生成實(shí)時(shí)仿真代碼,供仿真程序調(diào)用,與模擬器其他分系統(tǒng)進(jìn)行實(shí)時(shí)通訊,非常適合模擬器的飛行仿真軟件開發(fā)。
MATLAB 是美國MathWorks 公司出品的商業(yè)數(shù)學(xué)軟件,用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計(jì)算的高級(jí)技術(shù)計(jì)算語言和交互式環(huán)境,主要包括MATLAB 和Simulink 兩大部分。 Simulink 是一個(gè)基于MATLAB 平臺(tái)用來對(duì)動(dòng)態(tài)系統(tǒng)進(jìn)行建模、仿真和分析的面向結(jié)構(gòu)圖方式的仿真環(huán)境。[4]
用Simulink 所建立的模型,各個(gè)具體環(huán)節(jié)的動(dòng)態(tài)細(xì)節(jié)一目了然, 而且能清晰的了解各部件和子系統(tǒng)間的信息交換,掌握各部分之間的交互影響。 系統(tǒng)建模方法為自上而下(Top-down)的設(shè)計(jì)流程,先確定系統(tǒng)的原理基礎(chǔ)從而確定系統(tǒng)的功能,然后在Simulink 中使用相應(yīng)的部件建立不同功能的子系統(tǒng),從而構(gòu)成整個(gè)仿真模型。
更為重要的是,在Simulink 中集成了很多專業(yè)領(lǐng)域仿真模型包, 其中就包括了AeroSpace Blockset, 它提供了很多在氣動(dòng)建模方面非常實(shí)用的模塊,如六自由度運(yùn)動(dòng)方程、大氣環(huán)境、飛行參數(shù)計(jì)算、常用單位轉(zhuǎn)換等。
飛行仿真模型根據(jù)飛行仿真過程中直升機(jī)的當(dāng)前運(yùn)動(dòng)狀態(tài),以及飛行的操縱輸入,利用特定的算法和直升機(jī)的基本數(shù)據(jù),實(shí)時(shí)解算出旋翼、尾槳、機(jī)身、氣動(dòng)面以及起落架所產(chǎn)生的作用力, 使用六自由度運(yùn)動(dòng)方程,解算出直升機(jī)下一迭代步的飛行狀態(tài)。
其框圖組織形式如圖1 所示:
圖1 飛行仿真模型總體框圖
模型每個(gè)仿真周期運(yùn)行一次,解算出當(dāng)前的狀態(tài),并用于下一步解算。 每個(gè)仿真周期的運(yùn)行過程如下:
首先,接收外部輸入的操縱量送給控制系統(tǒng)和發(fā)動(dòng)機(jī)模塊,結(jié)合上一幀大氣環(huán)境模塊輸出的空速、姿態(tài)、角速度等信息,計(jì)算出主旋翼變距角、尾槳變距角以及發(fā)動(dòng)機(jī)輸出;然后,旋翼氣動(dòng)模塊、尾槳?dú)鈩?dòng)模塊、機(jī)身氣動(dòng)模塊、起落架動(dòng)力學(xué)模塊接收飛控系統(tǒng)模塊的變距角、姿態(tài)、角速度、空速、大氣密度等數(shù)據(jù)后,解算全機(jī)所受到的外部力和力矩;最后,通過六自由度運(yùn)動(dòng)模塊,計(jì)算出當(dāng)前幀的位置、速度、加速度、姿態(tài)、角速度、角加速度等數(shù)據(jù)輸出。
旋翼模型包括氣動(dòng)力模型、誘導(dǎo)速度模型和揮舞動(dòng)力學(xué)模型,其模型組織形式和對(duì)外數(shù)據(jù)交互如圖2 所示。
旋翼氣動(dòng)力模型采用葉素理論,根據(jù)旋翼揮舞運(yùn)動(dòng)狀態(tài)、變距角、槳盤處誘導(dǎo)速度等參數(shù),計(jì)算葉素受力,并對(duì)整片槳葉進(jìn)行積分得到合理。 具體計(jì)算公式及其推導(dǎo)過程在很多文獻(xiàn)中都有描述,這里不做贅述[5][6]。
誘導(dǎo)速度模型采用滑溜理論計(jì)算,它給出了槳盤平面的等效誘導(dǎo)速度值, 雖然無法精確計(jì)算沿半徑的誘導(dǎo)速度分布,但由于其計(jì)算過程耗時(shí)少,通過調(diào)參也可以達(dá)到比較準(zhǔn)確的結(jié)果,適合作為訓(xùn)練模擬器的入流模型。
揮舞動(dòng)力學(xué)模型采用準(zhǔn)靜態(tài)法[6],假設(shè)揮舞方程的解為一階諧波加穩(wěn)態(tài)項(xiàng)的形式, 帶入方程后得到3 個(gè)代數(shù)方程,從而得到可用于氣動(dòng)計(jì)算的旋翼揮舞運(yùn)動(dòng)信息。
圖2 旋翼模型框圖
尾槳的作用是抵抗旋翼反扭矩, 并控制直升機(jī)偏航操縱。 為簡(jiǎn)化尾槳?dú)鈩?dòng)力的計(jì)算,采用線性Bailey 模型[7],它是一個(gè)經(jīng)驗(yàn)?zāi)P?,只考慮尾槳的拉力分量,并與尾槳總距聯(lián)系,而不涉及揮舞運(yùn)動(dòng)等參數(shù)。
機(jī)身的空氣動(dòng)力計(jì)算非常復(fù)雜, 在工程上一般使用風(fēng)洞試驗(yàn)數(shù)據(jù),通過插值的方法得到不同迎角和側(cè)滑角的氣動(dòng)力系數(shù),再經(jīng)過換算得到作用到直升機(jī)重心的氣動(dòng)力。
平尾和垂尾作為機(jī)身的一部分在包含在其中,如果使用的吹風(fēng)數(shù)據(jù)包含這些氣動(dòng)面,則直接使用,如果不包含,或需要精確計(jì)算氣動(dòng)面的力,則可以單獨(dú)建立平尾和垂尾的氣動(dòng)模型。 后者還有一個(gè)優(yōu)勢(shì):可以將旋翼下洗流考慮在內(nèi),準(zhǔn)確模擬過渡速度等飛行狀態(tài)。
完成飛行仿真模型的構(gòu)建后,需要在Simulink 環(huán)境中對(duì)模型做一個(gè)初步驗(yàn)證。 包括三個(gè)方面。
一是單獨(dú)模塊測(cè)試,主要完成對(duì)各模塊和子模塊進(jìn)行功能性測(cè)試。 通過給定值的輸入或規(guī)律變化的曲線輸入,查看一定時(shí)間內(nèi)的模塊輸出結(jié)果,看是否滿足該模塊所需完成的功能。
二是采用數(shù)值輸入的辦法,通過MATLAB 腳本語言,給SIMULINK 框圖輸入數(shù)據(jù),查看相應(yīng)輸出數(shù)據(jù)或中間計(jì)算所產(chǎn)生的狀態(tài)參數(shù)變化曲線,進(jìn)行模型或模塊的測(cè)試。這種方法也是模型單獨(dú)調(diào)試和修正的主要方式, 通過設(shè)置SIMULINK 模型的配置參數(shù),使之可以從MATLAB 工作空間讀入輸入?yún)?shù)。 編寫相應(yīng)的腳本程序,使用合適的輸入數(shù)據(jù),觀察各參數(shù)曲線變化,對(duì)模型進(jìn)行相應(yīng)修正。
三是使用VR Sink 工具, 結(jié)合駕駛桿的輸入, 使用直觀的方式,進(jìn)行仿真模型的測(cè)試。 在基本完成模型的開發(fā)時(shí), 有時(shí)僅適用曲線和數(shù)值的測(cè)試還不夠直觀,這時(shí),可以使用VR Sink 模塊所提供的功能,結(jié)合使用游戲桿操縱, 真正在電腦上 “飛行”, 完成簡(jiǎn)單的主觀評(píng)估,如圖3 所示。 雖然這個(gè)簡(jiǎn)單的視景所構(gòu)建的模型不是直升機(jī)的,但能夠粗略地體現(xiàn)飛行過程中姿態(tài)和位置的變化,對(duì)模型的修改和改進(jìn)有很大幫助。
圖3 可視化測(cè)試
完成模型構(gòu)建和初步的測(cè)試后,使用RTW 工具生成C/C++源代碼。 在所生成的代碼中,可以在外部使用的數(shù)據(jù)和函數(shù)都包含在頭文件中,其中部分代碼如圖4下所示:
其中,HeliModel_P 結(jié)構(gòu)中包含模型運(yùn)行過程中所有的參數(shù), 在調(diào)試過程中可以對(duì)其中的數(shù)據(jù)進(jìn)行修改,也用于初始化數(shù)據(jù)的設(shè)置等。
HeliModel_U 結(jié)構(gòu)中包含模型的所有輸入數(shù)據(jù),在調(diào)用模型運(yùn)行函數(shù)前對(duì)其進(jìn)行賦值。
HeliModel_Y 結(jié)構(gòu)中包含模型的所有輸出數(shù)據(jù),在調(diào)用模型運(yùn)行函數(shù)后從其中得到模型運(yùn)算一步得到的結(jié)果。
HeliModel_initialize(void)函數(shù)用于模型代碼初始化。HeliModel_step(int_T tid)函數(shù)用于外部代碼調(diào)用,將模型代碼進(jìn)行一步迭代運(yùn)算。
HeliModel_terminate(void) 函數(shù)用于終止模型解算。其他代碼均為參與解算的部分,其計(jì)算結(jié)果與在SIMULINK 環(huán)境中的仿真結(jié)果相同,可以不用考慮。
圖4 生成的接口代碼
直升機(jī)模擬器是一個(gè)復(fù)雜的系統(tǒng),由不同的軟件和硬件組成,包括視景系統(tǒng)、運(yùn)動(dòng)系統(tǒng)、教員臺(tái)、操縱負(fù)荷、座艙設(shè)備、振動(dòng)系統(tǒng)、飛行仿真、航電仿真、聲音模擬等,各系統(tǒng)之間通過UDP 協(xié)議進(jìn)行數(shù)據(jù)交互,實(shí)時(shí)運(yùn)行。
以某型民用直升機(jī)模擬器的研制為背景,將上述方法開發(fā)的飛行仿真軟件集成到模擬器中,作為飛行狀態(tài)模擬的數(shù)據(jù)來源, 其逼真程度對(duì)飛行訓(xùn)練有重大影響,是評(píng)價(jià)訓(xùn)練設(shè)備是否達(dá)標(biāo)的重要標(biāo)準(zhǔn)。 飛行仿真模型聯(lián)入整個(gè)模擬器僅需要與主控軟件進(jìn)行數(shù)據(jù)通訊,在系統(tǒng)集成的過程中, 主要工作集中在對(duì)功能和性能的調(diào)試。經(jīng)過反復(fù)迭代修正,參數(shù)調(diào)整,功能優(yōu)化,完成仿真模型的最終確認(rèn)。
在模擬器教員臺(tái)上使用測(cè)試軟件按照CCAR-60部的相關(guān)要求對(duì)飛行仿真模型進(jìn)行客觀測(cè)試。
測(cè)試過程全自動(dòng)完成,根據(jù)試飛數(shù)據(jù)的相關(guān)參數(shù)完成模擬器的驅(qū)動(dòng)過程。 測(cè)試完成后,軟件自動(dòng)給出測(cè)試報(bào)告,同時(shí)繪制試飛數(shù)據(jù)曲線和模擬機(jī)上飛行曲線。下圖為起飛過程的測(cè)試結(jié)果圖:
圖5 測(cè)試曲結(jié)果示例
本文所描述的基于MATLAB/Simulink 進(jìn)行直升機(jī)飛行仿真模型的構(gòu)建方法,可以快速完成直升機(jī)模擬器的飛行仿真軟件開發(fā),不依賴國外專用軟件,具備自主知識(shí)產(chǎn)權(quán)。 并在模擬器上得到驗(yàn)證,進(jìn)行了相關(guān)的客觀測(cè)試,證明了其有效性和先進(jìn)性。