陸冠華,郝明瑞,胡 松,水尊師
(復(fù)雜系統(tǒng)控制與智能協(xié)同技術(shù)重點實驗室,北京 100074)
在飛行器設(shè)計過程中,控制專業(yè)依賴于設(shè)計經(jīng)驗與大量的仿真試驗來優(yōu)化控制系統(tǒng)設(shè)計。系統(tǒng)仿真通常分為全物理仿真、半物理仿真和計算機數(shù)學(xué)仿真,具體取決于所使用的模型。而在飛行器研制和控制系統(tǒng)設(shè)計初期,使用實物仿真和半實物仿真的效費比極低。因此,飛行器的控制設(shè)計過程非常依賴于計算機模擬。各研究機構(gòu)對研究技術(shù)的投入逐年增加,希望獲得更加高效便捷的模擬方法。
飛行器是復(fù)雜交聯(lián)的大系統(tǒng),其飛行仿真系統(tǒng)建模涉及大氣專業(yè)、氣動專業(yè)、發(fā)動機專業(yè)、舵系統(tǒng)專業(yè)[1]、雷達專業(yè)、慣導(dǎo)專業(yè)[2]、計算機專業(yè)等分系統(tǒng)專業(yè)。目前,飛行器系統(tǒng)的仿真設(shè)計主要基于獨立建模和獨立驗證。這些模型的生成工具和構(gòu)造形式均不同,稱為多源異構(gòu)模型。在模型設(shè)計驗證過程期間,使用物理對象開始協(xié)同仿真到半物理仿真階段。在此之前的大部分時間,控制專業(yè)的設(shè)計工作無法考慮多專業(yè)因素,只能在同一軟件環(huán)境(一般為 C/ C++編譯軟件)下,基于各分系統(tǒng)專業(yè)提供的信息構(gòu)造簡化模型進行飛行仿真。其模型準確度低,動態(tài)特性與實物相去甚遠,加上仿真程序中飛行器和環(huán)境模型的內(nèi)部耦合性非常高,控制專業(yè)自仿真設(shè)計的最優(yōu)控制律不適合實際系統(tǒng),仿真結(jié)果與實驗數(shù)據(jù)有很大差異。不得不在使用時間資源緊張的半實物仿真中,消耗大量精力對控制律進行修改,增加了科研人員的工作負擔。因此,需要一種多學(xué)科的聯(lián)合仿真方法,結(jié)合理論建模技術(shù)和仿真分析技術(shù),以及各種專業(yè)設(shè)計方法,分階段實施多專業(yè)聯(lián)合設(shè)計仿真分析,從而有效地提高飛行器系統(tǒng)的控制設(shè)計效率,縮短產(chǎn)品的迭代周期。
多域系統(tǒng)建模和協(xié)同仿真是為了實現(xiàn)復(fù)雜系統(tǒng)的協(xié)同仿真而出現(xiàn)的建模和仿真技術(shù),目標是將來自不同學(xué)科的模型集成到一個系統(tǒng)中進行系統(tǒng)設(shè)計、模擬和分析。為實現(xiàn)這個需求,國際上制定了通用模型接口標準( Functional Mockup Interface,F(xiàn)MI),每個專業(yè)人員使用不同的建模工具設(shè)計的仿真模型具有統(tǒng)一的模型描述格式和數(shù)據(jù)存儲方法。這些多源異構(gòu)模型可以在相同的軟件模擬環(huán)境中進行通信和運行,從而提高了模型的多功能性;同一模型也可用于不同的軟件模擬環(huán)境,以提高模型的可重用性。
本文開發(fā)了基于FMI接口的C++語言建模與打包技術(shù),以及多源異構(gòu)模型的集成仿真平臺。在應(yīng)用層中,使用動態(tài)鏈接庫的方法,以模塊的形式直接調(diào)用,從而避免了與用戶自開發(fā)軟件的耦合。它解決了共享各種專業(yè)建模軟件模型的難題,提高了集成仿真平臺的可擴展性,驗證了多源異構(gòu)模型集成仿真系統(tǒng),具有較高的工程應(yīng)用價值[3,4]。
多源異構(gòu)模型一體化仿真的需求最早出現(xiàn)于汽車設(shè)計與制造領(lǐng)域。由于汽車建模涉及流體、電氣、動力等系統(tǒng)的多源建模,給分布式仿真帶來不便。結(jié)合其他工業(yè)領(lǐng)域提出的類似問題,歐洲發(fā)展信息技術(shù)計劃[5-7]提出了Modelisar項目。該項目制定了FMI,對模型描述、數(shù)據(jù)結(jié)構(gòu)和接口格式都進行了標準化,解決了不同的建模、仿真軟件難以同步聯(lián)合仿真的問題,且提升了通信方面的設(shè)計效率,進而提升了仿真速度。近年來該標準已廣泛應(yīng)用于飛行試驗、船舶、能源、電力電子、樓宇自動化、起落架設(shè)計等領(lǐng)域[8-16]。2014年該標準升級至 FMI2.0,具有仿真運行期間可變參數(shù)功能、增強的初始化行為以及實施環(huán)境集成和處理模擬器等,改善了可用性和兼容性。
與FMI對應(yīng)的模型稱為功能模擬單元(Functional Mock-up Unit,FMU),包含兩部分:模型描述文件(.XML文件)和模擬器動態(tài)鏈接庫文件(.DLL文件)。模型描述文件記錄模型的基本信息,包括名稱、輸入和輸出參數(shù)等。仿真平臺根據(jù)標準中規(guī)定的調(diào)用方法為FMU提供求解器。
仿真軟件調(diào)用FMU模型仿真模式,如圖2所示。當FMU輸入集成仿真軟件時,軟件首先解析模型的描述文件,讀取模型的屬性信息和模型的輸入輸出信息,并將每個FMU的輸入和輸出關(guān)聯(lián)起來。仿真進行時,仿真軟件對模型文件執(zhí)行調(diào)度,采用分組方式進行單線程順序或多線程仿真。
模型描述文件記錄FMU的基本信息和變量信息。
1.3.1 模型屬性信息
集成仿真平臺通過讀取描述文件掌握FMU的基本信息,內(nèi)容包含兩部分:必需信息和可選信息。必需信息是模擬平臺調(diào)用FMU所需的關(guān)鍵信息,不能省略??蛇x信息一般供仿真軟件使用者完成項目管理相關(guān)記錄工作。FMU模型屬性信息如圖3所示。
1.3.2 仿真執(zhí)行信息描述
該部分描述主要服務(wù)于仿真過程,供仿真平臺在開始初始化時對存儲空間的分配、模型運行的起止時間、同步異步運行以及規(guī)定步長、輸出導(dǎo)數(shù)階數(shù)等進行具體設(shè)定,為仿真過程順利執(zhí)行提供重要依據(jù)。模型描述信息如圖4所示。
FMI還規(guī)定了模擬控制器的運行方式和調(diào)用模塊??刂破鞔a包含諸多負責監(jiān)控仿真過程的功能函數(shù),通過調(diào)用這些函數(shù)獲得返回值,仿真平臺可以獲取仿真狀態(tài)、分析仿真出現(xiàn)的問題以及判斷是否需要介入停止。FMI中仿真函數(shù)分為三類:控制器功能、子系統(tǒng)執(zhí)行功能和子系統(tǒng)狀態(tài)功能。其構(gòu)成如圖5所示。
根據(jù)多領(lǐng)域協(xié)同仿真集成仿真平臺的要求,提出了仿真設(shè)計過程方案。基本上可以分為3個階段:模型建立、模型的FMU封裝、模型的調(diào)度關(guān)聯(lián)。
首先各分系統(tǒng)專業(yè)需對輸入輸出接口,包括接口數(shù)量、名稱等進行協(xié)調(diào)與約定,之后由各設(shè)計專業(yè)根據(jù)自身需求,使用各自慣用的建模軟件進行詳細化建模。
目前,一些廠商的建模工具支持模型直接導(dǎo)出成FMU,如AMESim、Mworks、SimulationX以及MatlabR2017以后版本等。對于VS2010環(huán)境下的C++模型,由于VS2010本身不支持將程序封裝成FMU,故只能根據(jù)FMI,編寫預(yù)留輸入輸出接口的C++程序,編譯生成動態(tài)鏈接庫;編寫程序生成相應(yīng)的XML描述文件,然后使用自研軟件將其打包成FMU。本文開發(fā)了相應(yīng)工具進行封裝,具有如下特點:
1)使用統(tǒng)一的格式結(jié)構(gòu)統(tǒng)一全局接口頭文件中的數(shù)據(jù)接口;
2)簡化FMI映射,在C++代碼中規(guī)定格式函數(shù),包含實例化、初始化、單步運行、重置和釋放函數(shù);
3)使用系統(tǒng)API生成動態(tài)鏈接庫,以提高通用性和兼容性;
4)具有模型合規(guī)性檢查功能。
GCAir仿真平臺軟件能夠進行圖形化系統(tǒng)架構(gòu)設(shè)計,數(shù)字化定義模型的接口,導(dǎo)出分系統(tǒng)模型模板,提供模型轉(zhuǎn)換工具鏈,加載來自于不同模型軟件的 FMU,并提供強大而友好的用戶操作接口和功能完備的數(shù)據(jù)顯示和分析測試工具,從而準確高效地解決多種模型的聯(lián)合仿真問題,為模型的可復(fù)用性提供支持。本文使用該平臺對各專業(yè)提供的FMU模型進行校驗和運行仿真。
仿真平臺加載全部所需的FMU后,可通過解析 XML文件獲取模型輸入輸出信息,采取根據(jù)變量名稱的自動關(guān)聯(lián)和手動關(guān)聯(lián)兩種輸入輸出關(guān)聯(lián)方式,并用顏色區(qū)分提示用戶已關(guān)聯(lián)和尚未關(guān)聯(lián)的變量。
仿真過程即仿真平臺調(diào)用FMU及其信息流的運算過程。FMU實例的模擬執(zhí)行時間內(nèi)的所有相關(guān)活動可以分為4個部分:實例化、初始化、單步計算和終止。
2.4.1 實例化階段
一個FMU可以被認為是一個仿真模塊的類。仿真平臺根據(jù)類具體化出實際運行的模塊,按照模型描述文件和接口關(guān)聯(lián)關(guān)系對接口進行配置,調(diào)用狀態(tài)監(jiān)測函數(shù)對實例化狀態(tài)進行檢查,無報錯后為其分配內(nèi)存。
2.4.2 初始化階段
實例化完成后,仿真平臺將通過查詢開始時間和結(jié)束時間信息來檢驗?zāi)P偷挠行?,并為該模塊的輸出分配內(nèi)存空間。建立平臺與各仿真模塊核心程序的地址通信,完成仿真準備[17]
2.4.3 仿真階段
仿真循環(huán)中,平臺循環(huán)調(diào)用各模塊進行單步運行。每個模塊使用前一個模擬周期中每個模塊的輸出。在仿真運行期間,仿真平臺調(diào)用監(jiān)控功能來監(jiān)控計算過程的正常狀態(tài)。
2.4.4 終止階段
仿真結(jié)束標志被觸發(fā)的原因可能是某子系統(tǒng)因程序設(shè)定判據(jù)觸發(fā)仿真結(jié)束,或被用戶手動終止,或是仿真控制器檢測到錯誤而終止仿真。此時仿真平臺調(diào)用析構(gòu)實例函數(shù),釋放被聯(lián)合仿真模型實例以及變量所占用的內(nèi)存空間。
本節(jié)以某型無人飛行器的聯(lián)合仿真為例,具體介紹了基于FMI的多源異構(gòu)模型一體化仿真平臺的建設(shè)及仿真設(shè)計流程。該項目驗證了一體化仿真平臺的可用性,凸顯了其對于構(gòu)建不同專業(yè)仿真模型交互的重要價值。
一般的無人飛行器仿真模型由導(dǎo)引頭、發(fā)動機、舵機、綜控機等設(shè)備模型,環(huán)境傳感器、慣導(dǎo)傳感器等傳感器模型以及環(huán)境模型、動力學(xué)解算、運動學(xué)解算、目標運動模型、彈目運動解算等外部環(huán)境模型構(gòu)成。其信息交互關(guān)系如圖7所示。
原先控制專業(yè)完全依據(jù)其他專業(yè)提供的簡化模型,再基于C++語言的平臺進行控制律設(shè)計。一體化仿真平臺的出現(xiàn),使得控制專業(yè)可以在初步設(shè)計的基礎(chǔ)上,依據(jù)各專業(yè)詳細建模后的一體化仿真,對比模型差異,及時便捷高效地修正控制系統(tǒng)設(shè)計。
使用C++語言建模的模塊,將在VS2010環(huán)境下創(chuàng)建工程編譯,生成DLL文件,編寫.c文件供仿真平臺調(diào)用、獲取輸入輸出關(guān)系和數(shù)據(jù)文件調(diào)用。最終使用自研程序?qū)⒊绦虼a封裝為FMU模塊。其他建模平臺可進行相應(yīng)的輸出配置,輸出合規(guī)的FMU模塊。
將FMU加載到仿真平臺中,并實例化模塊,關(guān)聯(lián)各模塊實例的輸入輸出,如圖8所示。
配置好全部模塊實例的接口關(guān)聯(lián)后,即可進行實時或超實時仿真。在仿真進行時和結(jié)束后,可以在平臺建立結(jié)果輸出顯示框,實時或最后查看各模塊輸入或輸出情況。如果需要查看非接口數(shù)據(jù),可在配置時將該數(shù)據(jù)輸出,并將接口懸空即可。
仿真的成功運行,驗證了多源FMU模塊的通用性和一體化仿真的兼容性和擴展性。
本文基于FMI,面向飛行器設(shè)計領(lǐng)域多學(xué)科同源異構(gòu)模型聯(lián)合仿真的問題,對模型封裝和仿真流程設(shè)計進行了研究。并結(jié)合一體化仿真軟件,在實際項目背景下進行了驗證,為控制專業(yè)的設(shè)計工作提供了新的平臺,為開展更高效的設(shè)計工作提供了新思路和可能性,解決了總體與各分系統(tǒng)研發(fā)單位之間模型級交流的困難與障礙。
多源異構(gòu)模型一體化仿真系統(tǒng)的實現(xiàn),是構(gòu)建復(fù)雜產(chǎn)品虛擬樣機的重要一步。以此為基礎(chǔ),可進一步開發(fā)和集成已有的計算機技術(shù)、制造技術(shù),將平臺向前期產(chǎn)品構(gòu)想規(guī)劃和后期產(chǎn)品性能多角度評估2個方向進行擴展,繼續(xù)在以下方面進行研究開發(fā):
1)研究可用于產(chǎn)品全生命周期、支持異地協(xié)同開發(fā)的,具有完備的信息描述、標準化規(guī)范化產(chǎn)品定義的虛擬樣機支撐平臺。
2)開發(fā)產(chǎn)品全方位測試、分析與評估功能。支持不同專業(yè)人員從各自特有角度對產(chǎn)品進行測試、分析和評估。