电子说
一、 概述
我们知道,Saber软件在一开始就提供了与Matlab/Simulink的联合仿真功能,工程师们可以在Simulink中验证设计中的软件部分,同时在Saber中验证设计的硬件部分,从而实现软硬件设计验证的完美统一。
联合仿真是通过SaberHDL仿真器和Simulink之间的接口实现的,它允许用户进行交互式设计仿真。Saber协同仿真接口提供以下功能:
1、SaberRD和Simulink仿真算法的耦合。
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工程中,controller_Saber算法由Saber实现,工程文件如下:
打开throttle_control_system_saber.ai_dsn工程如下:
controller_Saber 模型如下:
对throttle_control_system_Saber.ai_dsn电路进行0s~20s瞬态仿真,打开Contrl_out(即controller_Saber模型输出)输出结果如下:
第一步:设置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中设定足够小的相同仿真步长,以实现仿真的数据交互。
全部0条评论
快来发表一下你的评论吧 !