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