韓本剛,毛師彬
(南京模擬技術研究所, 南京 210016)
基于實時操作核的數字飛控計算機可以實現復雜的邏輯和功能處理,其具有集成度高、運算能力強、I/O接口豐富、擴展性好及通用性強等特點,得以廣泛應用。以數字飛控計算機為核心的飛行控制系統直接決定著無人機的飛行性能,為了確保無人機安全有效地完成預定飛行任務,對飛行控制系統進行半實物仿真測試,驗證其有效性是必要的。仿真平臺作為半實物仿真實現的必備環節,需要具備較好的實時性,一般采用專用的dSPACE實時系統仿真平臺,或者采用PC機+實時操作系統模式的仿真平臺,如采用Vxworks、Qnx等實時操作系統,這些仿真平臺性能好,廣泛應用于航空航天領域,但這些仿真平臺成本較高,對于飛行控制處理運算要求相對簡單的無人機,開發一套實用的、低成本的半物理仿真系統是必要的。文中給出了在PC/104嵌入式硬件架構下基于xPC目標[1](xPC Target)環境構建無人機半物理仿真系統的技術途徑,實現了將無人機Simulink仿真框圖直接轉化成C語言代碼并下載至硬件平臺中實時仿真。
半物理仿真是指硬件在回路的仿真,以某型無人機為例,其半實物仿真系統架構如圖1所示。

圖1 半實物仿真系統架構
該仿真系統主要由仿真機、地面站、控制臺、飛控計算機及舵系統(包括控制器及執行機構)等組成。其中,仿真機用以實現無人機六自由度運動方程的實時解算、模擬各種傳感器的接口特性,并模擬輸出無人機的飛行狀態信息;地面站與飛控計算機交互連接,用以實現無人機操縱飛行、實時監測無人機飛行狀態數據,并生成顯示無人機航跡;控制臺與仿真機交互連接,用以實現無人機仿真模型參數配置、數據記錄及仿真控制等操作;飛控計算機和舵系統均采用實物,飛控計算機是仿真測試及驗證的主要對象,而引入真實的舵系統可以使仿真結果更加逼真可信。
在上述半物理仿真系統具體開發過程中,仿真機選用了成熟的PC/104嵌入式硬件架構,具體由SBS公司PMI-10D型CPU板(主頻可達1 000 MHz)、DIAMOND公司DIAMOND-MM-16AT型數據采集板、EMERALD-MM-8型多串口板及JMM512-512型電源板等組成,也可根據實際需求擴展其他I/O模塊設備。該仿真機運行xPC目標的實時操作核并執行對象模型程序代碼,主要實現了無人機六自由度運動特性、傳感器及執行機構接口特性等模擬,其中通過A/D采集執行機構的位置信息,通過串口或D/A輸出無人機狀態數據。此外,仿真機與控制臺通過串口連接進行信息的交互,使目標應用程序脫離Matlab運行環境。
xPC目標作為Real-Time Workshop(RTW)體系結構的附加產品,可實現控制系統或DSP系統的快速原型化過程及硬件在回路仿真測試,其支持PCI和ISA兩種類型的I/O設備,能夠很便捷地構設嵌入式實時系統。xPC目標采用宿主機與目標機的“雙機”應用模式,其中宿主機用于運行Simulink,目標機用于執行所生成的目標代碼,雙機之間可選擇串口或以太網連接進行通信。具體使用過程中,首先在宿主機上利用Simulink設計好對象仿真模型框圖,之后通過 RTW將Simulink框圖模型轉化成C語言代碼(即目標應用程序)并下載到目標機上執行。xPC目標提供了一個可運行在目標機上的、高度減縮的實時操作核,用于任務的調度和管理,該實時操作核采用32位的內存管理模式,具有很高的執行效率。xPC目標實時操作核的采樣頻率最高可達100 MHz,能夠保證目標應用程序的實時執行,目標應用程序執行速度主要由對象模型復雜程度、程序代碼規模以及目標機硬件設備配置等因素決定。
本系統中無人機仿真模型是通過Simulink在宿主機上以框圖形式構建的,主要包括發動機推力計算模塊、執行機構位置換算模塊、無人機六自由度模型解算模塊、傳感器特性仿真模塊以及串口、A/D、D/A等I/O設備接口驅動模塊。其中,發動機推力計算模塊根據接收的發動機控制指令實現油門開度的模擬調節,并利用發動機高空臺試驗數據或地面開車試驗數據進行插值計算得出推力,發動機控制指令由地面站通過串口發出;執行機構位置換算模塊根據A/D通道采集的信息計算出各執行機構作動量;而無人機六自由度運動模型解算模塊以發動機計算模塊輸出的推力和執行機構位置換算輸出的作動量為輸入,進行無人機六自由度運動方程的實時解算,輸出無人機空間運動的位置、姿態、速度、角速度等信息;傳感器特性仿真模塊主要模擬傳感器動態特性和接口特性,傳感器動態特性通過實測數據進行系統辨識獲取并以傳遞函數形式表示,接口特性按照各傳感器接口形式和數據格式對應編碼實現,以數字信號(串口數據格式)或模擬信號(D/A)形式對外輸出。構建無人機Simulink模塊化仿真框圖后,這樣便可以通過RTW工具箱將其生成高度優化C語言代碼下載至運行xPC目標實時操作核的目標機上執行。仿真模型基本結構及Simulink仿真框圖如圖2和圖3所示。

