隨著科技的迅猛發展,在多個工業領域(航空、航天、汽車、船舶等等)面對復雜系統,用戶的設計和分析的手段逐漸豐富完善,其中仿真技術越來越受到重視,不同的客戶運行來自不同供應商的仿真軟件,例如有限元工具、機械和熱力工具、信號流工具等等,這些工具都有著許多專門針對特定問題或條件設計的代碼,這些代碼幾乎所有都是專有格式。
客戶一直希望有一種方法來共同模擬他們的異構工具,FMI標準的出現提供了一種很好的解決方案。FMI標準的全稱是Functional Mock-up Interface,它是一個不依賴于工具的標準,其通過XML文件和已編譯的C代碼的組合來同時支持動態模型的模型交換( Model Exchange)和聯合仿真(Co-Simulation)。
遵循FMI標準,Synopsys SaberRD解決了用戶的需求,它允許客戶導出他們的Saber模型,并使用基于標準的接口與其他工具進行聯合仿真。
1. 簡介
FMI協同仿真為協同仿真環境中的仿真工具的耦合提供了接口標準。子系統之間的數據交換僅限于離散序列點。在兩個通信點之間的時間內,子系統由各自的解算器獨立求解。主算法控制子系統之間的數據交換和所有仿真解算器(從機)的同步。
協同仿真的方法:FMU實現將FMI函數調用包裝到仿真工具提供的API調用。
圖1 在單臺計算機上與工具耦合的聯合仿真
2. 如何使用FMI2.0 Co-Simulation導出FMU
通過SaberRD的FMI 2.0 Co-Simulation接口可以將一個完整的Saber設計工程或部分Saber模塊導出成為一個FMU。步驟如下:
2.1 創建一個 SaberRD設計
2.2 添加輸入輸出端口
圖2 在原理圖上添加分層端口
從器件庫中的“原理圖連接器”類別中選擇適當的端口符號,并將其連接到需要導出到FMU的原理圖節點。
對于離散端口和模擬控制端口,將分層輸入連接器連接到輸入端口,將分層輸出連接器連接到輸出端口。
對于物理模擬端口,如電氣和液壓端口,將分層模擬連接器連接到它們。
注意:
將錯誤的分層連接器連接到節點會導致FMU導出失敗。將端口連接器添加到原理圖中的順序很重要,因為在modelDescription.xml中為導出的FMU定義FMU端口的順序需要相同。
2.3 添加原理圖參數(可選)
對于任何需要在主模擬器中作為設計參數的模型參數,以便在計算開始時更改它,應在原理圖上添加設計參數,選擇需要在模型屬性網格上作為參數導出的屬性,并將其值更改為所需的名稱,該名稱將在創建層次符號時用作層次參數。
圖3 在原理圖上添加設計參數
注意
只有標量數、整數和字符串類型的屬性才能導出為FMU參數。像MAST structure, array, VHDL-AMS record, and vectors 等數據結構不能導出到FMU。
2.4 基于原理圖創建頂層symbol
注意頂層symbol名稱必須與底層原理圖名稱一致。
圖4 為原理圖創建層次符號
2.5 編輯頂層symbol外形(可選)
如果分層設計具有任何設計參數或物理模擬端口,則需要手動更新生成的符號
圖5在符號上添加設計參數
在分層符號上更新物理端口方向,對于離散和模擬控制端口,在創建Saber設計原理圖時,輸入/輸出信息端口已經定義這些類型的端口不需要進一步處理。
但是,模擬能量守恒物理端口,如電氣或液壓端口有兩個組件, across變量和through變量在同一個端口,而且沒有方向信息,要將這種端口導出到FMU,必須提供其方向和類型信息。
提供方向和類型,打開Symbol Editor ,選擇這個physical port., 添加 behavior property
在 Property Name欄,輸入 causality
在Initial Value欄, 輸入方向和類型信息,用空格隔開
方向信息和信號類型參考下表:
表1 更新后的物理端口因果關系屬性
圖5 在物理端口符號上添加因果關系
2.6 檢查設計文件的正確性
2.7 將Saber設計文件導出為FMU
File > Export, 選擇 Function Mockup Interface (FMI)…
圖6 Saber FMU導出
窗口參數說明:
- Design Symbol: 選擇響應的symbol文件,該symbol文件必須是基于原理圖的層次文模型,而且原理圖要與symbol在同一個文件夾下,
- Platform: win64, win32, linux64, and linux32. 選擇操作系統平臺
- Additional Design Data Files: 添加除了models ( .sin, .vhdl), symbols ( .ai_sym),和 schematic ( .ai_sch),外其他文件,如 (*.ai_dat) for the TLU (Table Look-Up) 模型,仿真時會用到該文件。如果不需要相關文件,該欄可以空著。
- stopTime: FMI co-simulation仿真停止時間,默認為1.0 seconds.
- stepSize: the co-simulation仿真步長,. 默認為 is 1.0e-3 seconds.
- Timeout: 協同仿真響應最大時間
- Simulator Settings: SaberHDL simulator settings. 不填寫,為默認仿真設置。
如果需要更精準的仿真結果,可以設置,格式如下:dc; tr -tend 1 -tstep 1 us -tniter 10 -order
如果需要跳過DC仿真,可設置如下:tr -tend 1 -tstep 1 ms -trip zero
如果需要保存仿真結果:dc; tr -tend 1 -tstep 1u -wdir saber_results
*Communication Port: 主仿真器和從仿真器之間的 TCP/IP 端口號. 默認為0
3. 將SaberRD設計導出到FMU
使用SaberRD導出的FMU模型,可以用于任何FMU仿真,平臺包括win64, win32, linux64 和 linux32。
3.1 設計示例說明
A、該設計有兩個參數
第一個 Von:二極管導通壓降
第二個Load:負載電阻
B、該設計有3個模擬電壓輸入端口
C、該設計有4個輸出端口ia、ib、ic、vdc
3.2 示例操作步驟
A、 下載示例,解壓并將符號文件(rectifier_3p.ai_sym),原理圖文件(rectifier_3p.ai_sch)和三相電壓激勵文件(v_3p.csv)復制到本地目錄D:SaberworkFMIrectifier_3p。
B、調用SaberRD,點擊菜單從原理圖文件中打開設計:“File ->Open->Open design”,選擇原理圖文件rectifier_3p.ai_sch。
C、將設計導出到FMU,單擊菜單“File->Export->Function Mockup Interfaces (FMI)…”,選擇Design Symbol為rectifier_3p.ai_sym(下圖示例中為D:SaberworkFMIrectifier_3prectifier_3p.ai_sym),點擊“導出”按鈕,保存rectifier_3p_saberhdl .fmu。生成的FMU文件在本地目錄D:SaberworkFMIrectifier_3p。
4.FMU模型測試
A、設置環境變量SABER_FMU_SOLVER的值為SaberRD的安裝路徑,例如:C:SynopsysSaberRD64T-2022.03
B、下載本文提供了FMUChecker-2.0.4b1-win64,來進行模型測試。
C、打開FMUChecker-2.0.4b1-win64文件夾,將v_3p.csv和rectifier_3p_saberhdl.fmu文件復制進來
D、打開dos命令窗口,進入fmuCheck.win64.exe目錄路徑
E、在命令窗口運行如下命令。它運行瞬態仿真2秒,通信步長為1e-3。輸出信息保存在log.txt文件中,仿真結果保存在result.csv文件中。
fmuCheck.win64.exe -e log.txt -i v3_3p.csv -o results.csv -s 2 -h 1.0e-3 -n 0 receifier_3p_saberhdl.fmu
F、使用任何支持csv格式的波形查看器打開結果文件results.cs查看仿真結果,驗證導出的模型
注意
fmucheck運行時會在底層調用SaberRD仿真器,如果沒有simulator license會報錯誤。
-
連接器
+關注
關注
98文章
14488瀏覽量
136449 -
仿真器
+關注
關注
14文章
1017瀏覽量
83727 -
模擬器
+關注
關注
2文章
875瀏覽量
43211 -
協同仿真
+關注
關注
0文章
6瀏覽量
8118 -
HDL語言
+關注
關注
0文章
47瀏覽量
8913
發布評論請先 登錄
相關推薦
評論