張劍鋒,程雪梅
(西北工業大學第365研究所,西安 710065)
隨著無人機功能越來越復雜,無人機的成本也越來越高,對于高性能高成本的無人機系統來說,如何降低飛行試驗的風險是重中之重。和航模不同,無人機的安全性不應該在高風險的飛行試驗中完善,這就必須依賴于充分的地面驗證,目前,無人機地面驗證手段主要包括開環測試和閉環半物理仿真。無人機飛控系統半物理仿真技術已經比較成熟[1-2],但大多數主要用于實驗室環境下對飛行控制律及飛控計算機的正確性進行仿真測試。
文中所介紹的無人機系統綜合仿真方法能夠對飛控系統、航電設備、地面站、數據鏈、機載供電、遙控設備、飛行控制與導航算法等形成大的閉環進行仿真驗證。基于完整的風洞試驗數據,在綜合仿真試驗中,無人機的氣動特性和實際飛行時基本一致,從而使得使用人員不但可以對閉環在內的各個設備軟硬件的正確性、可靠性以及系統集成后的兼容性、穩定性等進行地面驗證,同時還能夠對飛行過程進行高逼真度的模擬訓練,從而有效降低項目研制風險、縮短研制周期。
無人機綜合仿真的一般過程如圖1所示。
高置信度的仿真系統是地面驗證試驗成功的前提。圖1表述了綜合仿真的一般過程,對于每一步驟來說,VV&A (verification, validation and accreditation) 都應該全部完成[3],以期得到高置信度的仿真系統。
綜合仿真框圖見圖2。其中地面控制站、地面數據鏈、機載數據鏈、機載電源、飛控計算機(含飛控與導航算法)、舵機等是仿真驗證的實物對象,仿真計算機是仿真設備。

圖1 綜合仿真的一般過程

圖2 無人機系統綜合仿真框圖
綜合仿真時,地面控制站把控制指令通過數據鏈發送給飛控計算機,飛控計算機根據收到的指令和當前的飛行參數進行控制律和導航算法的解算,把計算后的控制量輸出給舵機驅動舵面,仿真計算機內部是基于風洞試驗數據構建的飛機模型,根據采集到的舵機反饋量進行飛機運動學方程的解算,并把解算得到的飛行參數按照實際傳感器的數據格式打包發送給飛控計算機,后者再根據飛行參數和地面發送的控制指令進行控制律解算,如此就形成了完整的無人機大系統閉環仿真。仿真計算機的飛機模型是基于風洞試驗數據開發,其特性和實際飛行中無人機特性基本一致,因此綜合仿真使得參與的實物設備在地面就能夠完成高置信度的全面驗證。
仿真計算機主要包括仿真主機和實時仿真機。仿真主機用于構建并下載無人機六自由度仿真模型、數據分析處理等,實時仿真機用于實時解算無人機模型、采集舵機反饋數據、向飛控計算機發送無人機姿態、高度、空速等飛行參數。
本項目的仿真對象為某外貿型固定翼無人機,其巡航速度約為130 km/h,巡航高度約為3 000 m。根據仿真對象的特性,一臺普通中端筆記本電腦即可滿足仿真主機的需求。實時仿真計算機需要進行硬件信號的采集與處理,因此選用一臺具備兩個ISA插槽和2個PCI插槽的工控機。
就該仿真對象來說,需要采集的舵機反饋量為6路電壓信號,包括升降舵、左副翼、右副翼、左方向舵、右方向舵以及油門舵機。選取研華的PCL-818AD采集卡進行舵機反饋信號的采集,該板卡具有16路單端采集通道,且在MATLAB的RTW支持列表中,無需另行開發驅動程序。
需要實時仿真機模擬的傳感器包括垂直陀螺、角速度陀螺、高度/空速傳感器、GPS信號、無線電高度表,這些信號包括串口和電壓量。選擇具有8路電壓信號輸出且在MATLAB支持列表中的PCI-1723板卡進行電壓信號的輸出。串口輸出板卡選用了Moxa的C168H,該擴展板卡具有8路RS232串口輸出。
為了保證仿真的實時性,仿真模型需要在實時系統下運行,此處選用MATLAB的xPC Target,該應用是MATLAB推出的實時系統解決方案,使用主機/目標機模式,編程以S函數的形式在主機上開發,編程語言為C語言[4]。開發好的模型可以直接編譯為可執行代碼下載到目標機中實時運行。
仿真電纜用于連接仿真系統和實物系統,信號流程見圖3。串口信號通過仿真機的串口卡輸出給飛控計算機,這些信號包括航向角、三軸角速率、GPS信號和無線電高度信號等。電壓信號通過仿真機的AD、DA卡進行采集或發送,這些信號包括俯仰角、滾轉角信號的模擬輸出,舵機反饋信號的采集等。

