國一兵 蘇一博



摘? 要:隨著計算機仿真技術的不斷發展,FMI聯合仿真已經成為當今系統性工程開發的必經之路。針對FMI系統中串行仿真算法的仿真速度低的問題,本文提出了基于FMI聯合仿真的并行仿真算法,主要研究了該算法的流程設計和仿真過程,并對比分析了使用并行仿真算法和串行仿真算法仿真得到的結果,證明了并行仿真仿真算法極大地提高了FMI系統的仿真速度。
關鍵詞:FMI系統? 并行仿真? 串行仿真? 仿真速度
中圖分類號:TP391.9 ? ? ? ? ? 文獻標識碼:A? ? ? ? ? ? ? ? ? 文章編號:1674-098X(2021)01(b)-0108-03
Research on Parallel Simulation Algorithm in FMI System
GUO Yibing? SU Yibo
(Shenyang Ligong University, Shenyang, Liaoning Province, 110159 China)
Abstract: With the continuous development of computer simulation technology,FMI co-simulation has become the only way for systematic engineering development.Aiming at the low simulation rate of serial simulation algorithm in FMI system,In this paper, a parallel simulation algorithm based on FMI co-simulation is proposed. The flow design and simulation process of the algorithm are mainly studied, and the simulation results obtained by using parallel simulation algorithm and serial simulation algorithm are compared and analyzed, which proves that the parallel simulation algorithm greatly improves the simulation rate of FMI system.
Key Words: FMI system; Parallel simulation; Serial simulation; Simulation rate
當今FMI聯合仿真技術的高速發展,使得FMI系統的開發與應用成為計算機仿真領域中的新趨勢。但是,隨著仿真任務、模型系統的復雜度以及仿真需求逐漸提高,通過研究和優化聯合仿真算法來提高FMI系統的仿真效率變得越發重要[1-2]。
1? FMI系統概述
FMI系統是基于FMI聯合仿真[3]標準而設計的仿真系統。FMI定義了一種新的仿真模型打包標準,用來支持跨學科的聯合仿真、測試以及嵌入式軟件的開發[4]。FMI系統支持外部導入或自身生成的以FMI標注封裝接口的功能單元(FMU),將這些FMU以指定的關系連接起來組成仿真模型系統,并將這些仿真模型系統以指定仿真算法進行仿真得到仿真結果[5-6]。
2? 并行仿真算法的提出
在FMI系統中,傳統的串行仿真算法由于耦合程度較高,模型之間嚴格按照求解關系依次計算,并且每步計算都需要進行判斂操作而導致仿真速度降低。由此,為了提高FMI系統的仿真速度,本文在串行仿真算法的基礎上進行優化設計,采用并行調度的策略重新規劃仿真算法的執行流程,在FMI系統中實現并行仿真算法。
3? 并行仿真算法的研究
以三個分別具備單個輸入輸出端口的仿真模型FMUA、FMUB、FMUC 組成的串聯仿真系統為例“FMUA.y-FMUB.u-FMUB.y-FMUC.u-FMUC.y-FMUA.u-FMUA.y”
并行仿真算法改變了串行仿真算法的執行流程。以串行仿真算法中的三個FMU組成的耦合系統為例,他們的連接關系和參數配置保持不變,只是使用并行的方式來執行仿真。仿真初始化之后,得到的FMU求解順序和端口的依賴關系與串行仿真算法相同,仿真開始后,仿真數據交互和FMU計算流程如圖1所示。
圖1描述了三個FMU第K步到第K+1步的并行仿真過程,按照FMU的連接關系進行第K+1步的仿真,過程如下:
①耦合系統中每個FMU都將第K步計算得到的輸出值傳輸給有連接關系的FMU的輸入端口;
②各FMU得到輸入值后,進行第K+1步的計算,得到第K+1步的輸出值,完成第K+1步的仿真。
依次類推,各FMU將第K+1步的輸出值傳給所連接FMU的輸入端口,各FMU進行第K+2步的計算。按照此順序,直到仿真結束為止。
并行仿真算法與串行仿真算法不同的是,每個FMU只按照連接關系對相對應的端口進行賦值,賦值過程沒有先后順序,也沒有等待的機制,都是并行處理的。各FMU的輸入端口同時得到了所需數值,所有FMU計算一步,至此,整個耦合系統完成一步仿真。
該算法與串行仿真算法的另一個不同之處是,假設仿真執行第K+1步,串行算法僅FMUB使用FMUA的第K步的輸出值參與計算,其他模型都會使用接收到的第K+1步的值參與計算。在并行仿真算法計算第K+1步過程中,由于所有FMU是并行運行的,每個FMU都得不到來自第K+1步的值,故每個模型都是使用第K步的值進行數據交互。
4? 仿真與分析
對由FMUA、FMUB、FMUC三個單輸入輸出端口的串聯仿真模型系統為例,分別使用串行仿真算法和并行仿真算法進行仿真,取出FMUA.y輸出端口的仿真結果如圖2所示。
在圖2中,實心圓點用來標注使用串行仿真算法進行仿真得到的通信點上的仿真結果,星點用來標記使用并行仿真算法進行仿真得到的通信點上的仿真結果。對比上述兩條仿真結果曲線,可以看出:從第一步仿真開始,并行仿真算法的結果值始終比串行算法延遲一個步長,這也正是因為并行算法在運行第K步仿真時使用第K-1步計算得到的輸出結果作為輸入值而導致的。在實際仿真任務中,由于仿真步長短、仿真時間長,這種有限且數量極少的延遲步數均可以忽略不計,不會影響仿真的穩定性與準確性。
另外,讀取每個仿真通信點的詳細結果數據可以發現,使用并行仿真算法仿真得到的數據與使用串行仿真算法仿真得到的數據相比只有微小的差別,說明在誤差允許的條件下,使用并行仿真算法所計算的結果幾乎等同于使用串行仿真算法的仿真結果。
對比圖3中兩種仿真算法的執行流程可以發現,仿真任務為時長1s,通信步長0.1s,運行10步,使用串行仿真算法的仿真總共用時0.2784s,而使用并行仿真算法的仿真總共用時0.0464s。說明FMU的并行的計算,簡化了數據通信的繁瑣流程,很大程度上提高了仿真速度。
5? 結語
本文主要對FMI系統中串行仿真算法仿真速度低的問題進行分析,提出并行仿真算法。本文從仿真控制流程的角度進行分析,采用并行調度策略,對仿真流程進行了重新設計,實現了對FMU的并行計算,并成功地使用實例進行仿真驗證。仿真結果表明,使用并行仿真算法極大地提高了FMI系統的仿真效率,并且仿真結果正確可靠。
參考文獻
[1] 樊卿.基于FMI的飛行器聯合仿真技術研究[D].成都:電子科技大學,2018.
[2] 羅茂春.基于FMI的航空發動機控制系統多學科聯合仿真[D].南京:南京航空航天大學,2019.
[3] 王鴻亮,廉東本,徐久強.基于FMI的分布式聯合仿真技術研究[J].計算機仿真,2017(4):256-261.
[4] 陸冠華,郝明瑞,胡松,等.基于FMI的飛行器分系統多源異構模型一體化仿真[J].導航定位與授時, 2018(6):99-104.
[5] 蘇一博,臧晶,玉紹康.基于FMI的功能模擬單元創建與仿真分析[J].科技創新導報,2019,16(14):1-2.
[6] 董政.基于FMI的Simulink模型到Modelica模型的轉換技術研究[D].武漢:華中科技大學,2016.