圖2 仿真模型基本結構

圖3 無人機Simulink仿真框圖
Simulink雖然提供了大量的線性和非線性運算模塊,但當系統模型中包含過多的非線性或者用戶自定義的模塊時,使用Simulink提供的運算模塊構建模型會過于繁瑣。有必要采用Simulink提供的S函數(S-Function)進行自定義邏輯或運算功能模塊開發,S函數可選擇M語言或C/C++語言進行編碼,本仿真系統中選擇了C/C++語言混合編程的方式進行了自定義模塊開發,與Simulink自帶的運算模塊結合使用實現了全系統建模,特別是無人機六自由度運動特性、傳感器動態特性及執行機構動態特性等仿真模型均采用C/C++語言編程的S函數構建,傳感器動態特性Simulink仿真框圖如圖4所示。
另外,xPC目標模塊庫(xpclib庫)中提供了大量的I/O接口板卡驅動模塊,可直接調用對應通信接口板卡驅動模塊實現I/O接口的擴展。考慮該仿真機采用Diamond公司的多串口板和數據采集板,直接調用Diamond Emerald-MM8 Serial F和MM-16-AT驅動模塊配置后使用,當然也可以在xpclib庫中提供的I/O模塊驅動程序源代碼基礎上進行適當修改,實現不同設備板卡驅動程序的開發,仿真平臺嘗試采用了SBS公司SEM/PMSP-8型多串口板卡,其驅動程序基于Diamond Emerald-MM8 Serial F模塊源代碼開發,可達成同樣功能及仿真特性。

圖4 傳感器Simulink仿真框圖
xPC目標的API函數庫提供了大量VC接口函數,可以創建一個VC應用程序來實現目標應用程序的下載和運行,亦可實現如參數設置、信號監視及數據采集等功能。本系統中仿真控制臺軟件是通過Microsoft Visual C++6.0集成編譯環境開發的桌面應用程序,直接調用了xpcinitfree.c、xpcapi.h、xpcapiconst.h等庫文件,這樣便可以在不啟動Matlab運行環境的情況下實現對xPC目標應用程序的控制和管理。仿真控制臺軟件除了具備基本的xPC目標環境連接和xPC目標應用程序的下載、仿真啟動和停止等功能外,還包括仿真初始化條件設置、大氣干擾設置及傳感器特性配置等實用功能,同時可實現仿真數據的實時監測及數據的事后處理分析,仿真控制臺軟件界面如圖5所示。

圖5 仿真控制臺軟件界面
為測試半實物仿真系統的性能及效果,以某型無人機為例,在Simulink仿真框圖中輸入了其模型參數,通過RTW轉化目標應用程序后下載到仿真機上運行。鑒于無人機數字飛行控制系統計算周期為20 ms,這里設定仿真步長為10 ms。仿真開始后通過安裝有測控軟件的地面站控制無人機爬升、平飛、盤旋等實現指令飛行仿真,并控制無人機轉入預設航路程控飛行仿真,半實物仿真飛行效果如圖6展示。

圖6 無人機模擬飛行效果
事后通過半實物仿真測試數據與實際飛行數據的對比,兩者特性一致,說明所開發的仿真系統能夠驗證飛行控制系統的有效性,且能夠很好地實現無人機模擬飛行測試。
另外,在仿真過程中通過對控制臺軟件目標機連接、應用程序下載、仿真初始化參數設置、大氣干擾參數設置、仿真啟停控制及數據曲線顯示等功能進行了測試,均達成預期效果,使用便捷。
文中應用xPC目標環境下硬件在回路仿真與測試技術解決途徑,開發了一套用于無人機的半物理仿真系統。該仿真系統直接將無人機Simulink仿真模型框圖轉化成C語言程序代碼并執行,簡單高效、易于維護。該仿真系統已用于在某型無人機設計和飛行驗證中,實踐表明該仿真系統可以有效檢驗飛行控制系統的控制邏輯及飛行控制律設計的正確行與合理性,直觀反映出無人機飛行控制效果,為飛行控制系統優化設計和無人機系統的性能評估等提供了有效支持,具備較好的工程應用價值。