圖3 仿真信號流程示意
仿真模型包括無人機方程、氣動數據模塊、發動機模型、環境模型以及硬件接口模塊,如圖4所示。

圖4 仿真模型組成
無人機模型為六自由度方程,利用小擾動法可以得到描述飛機運動的六自由度動力學方程,經過線性化后得到飛機受擾運動的線性化狀態方程如下:

U=[δeδaδrδt]T
其中:A、B、C分別為狀態轉移矩陣、輸入控制矩陣和輸出控制矩陣;?、γ、ψ分別為俯仰角、傾斜角和航向角;u、v、w分別為前飛速度、側向速度和垂直速度;δe、δa、δr、δt分別是升降舵、副翼、方向舵和油門的操縱量。上述方程是標準的飛機六自由度方程[5],其系數矩陣根據風洞試驗數據計算得到。在SIMULINK工具箱里面把離散狀態方程模塊(Discrete State-Space)放置在仿真框圖中,其參數矩陣即為工作空間中的上述參數,這些值隨飛行狀態的變化而變化,當對某一特定的狀態,這些系數均為確定值。
氣動數據模塊用于計算無人機受到的力和力矩,其輸入為迎角、高度、速度、各個舵面控制量等,輸出為無人機受到的合力和合力矩,模塊內部是根據風洞試驗得到的氣動數據插值表。
發動機模型一般由發動機專業給出數據,通過插值表的形式根據油門大小計算出推力。
環境模塊主要是風干擾模型,可直接從MATLAB的Simulink中加載使用。
硬件接口模塊包括模擬量采集、模擬輸出和串口輸出,模擬量輸入和輸出模塊可以直接使用Simulink的RTW中封裝好的硬件通訊模塊,無需另行開發。串口輸出卡沒有在RTW的支持列表中,需要使用S函數開發驅動程序。MATLAB提供了標準的S函數模板,包括MdlStart、MdlOutputs、MdlUpdate等編程接口,在開發驅動時,在MdlStart模塊中初始化板卡,并在MdlOutputs進行串口輸出操作即可,在本項目中,可在MdlStart函數中加入如下程序對串口卡進行初始化。
C168H_Base =(short) (*param0);//得到基地址
C168H_Base =C168H_Base+8;//第2個串口
if (!C168H_Ini)
{
_outp(C168H_Base, 0x80); //寄存器訪問使能
_outp(C168H_Base, 0x60); //波特率設置為19200
_outp(C168H_Base +3, 0x03); //設置8數據位
_outp(C168H_Base +4, 0x04);
_outp(C168H_Base +1, 0); //中斷關閉
C168H_Ini =true;
}
可在S函數模板的MdlOutputs中添加如下代碼以完成串口輸出:
for(i=0;i // rs232buffo為輸出數組,C168H_Base為板卡基地址 { _outp(C168H_Base, rs232buffo[i]); // 按字節依次發數 while(!(_inp(C168H_Base+5)&0x20)); // 發送完畢判斷 } 為說明該綜合仿真方法的正確性,把該型無人機起飛過程[6]的綜合仿真和飛行試驗結果進行對比。在起飛過程中,該無人機的起飛爬升角度指令設置為11.6°,油門設置為最大值,飛機爬升到預定高度后自動切換為定高飛行。 圖5為俯仰角和迎角曲線的對比結果,由圖可以看出綜合仿真與實際飛行試驗結果是基本一致的,由于實際飛行中存在氣流擾動、傳感器信號測量誤差,實飛曲線不像仿真曲線那么平滑,此外,仿真用的氣動數據不可能和實際完全一致也導致穩定終值存在合理的差別。 文中針對某型固定翼無人機,提出了一種實用的綜合仿真方法,給出了總體方案設計、綜合仿真系統開發、信號連接過程與綜合仿真方法,并對實際飛行結果和綜合仿真結果進行了分析對比。從對比結果可知,該綜合仿真方法正確可行,仿真系統實現簡單,具有很高的置信度,能夠實現飛行試驗前對無人機大系統的閉環綜合仿真驗證,從而為定位系統問題以及系統改進優化提供有效手段。該綜合仿真方法和仿真平臺正在某外貿型無人機系統中使用,效果良好,后續只需對電纜進行適應性改造,即可推廣應用到其他多種型號的無人機項目。 圖5 仿真數據和飛行數據的對比3 仿真結果分析
4 結束語
