蘇一博 臧晶 玉紹康
摘? ?要:隨著科學(xué)技術(shù)的不斷進(jìn)步,當(dāng)今工程系統(tǒng)涉及的學(xué)科領(lǐng)域不斷擴(kuò)大。針對各個(gè)學(xué)科的仿真平臺(tái)不能兼容的問題,本文研究了基于FMI的功能模擬單元。本文首先介紹FMI標(biāo)準(zhǔn),然后深入研究基于FMI的功能模擬單元FMU的組成、創(chuàng)建和仿真,并分析仿真數(shù)據(jù),以實(shí)例仿真的方式證明,基于FMI標(biāo)準(zhǔn)的FMU可以與多種仿真平臺(tái)兼容,具備良好的移植性,極大地提高了仿真的效率。
關(guān)鍵詞:FMI標(biāo)準(zhǔn)? 功能模擬單元? 兼容
中圖分類號:TP391.9? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?文獻(xiàn)標(biāo)識碼:A? ? ? ? ? ? ? ? ? ? ? ?文章編號:1674-098X(2019)05(b)-0001-02
當(dāng)今計(jì)算機(jī)仿真技術(shù)應(yīng)用廣泛,涵蓋領(lǐng)域眾多,在科學(xué)研究中發(fā)揮了不可替代的作用。為了實(shí)現(xiàn)多領(lǐng)域的聯(lián)合仿真,歐洲的MODELISAR項(xiàng)目開發(fā)了一種新的開放接口標(biāo)準(zhǔn)FMI,可以方便地使不同仿真環(huán)境的模型通過模型交換或者模型耦合實(shí)現(xiàn)仿真。建模軟件將模型以FMI標(biāo)準(zhǔn)導(dǎo)出功能模擬單元FMU,可以將FMU與其他模型集成在仿真軟件中進(jìn)行仿真。
1? FMI標(biāo)準(zhǔn)概述
功能模擬接口(FMI)是一種獨(dú)立于工具的標(biāo)準(zhǔn),它可以分為模型交換(Model Exchange)和協(xié)同仿真(Co-Simulation)兩種。其中模型交換的目的是建模平臺(tái)可以動(dòng)態(tài)生成模型的C代碼,并且該代碼可供其他模型使用,模型由微分、代數(shù)和離散方程所描述;協(xié)同仿真的FMI是為在聯(lián)合仿真環(huán)境中耦合兩個(gè)或多個(gè)仿真工具提供接口標(biāo)準(zhǔn),各子系統(tǒng)之間的仿真數(shù)據(jù)交換僅被局限于那些離散的通信點(diǎn)上,在兩個(gè)通信點(diǎn)間的都由各自所帶的求解器求解[1]。
2? FMU文件組成
FMU文件主要包含源代碼文件和模型描述文件。源代碼文件為DLL文件,主要是由C和C++語言編寫的源代碼文件。這些源代碼文件都是以FMI為標(biāo)準(zhǔn)將模型的運(yùn)動(dòng)狀態(tài)以及方程編寫成函數(shù)封裝起來的。模型描述文件為XML格式,仿真軟件讀取并解析模型的XML文件得到仿真模型的相關(guān)屬性信息。描述文件中包含模型版本、名稱、模型ID、識別碼Guid等仿真必須讀取的模型屬性信息和仿真參數(shù)的執(zhí)行信息。另外FMU中可能會(huì)有圖片、表格等其他非必須的文件[2]。
3? FMU的創(chuàng)建
創(chuàng)建FMU模型的方法有很多種,本節(jié)主要討論以下兩種常見的方法。
3.1 C代碼編譯生成FMU
該方法主要需要以FMI標(biāo)準(zhǔn)將模型的狀態(tài)和運(yùn)動(dòng)方程編寫成C代碼文件,還需要將模型的屬性信息和仿真參數(shù)寫在xml描述文件中。將這兩個(gè)主要文件和其他非必須的描述性文件放在同一目錄下在FMU_SDK中使用build命令即可生成FMU模型。
3.2 Modelica編譯生成FMU
Modelica是一種使用廣泛的、基于方程的模型語言,它可以方便地實(shí)現(xiàn)跨領(lǐng)域、跨學(xué)科物理系統(tǒng)的建模和仿真。以彈跳球?yàn)槔?,將小球自由落體運(yùn)動(dòng)的方程和狀態(tài)等用Modelica語言編寫成BouncingBall.mo模型。編寫完成的Modelica模型可以通過Dymola、MapleSim等建模仿真軟件的“FMU導(dǎo)出”功能導(dǎo)出BouncingBall.fmu模型文件。
4? 仿真與分析
本節(jié)以直流電機(jī)模型為例來研究FMU模型的仿真并分析。
在MapleSim仿真平臺(tái)上搭建直流電機(jī)模型,其中包含RLC電路和電機(jī)兩部分,將模型進(jìn)行仿真,選取電機(jī)處的信號Speed如圖1所示。
將直流電機(jī)模型中的RLC電路部分通過MapleSim封裝導(dǎo)出為RLC_motor.fmu文件。將RLC_motor.fmu導(dǎo)入MapleSim并加載模型,用其替代先前的RLC電路。將模型仿真,選取電機(jī)處的信號FMU_Speed,結(jié)果如圖2所示。對比圖2中的speed和圖1中的speed的數(shù)據(jù)波形,發(fā)現(xiàn)RLC普通電路和封裝成FMU模型后的仿真結(jié)果相同??梢缘贸鼋Y(jié)論:在某些復(fù)雜系統(tǒng)中,可以將具有一定功能,并且結(jié)構(gòu)相對獨(dú)立的部分封裝成FMU,用其替代先前復(fù)雜的普通模型進(jìn)行仿真,得到與原仿真相同的結(jié)果,F(xiàn)MU模型并不會(huì)影響結(jié)果的準(zhǔn)確性。
再將在MapleSim中創(chuàng)建的RLC_motor.fmu導(dǎo)入到其他仿真平臺(tái)中,例如OpenModelica仿真平臺(tái)。用其代替相同工程下的RLC電路部分,得到速度speed如圖3所示。
對比圖2和圖3,發(fā)現(xiàn)其仿真結(jié)果和在MapleSim平臺(tái)仿真結(jié)果相同??梢缘贸鼋Y(jié)論:基于FMI標(biāo)準(zhǔn)封裝的FMU模型可以導(dǎo)入到其他的仿真平臺(tái)使用,擁有很強(qiáng)的移植性,并且仿真結(jié)果與在原仿真平臺(tái)結(jié)果相同。還可以說明,在工程中可以將具備特定功能和固定結(jié)構(gòu)的系統(tǒng)封裝成一個(gè)或幾個(gè)FMU模型,這樣可以方便地將它們接入到需要此功能的系統(tǒng)中,不僅簡化了仿真系統(tǒng),還提高了仿真效率和模型的應(yīng)用價(jià)值。
5? 結(jié)語
本文簡要介紹了FMU模型的創(chuàng)建方法并通過直流電機(jī)實(shí)例的三次仿真數(shù)據(jù)的對比,驗(yàn)證了基于FMI標(biāo)準(zhǔn)的FMU模型可以方便地與多種仿真平臺(tái)兼容,仿真數(shù)據(jù)準(zhǔn)確,具有可移植性強(qiáng)等優(yōu)點(diǎn),極大地提高了涵蓋有多學(xué)科、多平臺(tái)的仿真效率,對解決多仿真工具和半實(shí)物仿真系統(tǒng)之間的兼容性問題以及聯(lián)合仿真平臺(tái)的開發(fā)具有重要意義。
參考文獻(xiàn)
[1] 田紅芳,單立志,李成功.通用模型接口標(biāo)準(zhǔn)FMI[A].信息技術(shù)、服務(wù)科學(xué)與工程管理國際學(xué)術(shù)會(huì)議[C].2011.
[2] 單立志.基于FMI的實(shí)時(shí)仿真應(yīng)用研究[D].北方工業(yè)大學(xué),2012.