一、 概述
我們知道,Saber軟件在一開始就提供了與Matlab/Simulink的聯合仿真功能,工程師們可以在Simulink中驗證設計中的軟件部分,同時在Saber中驗證設計的硬件部分,從而實現軟硬件設計驗證的完美統一。
聯合仿真是通過SaberHDL仿真器和Simulink之間的接口實現的,它允許用戶進行交互式設計仿真。Saber協同仿真接口提供以下功能:
2、提供用戶界面,支持從Saber模型自動生成MAST模板和SaberRD符號。
Saber聯合仿真接口是通過仿真引擎之間的同步通信方法啟用的。在同步協同仿真方法中,每個仿真引擎在時間上獨立進行,并在預定的周期內交換數據,稱為協同仿真步長(dt)。
Saber與Simulink協同仿真的采用的同步方法具有以下優點:Simulink用戶接口在仿真期間是活動的和可訪問的,當Simulink端需要時能夠有效采樣。
本文通過隨附的示例介紹Saber與Matlab聯合仿真的操作過程。我們使用的SaberRD版本為2019.06,Matlab版本為2018b。
二、 示例簡介
示例文件為throttle_controller.rar壓縮包。解壓后內容如下:
其中:
1、Matlab_ini文件是該工程對應的Saber算法工程文件
2、Only_Saber是使用Saber算法實現的仿真工程,用于比對。
3、Saber_Matlab_ini是Saber和Saber聯合仿真初始工程,需要將Saber算法導入Saber仿真工程。
4、Saber_Matlab_ini_final是Saber和Saber聯合仿真最終工程,可以實現Saber和Matlab的聯合仿真。
5、Saber_use_model_form_Matlab_export是將Simulink模型轉換成Saber模型后的Saber工程,該工程仿真時不依賴于Simulink,獨立調用Saber仿真器。
三、 Only_Saber工程演示
在Only_Saber工程中,controller_Saber算法由Saber實現,工程文件如下:
打開throttle_control_system_saber.ai_dsn工程如下:
controller_Saber 模型如下:
對throttle_control_system_Saber.ai_dsn電路進行0s~20s瞬態仿真,打開Contrl_out(即controller_Saber模型輸出)輸出結果如下:
四、 Saber和Simulink聯合演示
第一步:設置Matlab工作路徑
打開Matlab2018b,點擊“設置路徑”,在彈窗中點擊“添加文件夾”,輸入“Saber_Matlab_ini”工程所在目錄,點擊“選擇文件夾”如下:
下圖中框起來的路徑即為工作路徑,點擊“保存”,如下圖所示:
第二步:在Saber中配置Matlab接口
打開SaberRD2018.09軟件,在model菜單中,打開Matlab配置對話框,如下圖:
在“Simulink Cosimulation Tool”對話框中選擇 “edit-Matlab-Setup”,如下圖所示:
如下圖,選擇Simulink 9.5版本,Matlab install Root選擇所在電腦安裝的安裝路徑,Matlab Work Directory選擇Matlab工作路徑。設置完成后點擊“OK”。
選擇Edit-Matlab-Start
此時在Matlab work路徑下會生成如下文件:
設置好后,關閉對話框。
第三步:打開Saber算法文件
打開“C:UsersGT_yqDesktopthrottle_controllerSaber_Matlab_ini”路徑下的“THROTTLE_CONTROLLER.mdl”文件,如下圖:
打開后如下圖所示:
第四步:添加Sabercosim模塊
打開“C:Program FilesMATLABR2018bwork(Matlab2018b軟件安裝路徑)”路徑下的SaberCosim模塊,并拖放到“C:UsersGT_yqDesktop throttle_controller Saber_Matlab_ini(工程所在目錄)”下。在仿真工程左側對話框中找到SaberCosim模塊,雙擊打開,并拖放到“throttle_controller”內,如下圖所示:
雙擊Sabercosim,設置“Number of input signals”為1、“Number of output signals”為3,點擊“OK”,如下圖所示:
第五步:添加scop
在“throttle_controller”內點擊“Library Browser(即圖標)”打開“Saber Library Browser”對話框,在搜索框搜索“scop”,并將其拖放到“throttle_controller”內,如下圖所示:
第六步:添加demux
在“throttle_controller”內點擊“Library Browser(即圖標)”打開“Saber Library Browser”對話框,找到“demux”,并將其拖放到“throttle_controller”內,如下圖所示:
雙擊demux,設置“Number of outputs”為3,點擊“OK”,如下圖所示:
第七步:保存
按照下圖所示電路連接,連接完成后保存。
如果算法工程不在Saber仿真工程路徑下,將如下四個文件拷貝到響應仿真工程路徑下。
Demo中可以解壓Saber_Matlab_ini壓縮包,將文件拷貝進去。
第八步:打開Saber_Matlab_ini下的工程
在Saber中打開“Saber_Matlab_ini”文件夾中的電路,如下圖所示:
此時工程中沒有算法,需要操作關聯Simulink算法。
在“Model”選項卡中點擊圖標,在彈出的對話框中點擊新建,再點擊圖標,選擇“THROTTLE_CONTROLLER.mdl”文件,點擊打開,如下圖所示:
可以看到如下界面,已經打開了“THROTTLE_CONTROLLER.mdl”文件,保存后點擊圖標放置器件,如下圖所示:
繪制最終電路如下,保存并進行仿真。
第九步:運行仿真
在Simulate選項卡中設置0s~2s瞬態仿真,仿真步長1us,如下圖所示:
運行仿真,仿真結果如下所示:
五、 其它說明
Saber與Simulink協同仿真也有一定的不足:
1、仿真器之間沒有錯誤控制。
2、對于連續或非周期的系統,仿真中需要在Saber與Simulink中設定足夠小的相同仿真步長,以實現仿真的數據交互。
-
仿真器
+關注
關注
14文章
1017瀏覽量
83721 -
MATLAB仿真
+關注
關注
4文章
176瀏覽量
19922 -
數據交互
+關注
關注
0文章
30瀏覽量
10483 -
simulink仿真
+關注
關注
0文章
75瀏覽量
8575
發布評論請先 登錄
相關推薦
評論