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